MotherDuck

offiziell

Daten mit MotherDuck und lokalem DuckDB abfragen und analysieren

Was kann man mit MotherDuck MCP machen?

  • SQL-Analysen ausführen — Bitten Sie Ihren Assistenten, lokale DuckDB-Dateien, In-Memory-Datenbanken oder MotherDuck mithilfe von execute_query mit vollständiger Unterstützung des DuckDB-SQL-Dialekts abzufragen.

  • Datenbankstruktur erkunden — Lassen Sie Ihren Assistenten Datenbanken, Tabellen und Spalten mit list_databases, list_tables und list_columns auflisten, um Ihr Datenschema zu verstehen.

  • Datenbankverbindungen wechseln — Weisen Sie Ihren Assistenten an, spontan zwischen lokalen Dateien, S3-gehosteten Datenbanken oder MotherDuck über switch_database_connection zu wechseln (erfordert das Flag --allow-switch-databases).

  • Daten schreiben und ändern — Aktivieren Sie den Lese-Schreib-Modus, damit Ihr Assistent Datensätze direkt in verbundenen Datenbanken einfügen, aktualisieren oder löschen kann.

  • Daten importieren und exportieren — Nutzen Sie den Server, um Abfragen über lokale und entfernte Datenbanken hinweg auszuführen und Daten von Ihrem lokalen Dateisystem zu importieren oder dorthin zu exportieren.

Gehosteter MCP-Server

npx add-mcp 'https://api.motherduck.com/mcp'

Installiert in Claude Code, Codex, Cursor und mehr

Dokumentation

MotherDuck / DuckDB Local MCP Server

DuckDB / MotherDuck Local MCP Server

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


Verbinden Sie KI-Assistenten mit Ihren Daten mithilfe 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 das Ausführen von SQL-Lese- und Schreibabfragen, das Durchsuchen von Datenbankkatalogen und das Wechseln zwischen verschiedenen Datenbankverbindungen im laufenden Betrieb.

Auf der Suche nach einem vollständig verwalteten Remote-MCP-Server für MotherDuck? → Gehen Sie zur MotherDuck Remote MCP-Dokumentation

Remote vs. Local MCP

Remote MCPLocal 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 Remote-Datenbanken, Daten aus lokalem Dateisystem importieren / dorthin exportieren

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 jeder Datenbank (lokale Dateien, S3 oder MotherDuck) zu wechseln.

Verbindung zu einer lokalen DuckDB-Datei im Nur-Lese-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 Nur-Lese-Modus her. Hält die Dateisperre nicht fest, sodass sie bequem neben einer Schreibverbindung zu derselben DuckDB-Datei verwendet werden kann. Sie können auch über s3://bucket/path.duckdb eine Verbindung zu Remote-DuckDB-Dateien auf S3 herstellen — siehe Umgebungsvariablen für die S3-Authentifizierung. Wenn Sie den Zugriff Dritter auf das MCP in Betracht ziehen, siehe 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 Befehlszeilenparameter für weitere Optionen, Absicherung für die Produktion für Bereitstellungsanleitungen und Fehlerbehebung, wenn Probleme auftreten.

Client-Einrichtung

ClientKonfigurationsspeicherortEin-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 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

Lokale DuckDB (Nur-Lese-Modus):

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

MotherDuck (Lese-/Schreibmodus):

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

Lokale DuckDB (Nur-Lese-Modus):

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

MotherDuck (Lese-/Schreibmodus):

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

Lokale DuckDB (Nur-Lese-Modus):

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

MotherDuck (Lese-/Schreibmodus):

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 projektspezifisch). 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-/Schreibmodus):

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

Tools

ToolBeschreibungErforderliche EingabenOptionale Eingaben
execute_querySQL-Abfrage ausführen (DuckDB-Dialekt)sql-
list_databasesAlle Datenbanken auflisten (nützlich für MotherDuck oder mehrere angehängte Datenbanken)--
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 --allow-switch-databases-Flag

Alle Tools 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, reicht der Nur-Lese-Modus allein nicht aus — er ermöglicht weiterhin Zugriff auf das lokale Dateisystem, das Ändern von DuckDB-Einstellungen und andere potenziell sensible Vorgänge.

Für Produktionsbereitstellungen mit Zugriff Dritter empfehlen wir MotherDuck Remote MCP — keine Einrichtung erforderlich, Lese-/Schreibfähig und von MotherDuck gehostet.

Selbst gehostetes MotherDuck-MCP: Forken Sie dieses Repository und passen Sie es nach Bedarf an. Verwenden Sie ein Dienstkonto mit Lese-Skalierungs-Tokens und aktivieren Sie den SaaS-Modus, um den lokalen Dateizugriff einzuschränken.

Selbst gehostetes DuckDB-MCP: Verwenden Sie --init-sql, um Sicherheitseinstellungen anzuwenden. Siehe die Anleitung zur DuckDB-Absicherung für verfügbare Optionen.

Docker

Erstellen und starten Sie den Server mit Streamable HTTP auf Port 8000 (standardmäßig eine In-Memory-DuckDB):

docker build -t mcp-server-motherduck .
docker run --rm -p 8000:8000 mcp-server-motherduck

Verbinden Sie sich mit MotherDuck, indem Sie ein Token übergeben und den Befehl überschreiben:

docker run --rm -p 8000:8000 \
  -e motherduck_token="$MOTHERDUCK_TOKEN" \
  mcp-server-motherduck --transport http --db-path md:

Der MCP-Endpunkt ist unter http://localhost:8000/mcp verfügbar. CLI-Flags und Umgebungsvariablen von unten gelten weiterhin.

Befehlszeilenparameter

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-Tool 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 werden soll
--motherduck-connection-parameterssession_hint=mcp&
dbinstance_inactivity_ttl=0s
Zusätzliche MotherDuck-Verbindungszeichenfolgenparameter (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 weiterhin den globalen Zustand über den gemeinsamen 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 Sie 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

Zum Ausführen 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