Skip to main content
Glama
metacoma

freeplane-mcp

by metacoma

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: xmind-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-mcp

Streamable HTTP

.venv/bin/freeplane-mcp --transport http --port 8000

Configuration

Environment variable

CLI option

Default

FREEPLANE_GRPC_HOST

--grpc-host

127.0.0.1

FREEPLANE_GRPC_PORT

--grpc-port

50051

FREEPLANE_GRPC_TIMEOUT

10

FREEPLANE_MCP_TRANSPORT

--transport

stdio

FREEPLANE_MCP_HOST

--host

127.0.0.1

FREEPLANE_MCP_PORT

--port

8000

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; default

  • node — insert below insert_node_id

  • selected — 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

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

Related MCP Connectors

  • Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.

  • Shared long-term memory vault for AI agents with 20 MCP tools.

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

View all MCP Connectors

Latest Blog Posts

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/metacoma/mcp-freeplane'

If you have feedback or need assistance with the MCP directory API, please join our Discord server