MotherDuck MCP Server

offiziell

Daten mit MotherDuck und lokalem DuckDB abfragen und analysieren

Dokumentation

MotherDuck / DuckDB Local MCP Server

DuckDB / MotherDuck Lokaler MCP-Server

SQL-Analytik und Data Engineering für KI-Assistenten und IDEs.


Verbinden Sie KI-Assistenten mit Ihren Daten unter Verwendung der leistungsstarken analytischen SQL-Engine von DuckDB. Unterstützt die Verbindung zu lokalen DuckDB-Dateien, In-Memory-Datenbanken, S3-gehosteten Datenbanken und MotherDuck. Ermöglicht die Ausführung von SQL-Lese- und Schreibabfragen, das Durchsuchen von Datenbankkatalogen und das dynamische Wechseln zwischen verschiedenen Datenbankverbindungen.

Suchen Sie einen vollständig verwalteten Remote-MCP-Server für MotherDuck?Zur MotherDuck Remote MCP-Dokumentation

Remote vs. Lokaler MCP

Remote MCPLokaler MCP (dieses Repository)
HostingVon MotherDuck gehostetLäuft lokal/selbst gehostet
EinrichtungKeine Einrichtung erforderlichErfordert lokale Installation
ZugriffLese-/Schreibzugriff unterstütztLese-/Schreibzugriff unterstützt
Lokales Dateisystem-Abfragen über lokale und entfernte Datenbanken hinweg, Datenaufnahme aus / Datenexport in das lokale Dateisystem

📝 Migration von v0.x?

  • Standardmäßig schreibgeschützt: Der Server läuft jetzt standardmäßig im schreibgeschützten Modus. Fügen Sie --read-write hinzu, um Schreibzugriff zu aktivieren. Siehe Absicherung für die Produktion.
  • Standarddatenbank geändert: Der Standardwert von --db-path wurde von md: auf :memory: geändert. Fügen Sie --db-path md: explizit für MotherDuck hinzu.
  • MotherDuck schreibgeschützt erfordert Read-Scaling-Token: MotherDuck-Verbindungen im schreibgeschützten Modus erfordern ein Read-Scaling-Token. Reguläre Token erfordern --read-write.

Schnellstart

Voraussetzungen: Installieren Sie uv über pip install uv oder brew install uv

Verbindung zu In-Memory DuckDB (Entwicklungsmodus)

{
  "mcpServers": {
    "DuckDB (in-memory, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", ":memory:", "--read-write", "--allow-switch-databases"]
    }
  }
}

Volle Flexibilität ohne Einschränkungen – Lese-/Schreibzugriff und die Möglichkeit, zur Laufzeit zu einer beliebigen Datenbank (lokale Dateien, S3 oder MotherDuck) zu wechseln.

Verbindung zu einer lokalen DuckDB-Datei im schreibgeschützten Modus

{
  "mcpServers": {
    "DuckDB (read-only)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", "/absolute/path/to/your.duckdb"]
    }
  }
}

Stellt eine Verbindung zu einer bestimmten DuckDB-Datei im schreibgeschützten Modus her. Hält die Dateisperre nicht aufrecht, sodass die gleichzeitige Nutzung mit einer Schreibverbindung zur selben DuckDB-Datei bequem möglich ist. Sie können auch eine Verbindung zu entfernten DuckDB-Dateien auf S3 herstellen, indem Sie s3://bucket/path.duckdb verwenden – siehe Umgebungsvariablen für die S3-Authentifizierung. Wenn Sie Drittzugriff auf den MCP in Betracht ziehen, lesen Sie Absicherung für die Produktion.

Verbindung zu MotherDuck im Lese-/Schreibmodus

{
  "mcpServers": {
    "MotherDuck (local, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", "md:", "--read-write"],
      "env": {
        "motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
      }
    }
  }
}

Siehe Kommandozeilenparameter für weitere Optionen, Absicherung für die Produktion für Bereitstellungshinweise und Fehlerbehebung, falls Probleme auftreten.

Client-Einrichtung

ClientKonfigurationsortEin-Klick-Installation
Claude DesktopEinstellungen → Entwickler → Konfiguration bearbeiten.mcpb (MCP Bundle)
Claude CodeVerwenden Sie die CLI-Befehle unten-
Codex CLIVerwenden Sie die CLI-Befehle unten oder ~/.codex/config.toml-
Gemini CLIVerwenden Sie die CLI-Befehle unten oder ~/.gemini/settings.json-
CursorEinstellungen → MCP → Neuen globalen MCP-Server hinzufügenInstall in Cursor
VS CodeCtrl+Shift+P → „Einstellungen: Benutzereinstellungen (JSON) öffnen“Install with UV in VS Code
Kiro~/.kiro/settings/mcp.json (global) oder .kiro/settings/mcp.json (Projekt)Add to Kiro

Jeder MCP-kompatible Client kann diesen Server verwenden. Fügen Sie die JSON-Konfiguration aus dem Schnellstart zur MCP-Konfigurationsdatei Ihres Clients hinzu. Konsultieren Sie die Dokumentation Ihres Clients für den Speicherort der Konfigurationsdatei.

Claude Code CLI-Befehle

In-Memory DuckDB (Entwicklungsmodus):

claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases

Lokales DuckDB (schreibgeschützt):

claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb

MotherDuck (Lese-/Schreibzugriff):

claude mcp add --scope user motherduck --transport stdio --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-write
Codex CLI-Befehle

In-Memory DuckDB (Entwicklungsmodus):

codex mcp add duckdb -- uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases

Lokales DuckDB (schreibgeschützt):

codex mcp add duckdb -- uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb

MotherDuck (Lese-/Schreibzugriff):

codex mcp add motherduck --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-write
Gemini CLI-Befehle

In-Memory DuckDB (Entwicklungsmodus):

gemini mcp add -s user duckdb uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases

Lokales DuckDB (schreibgeschützt):

gemini mcp add -s user duckdb uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb

MotherDuck (Lese-/Schreibzugriff):

gemini mcp add -s user -e motherduck_token=YOUR_TOKEN motherduck uvx mcp-server-motherduck --db-path md: --read-write
Kiro manuelle JSON-Konfiguration

Fügen Sie Folgendes zu Ihrer Kiro MCP-Konfigurationsdatei hinzu (~/.kiro/settings/mcp.json für global oder .kiro/settings/mcp.json für projektbezogen). Weitere Details finden Sie in der Kiro MCP-Dokumentation.

In-Memory DuckDB (Entwicklungsmodus):

{
  "mcpServers": {
    "DuckDB (in-memory, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", ":memory:", "--read-write", "--allow-switch-databases"]
    }
  }
}

MotherDuck (Lese-/Schreibzugriff):

{
  "mcpServers": {
    "MotherDuck (local, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", "md:", "--read-write"],
      "env": {
        "motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
      }
    }
  }
}

Werkzeuge

WerkzeugBeschreibungErforderliche EingabenOptionale Eingaben
execute_querySQL-Abfrage ausführen (DuckDB-Dialekt)sql-
list_databasesAlle Datenbanken auflisten (nützlich für MotherDuck oder mehrere angehängte DBs)--
list_tablesTabellen und Ansichten auflisten-database, schema
list_columnsSpalten einer Tabelle/Ansicht auflistentabledatabase, schema
switch_database_connection*Zu einer anderen Datenbank wechselnpathcreate_if_not_exists

*Erfordert das Flag --allow-switch-databases

Alle Werkzeuge geben JSON zurück. Ergebnisse sind standardmäßig auf 1024 Zeilen / 50.000 Zeichen begrenzt (konfigurierbar über --max-rows, --max-chars).

Absicherung für die Produktion

Wenn Sie Dritten Zugriff auf einen selbst gehosteten MCP-Server gewähren, ist der schreibgeschützte Modus allein nicht ausreichend – er ermöglicht weiterhin den Zugriff auf das lokale Dateisystem, das Ändern von DuckDB-Einstellungen und andere potenziell sensible Vorgänge.

Für Produktionsbereitstellungen mit Drittzugriff empfehlen wir MotherDuck Remote MCP – keine Einrichtung, Lese-/Schreibfähigkeit und von MotherDuck gehostet.

Selbst-Hosting von MotherDuck MCP: Forken Sie dieses Repository und passen Sie es nach Bedarf an. Verwenden Sie ein Servicekonto mit Read-Scaling-Token und aktivieren Sie den SaaS-Modus, um den lokalen Dateizugriff einzuschränken.

Selbst-Hosting von DuckDB MCP: Verwenden Sie --init-sql, um Sicherheitseinstellungen anzuwenden. Siehe den Leitfaden zur DuckDB-Absicherung für verfügbare Optionen.

Kommandozeilenparameter

ParameterStandardBeschreibung
--db-path:memory:Datenbankpfad: lokale Datei (absolut), md: (MotherDuck) oder s3:// URL
--motherduck-tokenmotherduck_token UmgebungsvariableMotherDuck-Zugriffstoken
--read-writeFalseSchreibzugriff aktivieren
--motherduck-saas-modeFalseMotherDuck SaaS-Modus (schränkt lokalen Zugriff ein)
--allow-switch-databasesFalseswitch_database_connection-Werkzeug aktivieren
--max-rows1024Maximale Anzahl zurückgegebener Zeilen
--max-chars50000Maximale Anzahl zurückgegebener Zeichen
--query-timeout-1Abfrage-Timeout in Sekunden (-1 = deaktiviert)
--init-sqlNoneSQL, das beim Start ausgeführt wird
--motherduck-connection-parameterssession_hint=mcp&
dbinstance_inactivity_ttl=0s
Zusätzliche MotherDuck-Verbindungszeichenfolgen-Parameter (key=value-Paare, getrennt durch &)
--ephemeral-connectionsTrueTemporäre Verbindungen für schreibgeschützte lokale Dateien verwenden
--transportstdioTransporttyp: stdio oder http
--stateless-httpFalseNur für Protokollkompatibilität (z. B. mit AWS Bedrock AgentCore Runtime). Der Server behält den globalen Zustand weiterhin über den gemeinsam genutzten DatabaseClient bei.
--port8000Port für HTTP-Transport
--host127.0.0.1Host für HTTP-Transport

Umgebungsvariablen

VariableBeschreibung
motherduck_token oder MOTHERDUCK_TOKENMotherDuck-Zugriffstoken (Alternative zu --motherduck-token)
HOMEWird von DuckDB für Erweiterungen und Konfiguration verwendet. Überschreiben mit --home-dir, falls nicht gesetzt.
AWS_ACCESS_KEY_IDAWS-Zugriffsschlüssel für S3-Datenbankverbindungen
AWS_SECRET_ACCESS_KEYAWS-Geheimschlüssel für S3-Datenbankverbindungen
AWS_SESSION_TOKENAWS-Sitzungstoken für temporäre Anmeldeinformationen (IAM-Rollen, SSO, EC2-Instanzprofile)
AWS_DEFAULT_REGIONAWS-Region für S3-Verbindungen
AWS_ENDPOINTAWS-Endpunkt für S3-Verbindungen

Fehlerbehebung

  • spawn uvx ENOENT: Geben Sie den vollständigen Pfad zu uvx an (führen Sie which uvx aus, um ihn zu finden)
  • Datei gesperrt: Stellen Sie sicher, dass --ephemeral-connections aktiviert ist (Standard: true) und dass Sie nicht im Lese-/Schreibmodus verbunden sind

Ressourcen

Entwicklung

Ausführung aus dem Quellcode:

{
  "mcpServers": {
    "Local DuckDB (Dev)": {
      "command": "uv",
      "args": ["--directory", "/path/to/mcp-server-motherduck", "run", "mcp-server-motherduck", "--db-path", "md:"],
      "env": {
        "motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
      }
    }
  }
}

Release-Prozess

  1. Führen Sie die Release New Version GitHub Action aus
  2. Geben Sie die Version im Format MAJOR.MINOR.PATCH ein
  3. Der Workflow erhöht die Version, veröffentlicht auf PyPI/MCP-Registry und erstellt das GitHub-Release mit dem MCPB-Paket

Lizenz

MIT-Lizenz – siehe LICENSE-Datei.

mcp-name: io.github.motherduckdb/mcp-server-motherduck