Skip to main content
Glama
shyinlim

Mindmup2GoogleDriveMCP

by shyinlim

MindMup2 Google Drive MCP Server

Ein Model Context Protocol (MCP) Server, der es KI-Clients (Claude Code, Cursor) ermöglicht, MindMup 2 .mup-Mindmaps in Google Drive zu suchen, zu lesen und zu durchsuchen — ohne einen 3 MB großen JSON-Baum in das Modell zu laden. Große Maps werden automatisch in eine Baumstruktur zusammengefasst; die KI kann dann über node_path in bestimmte Abschnitte eintauchen.

Kompatibilität: Claude Code, Cursor (HTTP-Transport). Nicht unterstützt: Claude Desktop (nur stdio).

💫 Ergebnis

ezgif-5b4a0eb3a275f8.gif

Related MCP server: Google-Workspace-MCP-Server

✨ Funktionen

  • Suche nach MindMup-Dateien in Ihrem gesamten Google Drive (schreibgeschützt)

  • Baumnavigation + Abschnitts-Drill-Down für große Mindmaps — kleine Dateien geben den vollständigen Inhalt zurück, große Dateien eine Gliederung, in die Sie eintauchen können

  • Client-spezifische Cache-Isolierung über den X-Client-Id-Header, sodass verschiedene Benutzer/Tools keine zwischengespeicherten Inhalte teilen

  • Hot-Reload-Entwicklungsmodus über fastmcp run --reload + eingebundenes Quellverzeichnis

  • FastMCP-Server mit integrierten /health- und /ping-Endpunkten

  • Docker Compose für Entwicklung und Produktion

🗺️ End-to-End-Ablauf

1. Set up Google Cloud service account     →  download JSON key
2. Share your Drive folder with the SA     →  Viewer access
3. Base64-encode the JSON key              →  for X-Google-Credential header
4. Run the server  (Docker or Python)      →  http://127.0.0.1:9805
5. Configure your MCP client (Claude/Cursor) with the base64 credential
6. Verify  →  curl http://127.0.0.1:9805/health

🔧 Verfügbare MCP-Tools

Tool

Beschreibung

list_files

Listet MindMup-Dateien aus Google Drive auf (Ordner und Nicht-.mup-Dateien sind standardmäßig gefiltert). Gibt id, name, folder_url, size, modified_time zurück.

read_mindmap

Liest eine MindMup-Datei anhand von file_id oder file_name (eines ist erforderlich; der Name verwendet die erste Teilübereinstimmung). Kleine Dateien (<100KB AI-dict) geben content_type: "full" zurück. Große Dateien geben content_type: "outline_only" mit tree_outline, section_stats und suggested_start_paths zurück.

search_mindmap

Sucht Knoten nach Schlüsselwörtern. Parameter: file_id, keyword, optional node_path (Unterbaum-Bereich), max_results=30, normalize_whitespace=True. Gibt Knoten mit node_path, title_preview, breadcrumb, children_count zurück.

get_mindmap_section

Taucht in einen Abschnitt anhand von node_path ein (punktierte Ganzzahlen, Wurzel ist 1, z. B. "1.2.3"). Optional max_depth, offset=0, limit=0. Gibt `content_type: "full"

"outline_only"

"paginated"

"truncated"` zurück — schaltet automatisch um, wenn der Abschnitt noch zu groß ist.

Empfohlener Arbeitsablauf für KI-Agenten: list_filesread_mindmap → falls outline_only, entweder search_mindmap (nach Schlüsselwort) oder get_mindmap_section (nach node_path aus suggested_start_paths).

🚀 Erste Schritte

Voraussetzungen

  • Python 3.12+

  • Docker & docker-compose (erforderlich für make run-dev-docker / make run-prod) ; Ref. makefile

  • Google Cloud Platform-Konto

  • Ein MCP-Client, der HTTP-Transport unterstützt (Claude Code oder Cursor)

Google Drive API-Einrichtung

Schritt

Beschreibung

Bild

1

Gehen Sie zur Google Cloud Console und erstellen Sie ein neues Projekt (kostenlose Stufe reicht aus — keine Abrechnung für Drive API erforderlich).

2

Aktivieren Sie die Google Drive API.

3

Erstellen Sie Anmeldedaten für das Dienstkonto:- "IAM & Verwaltung" → "Dienstkonten" → "Dienstkonto erstellen"- Keine projektweite Rolle erforderlich (Drive-Freigabe übernimmt die Authentifizierung)- Öffnen Sie das Dienstkonto → "Schlüssel"-Tab → "Schlüssel hinzufügen" → JSON → laden Sie die Schlüsseldatei herunter.

google_service_acc.jpg

4

Base64-kodieren Sie die gesamte JSON-Schlüsseldatei (siehe Header-Referenz).⚠️ Fügen Sie die JSON-Datei zu .gitignore hinzu — niemals committen.

5

Teilen Sie Ihren Google Drive-Ordner mit dem Dienstkonto:- Kopieren Sie den client_email-Wert aus dem JSON- Rechtsklick auf den Ordner → Freigeben → E-Mail einfügen- Gewähren Sie Betrachter-Zugriff, deaktivieren Sie "Benachrichtigen"- Die Freigabe wird auf Unterordner übertragen.

google_drive_share_list2.jpg

Hinweis zu Scopes: Der Server fordert auth/drive + auth/drive.file an. Trotz des breiten Scopes kann das Dienstkonto bei Freigabe auf Ordnerebene als Betrachter nur lesen, was Sie freigegeben haben. Workspace-verwaltete Konten blockieren möglicherweise externe Freigaben — falls dies der Fall ist, bitten Sie Ihren Administrator, die Freigabe für Dienstkonten für Ihre Domain zu erlauben.

Server ausführen

Docker (empfohlen):

make run-dev-docker   # dev: hot-reload, source bind-mounted
make run-prod         # prod: no reload

Direktes Python (ohne Docker):

pip install -r requirements.txt
python3 run.py
# Optionally: MCP_TRANSPORT=streamable-http python3 run.py

Server verifizieren

curl http://127.0.0.1:9805/health
# => {"result":"success","time":"...","message":"MCP server is running. ..."}

Wenn Sie nicht success erhalten, überprüfen Sie docker logs <container> (Docker-Modus) oder stdout (Python-Modus).

Tests ausführen

pip install -r requirements.txt
pytest

MCP-Client-Konfiguration

Fügen Sie dies zu Ihrer MCP-Client-Konfiguration hinzu (~/.claude/mcp.json für Claude Code oder Ihre Cursor MCP-Einstellungen):

{
    "mcpServers": {
        "mindmup-gdrive": {
            "type": "http",
            "url": "http://127.0.0.1:9805/mcp",
            "headers": {
                "X-Google-Credential": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VuXXXXXXXXXXX",
                "X-Client-Id": "shyin-claude-code"
            }
        }
    }
}

Header-Referenz

Header

Erforderlich

Beschreibung

X-Google-Credential

Ihr Dienstkonto-JSON, Base64-kodiert. Verwenden Sie base64encode.org und fügen Sie die Ausgabe hier ein. ⚠️ Base64 ist Kodierung, keine Verschlüsselung — die MCP-Client-Konfiguration liegt im Klartext auf der Festplatte, synchronisieren Sie sie also nicht mit öffentlichen Repos / unverschlüsselten Cloud-Backups.

X-Client-Id

Optional

Ein eindeutiger Bezeichner pro Benutzer + Tool, z. B. shyin-claude-code. Wird als Teil des Cache-Schlüssels (X-Client-Id, credential_hash, file_id) verwendet, um zwischengespeicherte Inhalte zwischen Clients zu isolieren. Wenn weggelassen, wird auf default zurückgegriffen (Cache kann mit anderen nicht gesetzten Clients geteilt werden) und eine Warnung wird protokolliert. Empfohlenes Format: <ihr-name>-<tool-name>. Verwenden Sie einen Wert mit hoher Entropie, um Kollisionen mit anderen Benutzern zu vermeiden.

🩺 Fehlerbehebung

Symptom

Wahrscheinliche Ursache / Lösung

health gibt nichts zurück / Verbindung verweigert

Server läuft nicht. Überprüfen Sie docker ps oder stdout. Port 9805 bereits belegt? Bearbeiten Sie mcp_deployment/docker-compose-dev.yml zur Neuzuordnung.

Google Drive authentication failed

Ungültiges Base64. Plausibilitätsprüfung: `echo "$CRED"

base64 -d

jq .client_email` — sollte die Dienstkonto-E-Mail ausgeben.

list_files gibt nichts zurück

(a) Ordner mit der falschen E-Mail geteilt — muss mit client_email im JSON übereinstimmen. (b) Dateien sind keine .mup-Dateien — rufen Sie mit mindmup_only=False auf, um die Sichtbarkeit zu bestätigen. (c) Workspace-Organisationsrichtlinie blockiert externe Freigaben.

Docker-Build schlägt fehl

Stellen Sie sicher, dass der Docker-Daemon läuft. Führen Sie make run-dev-docker erneut aus.

Änderungen werden in der Entwicklung nicht übernommen

Hot-Reload überwacht nur Python-Quellen. Starten Sie den Container nach Abhängigkeits- oder Umgebungsänderungen neu.

🏗️ Projektstruktur

├── mcp_deployment/
│   ├── docker-compose-dev.yml
│   ├── docker-compose-prod.yml
│   └── Dockerfile
├── src/
│   ├── core/
│   │   ├── gdrive_client.py    # Google Drive API client
│   │   ├── gdrive_feature.py   # Google Drive feature implementation
│   │   ├── mcp_server.py       # Main MCP server with read tools
│   │   └── mindmup_parser.py   # MindMup parsing + tree navigation
│   ├── model/
│   │   ├── common_model.py     # Common data models
│   │   ├── gdrive_model.py     # Google Drive data models
│   │   └── mindmup_model.py    # Mind map data models (with to_ai_dict)
│   └── utility/
│       ├── enum.py             # Enumerations and constants
│       └── logger.py           # Logging utilities
├── tests/                      # Unit tests
├── plans/                      # Implementation plans
├── run.py                      # Main entry point
├── requirements.txt            # Python dependencies
└── makefile                    # Build and deployment commands

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that seamlessly interacts with your Google Calendar, Gmail, Drive and so on.
    30
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables interaction with Google Drive through the Google Cloud API. It allows users to list, read, and upload files directly from MCP-compatible clients like manus.im or Cursor.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    A read-only Google Drive MCP server that allows searching files, reading file content (with auto-export for Google Docs, Sheets, Slides), and retrieving file metadata via OAuth authentication.
    8 npm
    2
    -