list_filesLABSCO SUMMARY
An agent can work a big mind map without swallowing it.
Instead of returning the whole JSON tree, it hands back an outline with entry points and lets the model drill in by node path — and when a chosen section is still too big, it paginates rather than truncating silently.
What it is
A reader for MindMup 2 .mup files stored in Google Drive. Small maps come back whole; large ones return a tree outline with suggested entry points, and you drill in by node path — so a 3MB map never lands in the model's context in one piece.
What you get
- MindMup files listed from Drive with id, name, folder URL, size and modified time
- A map read by file id or by partial name — full content when it is small, an outline with section statistics and suggested starting paths when it is large
- Keyword search across nodes, scopable to a subtree, returning node path, title preview and breadcrumb
- A section fetched by dotted node path with depth, offset and limit, paginating or truncating when the section is itself too large
- Per-client cache isolation keyed on a client id header, so two users never share cached content
Requirements
A Google Cloud service account with Viewer access to the Drive folder, its JSON key base64-encoded and passed as a header, and a client that speaks HTTP transport — Claude Code or Cursor. Claude Desktop is stdio-only and is not supported.
Setup effort
Run a container — build the image from the repository, then point your client at it
USE CASES
Finding the map you need among everything in Drive
List the .mup files with their sizes and modified times, then open the one that matches — by id, or by a partial name.
Getting the shape of a map before reading any of it
Read it once and take the tree outline with its section statistics and suggested starting paths, so the next question is aimed.
Locating where a topic appears across a large map
Search nodes by keyword and get back node paths and breadcrumbs, optionally scoped to one subtree.
Reading one branch in full
Fetch the section by its dotted node path, with the depth you want, instead of pulling everything above it too.
Working through a section that is still too big
Page through it with offset and limit, or search within that subtree first to find the part you actually meant.
4 tools
Listed in project docs. Your client may show a different list.
read_mindmapsearch_mindmapget_mindmap_sectionBEFORE YOU INSTALL
What to know first
Tools you get
4 tools named in the project's documentation.
Requires
- Docker & docker-compose, and make (the run step is make run-dev-docker)
- Python 3.12+ only if you run it without Docker (pip install -r requirements.txt && python3 run.py)
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Build the image from the repository, then point your client at it.
Server setup
Go to Google Cloud Console and create a new project (free tier is fine — no billing required for Drive API).
Enable the Google Drive API.
Create Service Account credentials: "IAM & Admin" → "Service Accounts" → "Create Service Account"; open the SA → "Keys" tab → "Add Key" → JSON → download the key file.
Base64-encode the entire JSON key file — the output is the value of the X-Google-Credential header.
Share your Google Drive folder with the SA: copy the client_email value from the JSON, right-click the folder → Share → paste the email, grant Viewer access.
git clone https://github.com/shyinlim/mcp_mindmup2_google_drive.git
cd mcp_mindmup2_google_drive
make run-dev-docker
curl http://127.0.0.1:9805/healthAdd the configuration under MCP Clients to a .mcp.json file at your project root (Claude Code) or to your Cursor MCP settings, pasting the base64 credential into X-Google-Credential and setting X-Client-Id to a name unique to you and that tool.
MCP Clients
Claude Code
{
"mcpServers": {
"mindmup-gdrive": {
"type": "http",
"url": "http://127.0.0.1:9805/mcp",
"headers": {
"X-Google-Credential": "<YOUR_GOOGLE_CREDENTIAL>",
"X-Client-Id": "<YOUR_CLIENT_ID>"
}
}
}
}Save it as .mcp.json at your project root. <YOUR_GOOGLE_CREDENTIAL> is your base64-encoded service-account JSON, and <YOUR_CLIENT_ID> your own name: the server keys its cache on this id, so it should be unique to you and this tool.
Cursor
{
"mcpServers": {
"mindmup-gdrive": {
"type": "http",
"url": "http://127.0.0.1:9805/mcp",
"headers": {
"X-Google-Credential": "<YOUR_GOOGLE_CREDENTIAL>",
"X-Client-Id": "<YOUR_CLIENT_ID>"
}
}
}
}Add it to your Cursor MCP settings. <YOUR_GOOGLE_CREDENTIAL> is your base64-encoded service-account JSON, and <YOUR_CLIENT_ID> your own name: the server keys its cache on this id, so it should be unique to you and this tool.