MCP server
GEML — a plain-text document format built to be edited in place, one section at a time
io.github.geml-spec/geml
Checked 26 Oct 2026, 08:29 UTC · Connected to it and listed its tools
One section in, one section out — on Markdown/GEML files, bad writes refused.
Working at last checkAbout 4,853 tokens per request once connected9 tools
https://geml-mcp.supermarket.workers.dev/mcp
At a glance
- Type
- MCP server
- Publisher
- Not verified
- Status
- Working at last check
- Tools
- 9
- Token cost
- About 4,853 tokens per request
- Sets up in
- Claude Code, Claude Desktop, Codex, Gemini CLI, Cursor, VS Code, Antigravity, ChatGPT, OpenAI API, Grok
- Last checked
- 26 Oct 2026, 08:29 UTC
Connect it to your agent
Opens the app, which shows the server and asks you to confirm. For other apps, copy the setup below.
Claude Code
claude mcp add --transport http geml https://geml-mcp.supermarket.workers.dev/mcp
Claude Desktop
Settings → Connectors → Add custom connector, and paste the URL.
Codex (config.toml)
[mcp_servers.geml] url = "https://geml-mcp.supermarket.workers.dev/mcp"
Gemini CLI
{"mcpServers":{"geml":{"httpUrl":"https://geml-mcp.supermarket.workers.dev/mcp"}}}
Cursor
{"mcpServers":{"geml":{"url":"https://geml-mcp.supermarket.workers.dev/mcp"}}}
VS Code
{"servers":{"geml":{"type":"http","url":"https://geml-mcp.supermarket.workers.dev/mcp"}}}
Antigravity
agy mcp add geml https://geml-mcp.supermarket.workers.dev/mcp
ChatGPT
Settings → Apps & Connectors → Advanced settings: turn on Developer mode, then Create a connector and paste the URL. Which plans can do this varies.
OpenAI API (Responses tools)
{"type":"mcp","server_label":"geml","server_url":"https://geml-mcp.supermarket.workers.dev/mcp","require_approval":"always"}
Grok (xAI API tools)
{"type":"mcp","server_label":"geml","server_url":"https://geml-mcp.supermarket.workers.dev/mcp"}
Tools
geml_add~566 tokens
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` file Markdown lands asgeml_check~318 tokens
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 same check before it lageml_deleteDeletes data · ~485 tokens
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 was. To undo a deletiongeml_find~487 tokens
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 is the innermost blocgeml_get~815 tokens
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 `id` that matches nogeml_list~417 tokens
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 marked `anon` have no `#igeml_rename~426 tokens
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 the heading with gemgeml_set~785 tokens
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 the diagnostics come bgeml_to~554 tokens
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 full document model, for
Browse
Related MCP servers
- Quicksign
E-signatures for contracts and NDAs. Draft with AI, review, and send for signature. - EasyPDF
Edit PDF text in place, fonts and layout kept. Compress, merge, split, convert and translate PDFs. - Supovia Customer Support
Reply to and resolve customer chats, search your help docs and see which conversations need you. - Box
Box (enterprise cloud storage) MCP Pack - Professor Sausages — Web & Documents
Read pages & files to text, news, weather, market holidays and timezones via x402. - Fluentedi Tools
49 free agent tools: WHOIS, PDF to text, email checks, FX rates, X12 EDI, JSON repair. No API key. - Dock
AI workspace for you, your team, and every agent. Tables, docs (images, 4K video), formulas. - iDos Games
Configure cross-platform and web3 games on iDos Games: live config, tokens, NFTs, AI assets, builds.
Badge for your README
[](https://aptlynx.net/servers/io.github.geml-spec/geml)
Listing text is written by the maker; AptLynx lists tools and does not vouch for them. Find another tool · Browse by topic · For agents