MotherDuck
offiziellDaten 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_querymit vollständiger Unterstützung des DuckDB-SQL-Dialekts abzufragen. -
Datenbankstruktur erkunden — Lassen Sie Ihren Assistenten Datenbanken, Tabellen und Spalten mit
list_databases,list_tablesundlist_columnsauflisten, um Ihr Datenschema zu verstehen. -
Datenbankverbindungen wechseln — Weisen Sie Ihren Assistenten an, spontan zwischen lokalen Dateien, S3-gehosteten Datenbanken oder MotherDuck über
switch_database_connectionzu 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
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 MCP | Local MCP (dieses Repository) | |
|---|---|---|
| Hosting | Von MotherDuck gehostet | Läuft lokal/selbst gehostet |
| Einrichtung | Keine Einrichtung erforderlich | Erfordert lokale Installation |
| Zugriff | Lese-/Schreibzugriff unterstützt | Lese-/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
| Client | Konfigurationsspeicherort | Ein-Klick-Installation |
|---|---|---|
| Claude Desktop | Einstellungen → Entwickler → Konfiguration bearbeiten | .mcpb (MCP-Bundle) |
| Claude Code | Verwenden Sie die CLI-Befehle unten | - |
| Codex CLI | Verwenden Sie die CLI-Befehle unten oder ~/.codex/config.toml | - |
| Gemini CLI | Verwenden Sie die CLI-Befehle unten oder ~/.gemini/settings.json | - |
| Cursor | Einstellungen → MCP → Neuen globalen MCP-Server hinzufügen | |
| VS Code | Ctrl+Shift+P → "Einstellungen: Benutzereinstellungen (JSON) öffnen" | |
| Kiro | ~/.kiro/settings/mcp.json (global) oder .kiro/settings/mcp.json (Projekt) |
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
| Tool | Beschreibung | Erforderliche Eingaben | Optionale Eingaben |
|---|---|---|---|
execute_query | SQL-Abfrage ausführen (DuckDB-Dialekt) | sql | - |
list_databases | Alle Datenbanken auflisten (nützlich für MotherDuck oder mehrere angehängte Datenbanken) | - | - |
list_tables | Tabellen und Ansichten auflisten | - | database, schema |
list_columns | Spalten einer Tabelle/Ansicht auflisten | table | database, schema |
switch_database_connection* | Zu einer anderen Datenbank wechseln | path | create_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
| Parameter | Standard | Beschreibung |
|---|---|---|
--db-path | :memory: | Datenbankpfad: lokale Datei (absolut), md: (MotherDuck) oder s3://-URL |
--motherduck-token | motherduck_token-Umgebungsvariable | MotherDuck-Zugriffstoken |
--read-write | False | Schreibzugriff aktivieren |
--motherduck-saas-mode | False | MotherDuck-SaaS-Modus (schränkt lokalen Zugriff ein) |
--allow-switch-databases | False | switch_database_connection-Tool aktivieren |
--max-rows | 1024 | Maximale Anzahl zurückgegebener Zeilen |
--max-chars | 50000 | Maximale Anzahl zurückgegebener Zeichen |
--query-timeout | -1 | Abfrage-Timeout in Sekunden (-1 = deaktiviert) |
--init-sql | None | SQL, das beim Start ausgeführt werden soll |
--motherduck-connection-parameters | session_hint=mcp&dbinstance_inactivity_ttl=0s | Zusätzliche MotherDuck-Verbindungszeichenfolgenparameter (key=value-Paare, getrennt durch &) |
--ephemeral-connections | True | Temporäre Verbindungen für schreibgeschützte lokale Dateien verwenden |
--transport | stdio | Transporttyp: stdio oder http |
--stateless-http | False | Nur für Protokollkompatibilität (z. B. mit AWS Bedrock AgentCore Runtime). Der Server behält weiterhin den globalen Zustand über den gemeinsamen DatabaseClient bei. |
--port | 8000 | Port für HTTP-Transport |
--host | 127.0.0.1 | Host für HTTP-Transport |
Umgebungsvariablen
| Variable | Beschreibung |
|---|---|
motherduck_token oder MOTHERDUCK_TOKEN | MotherDuck-Zugriffstoken (Alternative zu --motherduck-token) |
HOME | Wird von DuckDB für Erweiterungen und Konfiguration verwendet. Überschreiben Sie mit --home-dir, falls nicht gesetzt. |
AWS_ACCESS_KEY_ID | AWS-Zugriffsschlüssel für S3-Datenbankverbindungen |
AWS_SECRET_ACCESS_KEY | AWS-Geheimschlüssel für S3-Datenbankverbindungen |
AWS_SESSION_TOKEN | AWS-Sitzungstoken für temporäre Anmeldeinformationen (IAM-Rollen, SSO, EC2-Instanzprofile) |
AWS_DEFAULT_REGION | AWS-Region für S3-Verbindungen |
AWS_ENDPOINT | AWS-Endpunkt für S3-Verbindungen |
Fehlerbehebung
spawn uvx ENOENT: Geben Sie den vollständigen Pfad zuuvxan (führen Siewhich uvxaus, um ihn zu finden)- Datei gesperrt: Stellen Sie sicher, dass
--ephemeral-connectionsaktiviert ist (Standard: true) und dass Sie nicht im Lese-/Schreibmodus verbunden sind
Ressourcen
- MotherDuck-MCP-Dokumentation
- Close the Loop: Schnellere Datenpipelines mit MCP, DuckDB & KI (Blog)
- Schnellere Datenpipelines mit MCP und DuckDB (YouTube)
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
- Führen Sie die
Release New Version-GitHub-Action aus - Geben Sie die Version im Format
MAJOR.MINOR.PATCHein - 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