Skip to content
Agentmart
Submit a tool

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

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

Connector by geml-spec · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)Remote (HTTP)★ 29
Write a review

Install

Works with Claude Code, VS Code, Codex, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/geml-spec-geml

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Remote endpoint

  • https://geml-mcp.supermarket.workers.dev/mcp Remote (HTTP)

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

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

Use cases: documentation, writing-editing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
5 read · 2 write · 2 delete
Secrets
None asked for
Install scripts
None found
Runs as
Node.js package

Tools by what they do 9

From the running server's own tool list (tools/list) on Oct 25, 2026.

Read 5 · Look things up without changing anything.

  • geml_check
  • geml_find
  • geml_get
  • geml_list
  • geml_to

Write 2 · Create, change, send or run things.

  • geml_add
  • geml_rename

Delete 2 · Delete, drop, revoke or wipe things.

  • geml_delete
  • geml_set

Network hosts it talks to 10

  • a.b · found in code
  • cdn.jsdelivr.net · found in code
  • docs.joern.io · found in code
  • geml-mcp.supermarket.workers.dev · found in remote endpoint, install command, code
  • geml-spec.github.io · found in code
  • github.com · found in code
  • glama.ai · found in code
  • marketplace.visualstudio.com · found in code
  • raw.githubusercontent.com · found in code
  • x.y · found in code

Files it touches

  • Your home directory (~)
  • C:\\Windows
  • Any path the agent passes to its tools

Tools (9)

As the server listed them on Oct 25, 2026. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • geml_addInsert new content

    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 written, and GEML content is converted to Markdown as `to: "md"` converts it, the result's `notes` saying so; content Markdown cannot hold, such as a view without its source, is refused. Like every write here it is validated first: a missing anchor, an id that clashes with an existing one, or conte…

  • geml_checkValidate a documentread-only

    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 lands, so a refused write already carries this information. This server is STATELESS: the document travels in `source` and a write comes back as `document` for you to save; it holds no other documents, so a cross-document reference such as `[[other.geml#id]]` cannot be resolved here and is reported as…

  • geml_deleteDelete blockscan change or delete data

    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_revert the removed id; to change a block rather than remove it, use geml_set. References left pointing at a removed block come back as diagnostics but do NOT block the deletion — read them, then repair the references or revert. A selector that names nothing is skipped, so repeating a call cha…

  • geml_findFind the blocks that hold some textread-only

    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 block holding the match, and a block matching on many lines is reported once. Substring, case-insensitive unless `case` is true. No match is an empty result, not an error. This server is STATELESS: the document travels in `source` and a write comes back as `document` for you to save; it holds no other d…

  • geml_getRead one blockread-only

    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 nothing, or a file that is not under the server root, is an error naming it. This server is STATELESS: the document travels in `source` and a write comes back as `document` for you to save; it holds no other documents, so a cross-document reference such as `[[other.geml#id]]` cannot be resolved here a…

  • geml_listList the blocks of a documentread-only

    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 `#id`; geml_get and geml_set take their `address` as `id`, while the other write tools need a real id, so give such a block one first. A file that is not under the server root is an error. This server is STATELESS: the document travels in `source` and a write comes back as `document` for you to save; i…

  • geml_renameRename a block id

    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 geml_set (`part: head`), not here. An `old` id that does not exist, or a `new` one already taken, is refused. Returns `{ok, file, diagnostics, revision}`, with `notes` when the write did something to say out loud (a block it dropped, an address it changed); a refusal is `ok: false` with a `hint`, and t…

  • geml_setReplace one blockcan change or delete data

    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 back — fix the body rather than resending it. Removing content is not refused: if the replacement drops blocks, the write goes through and the result names each one, so check it after shortening a section; geml_revert puts one back. `part` replaces the whole block (default), its head line, a section'…

  • geml_toConvert a whole documentread-only

    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 when geml_list plus geml_get is not enough. Nothing is written — pass the result to geml_add or geml_set to land it. `to: "html"` also works but returns a whole self-contained page, usually tens of kilobytes this server cannot save: prefer the CLI (`geml <file> --to html -o out.html`) unless you wa…

Signals

Stars
29
Forks
4
Open issues
0
Contributors
8
Weekly downloads
298
Last commit
Oct 21, 2026 (7 days ago)
Last release
Oct 16, 2026 (13 days ago)
Last package publish
Oct 16, 2026 (13 days ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.geml-spec/geml
Version
1.12.6
Auth
Auth not stated
Packages
npm @geml/geml
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

GEML — a plain-text document format built to be edited in place, one section… MCP server. Agent Mart. https://agentmart.dev/connectors/geml-spec-geml (last updated 2026-10-24)