jyuwaaw

MindNode MCP Server

Community jyuwaaw
Updated

MCP server for MindNode (macOS) — connect Claude & AI agents to the mind-mapping app with no API. Reads the MindNode Next SQLite/CRDT library directly; creates maps from Markdown.

MindNode MCP Server

npmlicensenodeplatform

Connect MindNode to Claude and any AI agent — anMCP server for the mind-mapping app that has no API, no AppleScript, and noexportable files.

MindNode Next (the 2024+ generation of MindNode) moved all documents into aprivate SQLite/CRDT library and ships zero automation surface: noAppleScript dictionary, no CLI, no cloud API, not even .mindnode files ondisk anymore. This project reverse-engineered the storage format so AI agentscan finally read and create mind maps:

  • Read any mind map as a Markdown outline — straight from MindNode'slocal library (SQLite → protobuf → Apple LZ4 → CRDT decode), read-only,without even launching the app.
  • See the exact rendered map — MindNode's own preview JPEGs, pixel-perfect.
  • Create new mind maps from Markdown outlines (silent in-app import).
  • Open any map by name via the mindnode:// URL scheme.

Works with Claude Code, Claude Desktop, and any MCP client.

Looking for the classic file-based MindNode? Older plist-based tools cover.mindnode documents; this server is for MindNode Next (2024+), theSQLite-library generation where those approaches no longer work. Verifiedon MindNode 2026.4.4.

Tools

tool what it does
list_mindmaps list all mind maps in the library (title, id, modified)
get_mindmap read a mind map as a Markdown outline (best-effort CRDT decode)
get_mindmap_image MindNode's own rendered JPEG preview — pixel-perfect ground truth
create_mindmap create a new mind map from a Markdown outline (imports via the app)
open_mindmap open a mind map in MindNode

Install

Requires macOS with MindNode 2024+ and Node.js ≥ 24.

Claude Code:

claude mcp add --scope user mindnode -- npx -y mindnode-mcp

Claude Desktop / any MCP client (claude_desktop_config.json):

{
  "mcpServers": {
    "mindnode": {
      "command": "npx",
      "args": ["-y", "mindnode-mcp"]
    }
  }
}

From source (Node ≥ 24 runs the TypeScript directly, no build step):

git clone https://github.com/jyuwaaw/mindnode-mcp.git
cd mindnode-mcp && npm install
claude mcp add --scope user mindnode -- node /path/to/mindnode-mcp/src/index.ts

Debug with the MCP inspector: npm run inspect.

How I use it

I keep a daily mind map (one per day, plus per-project maps) as my workingmemory — Raycast is set up to summon MindNode with a single keystroke, socapturing a thought costs nothing. This server closes the loop: at the end ofthe day an agent reads the map, turns it into a work log or blog draft, andcan seed tomorrow's map from open threads. Ask Claude things like:

  • "list my mind maps"
  • "read today's map and draft a standup update"
  • "turn this outline into a mind map: …"

How it works

MindNode Next stores everything in a GRDB/SQLite library inside its sandboxcontainer. Each document is a protobuf base snapshot plus a stream ofCRDT operation batches, both wrapped in a tiny envelope (field 12345 =version, field 678910 = payload — yes, really) and compressed with Apple'sLZ4 framing (bv41/bv4-/bv4$ blocks).

This repo carries a schema-less protobuf parser, a pure-TypeScript Apple-LZ4decoder, and a tree reconstructor that replays node-creation and text ops.The full reverse-engineering notes live in docs/FORMAT.md —if you want to build your own MindNode tooling, start there.tools/spelunk.py pretty-prints any library blob forfurther digging.

Writes deliberately do not touch the database (it's CloudKit-synced;corrupting it would be unforgivable). New documents go through MindNode's ownMarkdown importer via open -a MindNode, which is silent and lossless.

Caveats

  • get_mindmap reconstructs text from a CRDT op stream whose positionencoding isn't fully mapped: heavily edited strings can come back slightlyscrambled, and deleted nodes may linger as (untitled). Useget_mindmap_image when exactness matters. Documents created viacreate_mindmap read back losslessly.
  • create_mindmap launches MindNode (import happens in-app, silently).
  • The library is read read-only, always. Format verified on MindNode2026.4.4; a future MindNode update could shift field numbers — file anissue with tools/spelunk.py output if outlines come back empty.

Roadmap

  • Node-level edits (add/rename/delete a single node) and lossless export viaMindNode's 20 App Intents (CreateNode, EditNode, ExportDocument, …) wrappedin Shortcuts
  • Map the CRDT text-position encoding and deletions for exact reads
  • Folder titles, tags/stickers, notes fields

License

MIT

MCP Server · Populars

MCP Server · New