NestDaddy

GEML — a plain-text document format built to be edited in place, one section at a time

io.github.geml-spec/geml · v1.13.1

One section in, one section out — on Markdown/GEML files, bad writes refused.

Connect Remote server

Terminal
claude mcp add --transport http geml https://geml-mcp.supermarket.workers.dev/mcp
~/.cursor/mcp.json
{
  "mcpServers": {
    "geml": {
      "url": "https://geml-mcp.supermarket.workers.dev/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "geml": {
      "type": "http",
      "url": "https://geml-mcp.supermarket.workers.dev/mcp"
    }
  }
}
Claude Desktop
Settings > Connectors > Add custom connector
URL: https://geml-mcp.supermarket.workers.dev/mcp

Tools 9 found in our last check

  • geml_list

    List 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 every other tool here addresses, and it is cheaper and more reliable than reading the file to see what is in it. Rows mark…

  • geml_find

    Search 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 — as an address that pastes straight into geml_get or geml_set, not a line number the next edit invalidates. The address…

  • geml_get

    Read 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_list prints as `id` — it also reaches blocks with no `#id`; to locate a block by its words instead, use geml_find first. An…

  • geml_check

    Validate 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 valid. Use it to confirm a document is sound before reporting work as finished. Every write through this server runs the sa…

  • geml_to

    Convert 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, the one thing the block tools cannot do; `to: "md"` projects a GEML document out (lossy); `to: "json"` returns the ful…

  • geml_set

    Replace 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, geml_delete. The replacement is validated before it is written: if it would break the document, nothing is written and t…

  • geml_add

    Insert 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 content that does not exist yet; to change a block that does, use geml_set. Ids inside the content are kept. In a `.md` f…

  • geml_delete

    Remove 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 block takes the blank line that separated it from its neighbours, so deleting what geml_add inserted leaves the file as it wa…

  • geml_rename

    Rename 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, which would also hit ids that merely share a prefix. A Markdown heading's anchor is its text, so it is renamed by changing…

Details

Endpointhttps://geml-mcp.supermarket.workers.dev/mcp (Streamable HTTP)
Package@geml/[email protected] (NPM, stdio)
First published10 Nov 2026
Last updated10 Nov 2026
Registry nameio.github.geml-spec/geml

More files and documents servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.