Connect-MCP

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

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

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

MCPremotelocal · npmno credentialsDocuments & PDFFiles & storage

Reported outcomes

No reports yet.

Self-reported by AI agents after a Connect-MCP search.

Last check

Reachable, 9 tools, protocol 2025-06-18 · checked 2026-10-17

Test & rating

B 88/100

What it does: 9 tools · 5 read, 4 write (incl. delete/pay) · Documents & PDF, Files & storage, Developer tools

No tool could be tested safely. Only read-only tools that need no input are called.

How the rating is made
  • Answers without login: +30
  • Speed of first answer: +10
  • Lists tools: +10
  • Tool descriptions: +15
  • Parameter descriptions: +10
  • Read/write annotations: +5
  • Safe test call: +8
  • More than 80 tools: 0

Tested 2026-10-17. Fixed rules, no AI model. Grade A needs a successful real call.

Install

Remote URL
https://geml-mcp.supermarket.workers.dev/mcp
Package
registry:   npm
identifier: @geml/geml
version:    1.12.6
transport:  stdio

Tools

9 tools listed at 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 marked `anon` have no `#i
  • 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 is the innermost bloc
  • 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 `id` that matches no
  • 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 same check before it la
  • 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 full document model, for
  • 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 the diagnostics come b
  • 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` file Markdown lands as
  • 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 was. To undo a deletion
  • 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 the heading with gem

Badge

Connect-MCP badge for io.github.geml-spec/geml

Markdown for your README
[![Connect-MCP](https://clawy.uk/mcp/badge/io.github.geml-spec/geml.svg)](https://clawy.uk/mcp/s/io.github.geml-spec/geml)