freeplane-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@freeplane-mcpWhat are your current capabilities and status?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Freeplane MCP
A local-first MCP server that gives AI coding assistants structured, revision-safe access to Freeplane mind maps. Qualified for Freeplane 1.13.3 on Apple Silicon macOS.
The server communicates over STDIO using MCP protocol revision 2025-11-25. It connects to a running Freeplane instance through a token-authenticated local bridge, with file-based fallback for offline reads. Writes are revision-guarded and readback-verified; map edits are undoable as single compound units. There is no telemetry or public listener, and the local bridge is the only runtime network connection.
Features
Read live map trees with pagination, scoped subtrees, node selection, and literal search
Apply atomic multi-operation edits with compound undo, rollback on failure, and idempotency keys
Organize maps with clones, summaries, styles, layouts, clouds, bookmarks, formulas, and reminders
Manage document lifecycle: create, open, save, save-as, close, revert with confirmation guards
Export maps to PNG, PDF, SVG, or HTML with structural verification and atomic file placement
Navigate presentations and toggle print preview through an allowlisted macOS Accessibility helper
Monitor live change journals with cursor-based polling
Fall back to direct XML file reads when Freeplane is not running
Write node text to closed
.mmfiles with backup retention and byte-level integrity checks
Related MCP server: computer-use
MCP tools
The v1.0 surface exposes exactly twelve tools:
Tool | Description |
| Bridge connectivity, active map, degradation state, and recovery status |
| Frozen capability manifest from local qualification reports |
| Open maps via bridge, or configured saved maps when offline |
| Paginated map snapshot with scope, depth, field projection, and selection |
| Bounded literal text search across node trees |
| Cursor-based live event journal with optional long-poll |
| Apply or clear a literal text filter on the active map view |
| Atomic compound edit with revision guard, readback, and confirmation |
| Single undo or redo step with snapshot evidence |
| Document create/open/save/save-as/close/revert lifecycle |
| Map-scope export to PNG, PDF, SVG, or HTML |
| Presentation navigation and print-preview open/close |
Architecture
MCP Client (Claude, Codex, etc.)
│ STDIO (JSON-RPC)
▼
freeplane-mcp server (Node.js 22)
│
├── Bridge client ──► Freeplane add-on (127.0.0.1, ephemeral port, token auth)
│ └── Freeplane 1.13.3 (host-native, dedicated user dir)
├── File fallback ──► .mm XML on disk (read-only or qualified text writeback)
└── AX helper ─────► macOS Accessibility (presentation/print-preview only)The bridge binds only to localhost on an OS-assigned port. Discovery and token files are owner-readable only. The Accessibility helper is process-bound, locally signed, and never presses the final Print button.
Prerequisites
macOS on Apple Silicon (the only qualified platform)
Freeplane 1.13.3 (exact qualified build)
Node.js 22.x with npm 10+
An APFS volume for Node dependencies and build caches. The source checkout itself may be on ExFAT;
npm run bootstrapprovisions the configured local cache.
Installation (native, recommended)
Native installation is the primary path. It gives full access to all twelve tools, including the GUI actions that require the macOS Accessibility helper.
git clone https://github.com/Hilbert-beinghappy/freeplane-mcp.git
cd freeplane-mcp
npm run bootstrap
npm run install:local
npm run install:local -- --applyThe first install:local previews the installation plan. The second call with --apply executes it. The installer creates a dedicated Freeplane user directory and never modifies profile-wide script permissions.
By default, three executables are installed under ~/Library/Application Support/Freeplane-MCP/install/bin/:
freeplane-mcp— the STDIO MCP server processfreeplane-mcp-freeplane— launches Freeplane with the bridge add-on activefreeplane-mcp-cli— management CLI (doctor,uninstall, etc.)
MCP client configuration
Point your MCP client at the installed server using an absolute path. For Claude Code .mcp.json or another JSON-based client:
{
"mcpServers": {
"freeplane": {
"command": "/Users/YOU/Library/Application Support/Freeplane-MCP/install/bin/freeplane-mcp",
"args": []
}
}
}For Codex config.toml:
[mcp_servers.freeplane]
command = "/Users/YOU/Library/Application Support/Freeplane-MCP/install/bin/freeplane-mcp"
args = []Replace /Users/YOU with your macOS home directory. If you customized FREEPLANE_MCP_HOME or --prefix, use that installation prefix instead.
Health verification
Start Freeplane through the dedicated launcher, then check the installation:
FREEPLANE_MCP_INSTALL="$HOME/Library/Application Support/Freeplane-MCP/install"
"$FREEPLANE_MCP_INSTALL/bin/freeplane-mcp-freeplane" &
"$FREEPLANE_MCP_INSTALL/bin/freeplane-mcp-cli" doctorThe doctor command verifies bridge connectivity, add-on version, Accessibility helper status, qualification report presence, and file-fallback configuration.
Uninstall
Uninstall follows the same plan-then-apply pattern:
FREEPLANE_MCP_INSTALL="$HOME/Library/Application Support/Freeplane-MCP/install"
"$FREEPLANE_MCP_INSTALL/bin/freeplane-mcp-cli" uninstall
"$FREEPLANE_MCP_INSTALL/bin/freeplane-mcp-cli" uninstall --applyInstallation (Docker, optional)
The Docker path runs only the Node.js MCP server process in a container. Freeplane, its Java add-on, and the macOS Accessibility helper remain on the host. No prebuilt image is published; you build locally from source.
This means presentation navigation and print-preview control are unavailable through Docker — those require the native installation.
git clone https://github.com/Hilbert-beinghappy/freeplane-mcp.git
cd freeplane-mcp
docker build -t freeplane-mcp:1.0.0 .Complete the native installation first (so Freeplane and the bridge add-on are set up), then run the container with STDIO:
FREEPLANE_MCP_HOME="$HOME/Library/Application Support/Freeplane-MCP"
mkdir -p "$FREEPLANE_MCP_HOME/exports"
docker run --rm -i \
--user "$(id -u):$(id -g)" \
--mount "type=bind,src=${FREEPLANE_MCP_HOME}/runtime,dst=/runtime" \
--mount "type=bind,src=${FREEPLANE_MCP_HOME}/exports,dst=${FREEPLANE_MCP_HOME}/exports" \
-e FREEPLANE_MCP_RUNTIME_DIR=/runtime \
-e FREEPLANE_MCP_BRIDGE_HOST=host.docker.internal \
-e "FREEPLANE_MCP_ALLOWED_ROOTS=[\"${FREEPLANE_MCP_HOME}/exports\"]" \
freeplane-mcp:1.0.0The host UID/GID preserves discovery-file ownership checks. The bridge host override routes to Docker Desktop's local gateway. The same-path exports mount lets both the container and host Freeplane verify exported artifacts.
Development and qualification
npm run bootstrap # Install locked dependencies
npm run build # Compile TypeScript
npm test # Build helper, compile, run all tests
npm run test:addon # Build and verify the Java bridge add-on
npm run qualify:v1.0 # Run the full v1.0 qualification gate
npm run doctor # Check local installation healthSet FREEPLANE_HOME or FREEPLANE_APP if automatic bundle discovery does not work for your setup.
Historical qualification gates remain reproducible:
npm run qualify:v0.0a
npm run qualify:v0.0b
npm run qualify:v0.1
npm run qualify:v0.2
npm run qualify:v0.3
npm run qualify:v0.4
npm run qualify:v0.5Safety boundaries
The following are intentionally unavailable and rejected by schema or capability policy:
Raw Freeplane action keys, menu paths, or arbitrary scripts
Shell commands, coordinate-based input, or URL dispatch
Public network listeners or external outbound connections
Telemetry, uploads, or automatic Git/GitHub actions
Destructive modal imports
Node or map encryption (no qualified secure-input channel)
Final print submission (preview only; the helper never presses Print)
Conditional styles with executable expressions
Reminder scripts
Destructive operations (node deletion, file overwrite, dirty close, revert) require a bound one-time confirmation tied to the plan, map, bridge instance, and revision.
Pending or indeterminate write outcomes block further writes until explicit readback reconciliation. See docs/recovery.md.
Documentation
Qualification evidence:
qualification/reports/Frozen capability table:
qualification/capabilities/capabilities.json
License
Freeplane MCP is released under the MIT License. Runtime dependencies (@modelcontextprotocol/server, @modelcontextprotocol/core, zod) are also MIT-licensed.
A Docker image built from this repository contains only the Node.js MCP server and its locked dependencies. Freeplane is GPL-2.0 software installed separately by the user. The Java bridge add-on and macOS Accessibility helper are not included in the container image. Native macOS artifacts are locally qualified but not notarized.
See THIRD_PARTY_NOTICES.md for the full distribution boundary.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityBmaintenanceA read-only MCP server that exposes data from native macOS apps (Mail, Notes, Calendar, Reminders, Contacts, Messages, Spotlight) to AI agents over stdio, currently in early development with no domain tools wired yet.Last updated133MIT
- Alicense-qualityCmaintenanceStandalone MCP server that gives AI agents full GUI control over macOS — screenshots, mouse, keyboard, apps, clipboard, and multi-display — with zero private dependencies.Last updated16MIT
- Alicense-qualityDmaintenanceMCP server that enables AI to fully control macOS — mouse, keyboard, terminal, screenshots, window management, UI element detection, and provides AI-optimized information reporting.Last updated23MIT
- AlicenseBqualityBmaintenanceLocal MCP server for macOS native apps: Mail, Calendar, Reminders, Notes, Messages, and Contacts. Enables reading and organizing your Mac life through a single stdio process using AppleScript/JXA.Last updated4021MIT
Related MCP Connectors
MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
Local-first RAG engine with MCP server for AI agent integration.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Hilbert-beinghappy/freeplane-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server