freeplane-mcp
Click on "Deploy 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-mcp Export the current mind map to JSON"
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
An MCP server that allows AI agents such as Claude Desktop, Cursor, and opencode to read and modify a running Freeplane mind map through the freeplane_plugin_grpc gRPC plugin.
Unlike one-shot “Markdown → image” MCP servers, changes are applied live to the currently opened Freeplane map.
Architecture
MCP client (Claude / Cursor / opencode)
│
│ stdio or Streamable HTTP (MCP SDK)
▼
freeplane-mcp (Python, FastMCP)
│
│ gRPC (grpcio)
▼
Freeplane + org.freeplane.plugin.grpc
(port 50051)Related MCP server: mindmapio-mcp
Requirements
Python 3.10+
Freeplane running with the gRPC plugin installed
Default Freeplane gRPC port:
50051
Installation
cd ~/spaces/freeplane-mcp
python -m venv .venv
.venv/bin/pip install -e .Running
stdio
Default transport for Claude Desktop, Cursor, opencode, etc.:
.venv/bin/freeplane-mcpStreamable HTTP
.venv/bin/freeplane-mcp --transport http --port 8000Configuration
Environment variable | CLI option | Default |
|
|
|
|
|
|
| — |
|
|
|
|
|
|
|
|
|
|
MCP Tools
export_map
Exports the current map to canonical JSON.
Supported fields include:
text, id, children, note, detail, link, tags, icons, attributes, background_color, folded, and relationships.
import_map
Imports a mind map from canonical JSON.
Supported insert_mode values:
root— insert below the map root; defaultnode— insert belowinsert_node_idselected— insert below the currently selected node
Testing
Export the current map:
.venv/bin/python -c "
import sys; sys.path.insert(0, '.')
from freeplane_mcp.freeplane_grpc import FreeplaneGrpcClient
c = FreeplaneGrpcClient()
print(c.export_map())
"Import a map and export it again:
.venv/bin/python -c "
import sys; sys.path.insert(0, '.')
from freeplane_mcp.freeplane_grpc import FreeplaneGrpcClient
c = FreeplaneGrpcClient()
c.import_map('{\"text\": \"Hello from MCP\", \"children\": [{\"text\": \"child 1\"}]}')
print(c.export_map())
"MCP Client Configuration
Example stdio configuration:
{
"mcpServers": {
"freeplane": {
"command": "/home/bebebeka/spaces/freeplane-mcp/.venv/bin/freeplane-mcp"
}
}
}HTTP configuration:
{
"mcpServers": {
"freeplane": {
"url": "http://127.0.0.1:8000/mcp"
}
}
}JSON Format Notes
The canonical JSON format is defined by the plugin's JsonHelper.java.
Import supports _fp_import_root_node:
{"_fp_import_root_node": "root", "mindmap": {...}}inserts below the map root.
{"_fp_import_root_node": "ID_...", "mindmap": {...}}inserts below a specific node.
Without the wrapper, the map is inserted below the currently selected node.
The legacy format is also supported:
{"node text": {"child node": "note"}}License
MIT
Available Tools
2 toolsexport_mapA
Export the current Freeplane mind map to canonical JSON.
Returns the whole map as a JSON string. Each node has at least "text" and "id"; optional fields include "children", "note", "detail", "link", "tags", "icons", "attributes", "background_color", "folded" and "relationships".
Inputs: no named parameters. Returns: result
import_mapA
Import a mind map (canonical JSON) into the running Freeplane instance.
Inputs: map_json (required), insert_mode, insert_node_id. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 2 tools
export_map and import_map have clearly opposite purposes and there is no overlap. An agent can unambiguously determine which to call based on the direction of data transfer.
Both tool names follow the same verb_noun pattern: export_map and import_map. The naming is simple, predictable, and perfectly matches the server's purpose.
Two tools is a very minimal set, but each covers one half of the map exchange workflow. It feels slightly thin for a general MCP server, though the scope is focused.
The two tools provide a complete round-trip: export the map as JSON and import it back. For this server's apparent purpose of whole-map synchronization, there are no obvious gaps.
Maintenance
Related MCP Connectors
Read and write your Matryoshka Mind Map (nested mind map / TODO app) from AI agents.
Mind maps with a full document in every node. Read, search and edit your maps from AI tools.
Persistent memory, knowledge graph, task management and more for AI agents via MCP.
Turn outlines and hierarchical notes into interactive mind maps through a hosted remote MCP server.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to read and write XMind mind map files, allowing generation, editing, and analysis of mind maps directly in XMind.MIT
- AlicenseAqualityBmaintenanceEnables AI agents to build and interact with mind maps on mindmap.io. Agents can create, read, update, and delete maps and nodes, run prompts on nodes, and auto-expand topics into follow-up questions.13MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server that combines a browser mind map UI with a Streamable HTTP MCP endpoint, letting AI agents create, edit, and manage mind maps in real time through tools like mindmap_apply_op.11 npmMIT
- AlicenseAqualityDmaintenanceMCP server for MindNode that lets AI agents read mind maps as Markdown outlines and view rendered previews. It also supports creating new mind maps from outlines and opening maps in the app.515 npm1MIT