MindMeister MCP Server
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., "@MindMeister MCP ServerShow me my MindMeister maps"
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.
MindMeister MCP Server
An MCP (Model Context Protocol) server that connects Claude to the MindMeister API v2, enabling AI-powered mind map management directly from Claude Desktop or Claude Code.
What is MCP?
MCP is an open standard that lets AI assistants like Claude interact with external tools and services. This server exposes MindMeister operations as MCP tools that Claude can call during conversations.
Available Tools
Tool | Description |
| Get the authenticated user's profile |
| Get metadata for a specific map (JSON) |
| List maps with pagination |
| Export a map as PDF, DOCX, PPTX, RTF, or image |
| Get the image/thumbnail of a map |
| List sharing permissions for a map |
| Get user preferences |
Prerequisites
Python 3.10+
A MindMeister account with API access
A Personal Access Token from MindMeister
Getting Your API Token
Log in to MindMeister
Go to Account → API → Personal Access Tokens
Create a new token with the scopes you need:
mindmeister.readonly— for read-only accessmindmeister— for full access
Copy the token
Installation
Option 1: Install from source
git clone https://github.com/conexaoarteiro/mindmeister-mcp.git
cd mindmeister-mcp
pip install -e .Option 2: Install directly from GitHub
pip install git+https://github.com/conexaoarteiro/mindmeister-mcp.gitOption 3: Manual setup
git clone https://github.com/conexaoarteiro/mindmeister-mcp.git
cd mindmeister-mcp
pip install -r requirements.txtConfiguration
Set your MindMeister API token as an environment variable:
export MINDMEISTER_API_TOKEN="your_personal_access_token_here"Or create a .env file based on .env.example:
cp .env.example .env
# Edit .env and add your tokenUsage with Claude Desktop
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"mindmeister": {
"command": "python",
"args": ["-m", "mindmeister_mcp.server"],
"env": {
"MINDMEISTER_API_TOKEN": "your_personal_access_token_here"
}
}
}
}If you installed with pip install -e ., you can also use:
{
"mcpServers": {
"mindmeister": {
"command": "mindmeister-mcp",
"env": {
"MINDMEISTER_API_TOKEN": "your_personal_access_token_here"
}
}
}
}Config file location
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Usage with Claude Code
claude mcp add mindmeister -- python -m mindmeister_mcp.serverThen set the environment variable before running Claude Code:
export MINDMEISTER_API_TOKEN="your_token"
claudeExample Conversations
Once configured, you can ask Claude things like:
"Show me my MindMeister maps"
"Get the details of map 1234567890"
"Export map 1234567890 as PDF"
"Who has access to map 1234567890?"
"What are my MindMeister account details?"
Development
# Clone and install in dev mode
git clone https://github.com/conexaoarteiro/mindmeister-mcp.git
cd mindmeister-mcp
pip install -e ".[dev]"
# Run the server directly
python -m mindmeister_mcp.serverProject Structure
mindmeister-mcp/
├── README.md
├── pyproject.toml
├── requirements.txt
├── .env.example
├── .gitignore
└── src/
└── mindmeister_mcp/
├── __init__.py
├── server.py # FastMCP server with all tools
├── client.py # Async HTTP client for MindMeister API v2
└── models.py # Pydantic input validation modelsAPI Coverage
This server targets MindMeister API v2 (https://www.mindmeister.com/api/v2/). The following endpoints are covered:
GET /users/me— user profileGET /maps/{id}— map metadataGET /maps— list mapsGET /maps/{id}(with Accept header) — export as PDF/DOCX/PPTX/RTF/imageGET /map_images/{id}— map imageGET /maps/{id}/rights— map permissionsGET /users/me/preferences— user preferences
License
MIT
Available Tools
7 toolsmindmeister_export_mapARead-only
Export a MindMeister map to a specific file format.
Supported formats: pdf, docx, pptx, rtf, image, presentation. The export is fetched via GET /maps/{id} with an appropriate Accept header. Returns the binary content as a base64 string so it can be saved locally.
Args: params: ExportMapInput with map_id (str) and format (ExportFormat).
Returns: str: JSON with keys "format", "filename", "content_base64", and "size_bytes". The base64 payload can be decoded and saved as a file.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description details that the export is fetched via GET with an appropriate Accept header and returns binary content as a base64 string. This goes beyond annotations (readOnlyHint: true) to explain the actual request behavior and response format, with no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with two paragraphs: an overview and a detailed docstring-style section. It is succinct yet covers the essential aspects without unnecessary words, though it could be slightly more concise by removing the redundant listing of formats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown), but the description still provides the complete return structure with keys (format, filename, content_base64, size_bytes). It sufficiently explains the base64 encoding and implies the file save process. No gaps are evident for this straightforward export operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema's top-level parameter 'params' lacks a description, but the description compensates by specifying the nested fields (map_id, format) and the list of formats. It adds clarity to the structure, though it largely repeats information from the schema's $defs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a MindMeister map to a specific file format and lists supported formats (pdf, docx, pptx, rtf, image, presentation). It distinguishes from sibling tools like mindmeister_get_map (returns JSON) and mindmeister_get_map_image (returns image), making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description lists the supported formats and implies use for file exports, it lacks explicit guidance on when to use this tool versus alternatives. No direct mention of when not to use it or comparisons with sibling tools like mindmeister_get_map or mindmeister_get_map_image is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mindmeister_get_mapARead-onlyIdempotent
Get metadata for a specific MindMeister map.
Retrieves the full JSON representation of a map including its title, nodes, connections, and settings via GET /maps/{id}.
Args: params: GetMapInput with map_id (str).
Returns: str: JSON with the map's complete metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description confirms it's a read operation (GET) and returns metadata, but adds no additional behavioral context such as error handling or permission requirements. Since annotations cover the safety profile, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: two sentences plus an Args/Returns block. It front-loads the purpose and uses minimal but sufficient words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values need not be explained in detail. The description mentions the HTTP method, endpoint, and that it returns a JSON string. Sibling tools are listed, and annotations provide safety info. It lacks mention of error handling for invalid map_ids, but is otherwise complete for a simple retrieval operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage at the top level (the 'params' property lacks description), but the nested map_id has a description. The description explains the parameter by saying 'params: GetMapInput with map_id (str).' This adds some clarity beyond the bare schema, but does not fully compensate for the lack of top-level description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get metadata for a specific MindMeister map' and details that it retrieves full JSON representation including title, nodes, connections, and settings. This distinctly separates it from siblings like get_map_image or list_maps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a single map by ID via GET /maps/{id}, but lacks explicit guidance on when to use this over alternatives or prerequisites. It is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mindmeister_get_map_imageARead-onlyIdempotent
Get the image/thumbnail for a MindMeister map.
Retrieves the map image via GET /map_images/{id}. Returns the image as base64-encoded data along with metadata.
Args: params: GetMapImageInput with map_id (str).
Returns: str: JSON with "map_id", "content_type", "content_base64", and "size_bytes".
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds value by specifying the HTTP method (GET) and the return format (base64-encoded data with metadata), which goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it opens with the core purpose, then provides implementation details and return format. Every sentence is meaningful, with no redundant or extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, clear annotations, and an output schema), the description covers all necessary aspects: purpose, behavior, parameter, and return value. No critical information is missing for proper invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description restates the parameter 'params: GetMapImageInput with map_id (str)', but the input schema already documents 'map_id' with description 'The MindMeister map ID'. Thus, the description adds no new semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the image/thumbnail for a MindMeister map.' It provides a specific verb and resource, and the context with sibling tools (e.g., mindmeister_get_map) helps distinguish it as the image-specific retrieval tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like mindmeister_get_map or mindmeister_export_map. The agent must infer based on the tool name and purpose, but no when-to-use or when-not-to-use instructions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mindmeister_get_preferencesARead-onlyIdempotent
Get the authenticated user's MindMeister preferences.
Retrieves settings and preferences via GET /users/me/preferences (or equivalent endpoint).
Returns: str: JSON with user preference key-value pairs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds the specific endpoint (GET /users/me/preferences) and return format (JSON key-value pairs), enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding value: purpose, endpoint, return type. Front-loaded and no unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fairly complete for a simple zero-parameter tool with output schema. Could mention authentication context more explicitly, but annotations cover safety. Sibling tools do not overlap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist. Baseline score of 4 applies per guidelines. Description adds context about the endpoint implying no parameters needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves the authenticated user's preferences, using a specific verb and resource. It is distinct from sibling tools like mindmeister_get_map or mindmeister_export_map.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. The purpose is clear, but the description does not mention when not to use it or specify any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mindmeister_get_userARead-onlyIdempotent
Get the authenticated MindMeister user profile.
Returns the current user's id, name, email, and account details from GET /users/me.
Returns: str: JSON with user profile fields (id, name, email, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds value by specifying the exact API endpoint (GET /users/me) and the return format (JSON with user profile fields), which complements the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with only four lines, front-loading the action and resource. Every sentence provides necessary information, including the endpoint and return type, with no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, straightforward get request) and the presence of an output schema, the description fully covers the tool's behavior. It mentions the endpoint and return fields, which is sufficient for an agent to understand usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters in the input schema, so the description does not need to explain any. With 100% schema coverage and zero parameters, the baseline score of 4 applies. The description usefully notes the return fields even though it's not parameter-related.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'authenticated MindMeister user profile', listing specific fields such as id, name, email, and account details. It uniquely identifies this tool among siblings that focus on maps, images, and preferences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving the current user's profile with no parameters needed. It does not explicitly specify when not to use it, but the context of zero parameters and the nature of the tool make it clear. No alternatives are needed as no sibling tool provides user profile information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mindmeister_list_mapsARead-onlyIdempotent
List mind maps belonging to the authenticated user.
Supports pagination via limit/offset. The MindMeister API v2 may not expose a dedicated list-all endpoint; this tool attempts GET /maps and returns whatever the API provides. If the endpoint is not available, an appropriate error is returned.
Args: params: ListMapsInput with optional limit (int, 1-50) and offset (int, >=0).
Returns: str: JSON array of map objects with pagination metadata, or an error message if the endpoint is unavailable.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description adds details about attempting GET /maps, returning API response, and handling missing endpoints, which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, front-loaded purpose, then pagination and API quirks. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, parameters, return type (JSON array with metadata/error), and endpoint availability issue. With output schema present, description adequately complements it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has high description coverage (limit, offset explained). Description repeats these but adds context about pagination limits and API behavior. Baseline 3 with moderate added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List mind maps belonging to the authenticated user,' with a specific verb and resource. It distinguishes from siblings like mindmeister_export_map and mindmeister_get_map by focusing on listing all maps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides pagination instructions and notes the API may not have a dedicated list-all endpoint, including error handling. Lacks explicit when-not but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mindmeister_list_rightsARead-onlyIdempotent
List sharing permissions for a MindMeister map.
Returns all collaborators and their access levels for the given map via GET /maps/{id}/rights.
Args: params: ListRightsInput with map_id (str).
Returns: str: JSON array of permission objects (user, role, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds mention of the HTTP method (GET) and return format (JSON array), but no additional behavioral traits beyond what annotations convey. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, with two sentences plus an Args/Returns section. It front-loads the purpose and provides necessary details without unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema exists, good annotations), the description fully covers what the tool does, the input required, and the output format. No gaps are evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description minimally mentions 'params: ListRightsInput with map_id (str)', which is redundant with the schema's own description for map_id. Despite context signals indicating 0% schema description coverage, the schema does provide a description for the map_id property, so the description adds little value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'sharing permissions for a MindMeister map'. It distinguishes itself from sibling tools like mindmeister_get_map or mindmeister_list_maps by specifying it is about permissions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving all collaborators and their access levels, which is clear from context. However, it does not explicitly state when not to use it or mention alternatives, though sibling names are distinct enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct aspect of MindMeister: maps, user, preferences, image, export, rights. No overlap in purpose, agents can clearly differentiate.
All tools follow the mindmeister_verb_noun pattern, using snake_case consistently. The naming is uniform and predictable.
Seven tools is a well-scoped set for a mind map service, covering listing, retrieving, exporting, user info, and permissions without unnecessary bloat.
The server lacks create, update, and delete operations for maps, which are essential for full lifecycle management. The tool surface is read-only plus export, leaving agents unable to perform core editing tasks.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Connect Claude AI to UluP Spaces via MCP — create projects, nodes, and tasks with OAuth 2.0.
One workspace of tools for Claude and ChatGPT: connect 600+ apps, generate media, build tools.
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/conexaoarteiro/mindmeister-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server