io.github.geml-spec/geml
up checked
Unclaimed · Unverified
Agent searches it appeared in, last 30 days: 0. Run this server? Claim the listing: verified label, uptime alerts and analytics.
Publisher-provided title
GEML — a plain-text document format built to be edited in place, one section at a time
Publisher-provided description
One section in, one section out — on Markdown/GEML files, bad writes refused.
Summary by lookupd
Lets an agent list, read, search, validate, edit and convert sections of GEML or Markdown documents, refusing invalid writes.
Install
Claude Code, remote (streamable-http)
claude mcp add --transport http geml https://geml-mcp.supermarket.workers.dev/mcp
Claude Code, npm package (stdio)
claude mcp add geml -- npx -y @geml/geml
Codex, remote (streamable-http)
codex mcp add geml --url https://geml-mcp.supermarket.workers.dev/mcp
Codex, npm package (stdio)
codex mcp add geml -- npx -y @geml/geml
Cursor, remote (streamable-http) → .cursor/mcp.json
{
"mcpServers": {
"geml": {
"url": "https://geml-mcp.supermarket.workers.dev/mcp"
}
}
}Cursor, npm package (stdio) → .cursor/mcp.json
{
"mcpServers": {
"geml": {
"command": "npx",
"args": [
"-y",
"@geml/geml"
]
}
}
}Other clients: docs. Or tell your agent: Set up lookupd for me: read https://lookupd.com/agent.md and follow it.
Tools (9 tools)
Publisher-provided text
geml_listList every addressable block in a GEML document — its address, kind and heading text — in one call, with no paging. Call this FIRST: what it returns is what evegeml_findSearch block CONTENT in the document; each hit is one `<name>\t<address>` row. geml_list says what a document contains, this says which block holds the words —geml_getRead ONE block from a GEML document instead of the whole file: only that block comes back, typically a few percent of the document. Pass the `address` geml_listgeml_checkValidate a GEML document without changing it: returns every diagnostic with a stable `code`, a severity and a line, and an empty list means the document is valigeml_toConvert a WHOLE document and get the result back as text — the read half of the CLI's `geml <file> --to <fmt>`. `to: "geml"` on a Markdown file is the importer,geml_setReplace ONE block and leave every other byte untouched — prefer this to rewriting a file. For content that does not exist yet use geml_add; to remove a block, ggeml_addInsert new content — one or more blocks, or prose — at the end of the document (`position: append`) or before/after the block named by `anchor`. Use this for cogeml_deleteRemove one or more blocks, each named by an id or any address geml_list prints; a filter (`=== type`, `{key=value}`) removes every block it matches. Each blockgeml_renameRename a block id AND every reference to it in the same document, in one id-boundary-safe write. Use this rather than geml_set or a text search-and-replace, whi
Details
- Version: 1.13.1
- Transports: streamable-http, stdio
- Uptime (7 days): 100%
- Median latency: 281 ms
- First indexed:
- Last seen in registry:
- Repository: https://github.com/geml-spec/geml
- Website: https://geml-spec.github.io/
Badge for your README
Shows this live status and links here; updates hourly.
[](https://lookupd.com/servers/io.github.geml-spec/geml)
- 62071 servers
- Last crawl: 2026-11-11T16:39:06.253Z
- API base:
https://api.lookupd.com - MCP URL:
https://api.lookupd.com/mcp