MotherDuck MCP Server
offiziellDaten mit MotherDuck und lokalem DuckDB abfragen und analysieren
Dokumentation
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 MCP | Lokaler 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 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-writehinzu, um Schreibzugriff zu aktivieren. Siehe Absicherung für die Produktion.- Standarddatenbank geändert: Der Standardwert von
--db-pathwurde vonmd: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
| Client | Konfigurationsort | 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 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
| Werkzeug | 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 DBs) | - | - |
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 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
| 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-Werkzeug 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 wird |
--motherduck-connection-parameters | session_hint=mcp&dbinstance_inactivity_ttl=0s | Zusätzliche MotherDuck-Verbindungszeichenfolgen-Parameter (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 den globalen Zustand weiterhin über den gemeinsam genutzten 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 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
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
- Führen Sie die
Release New VersionGitHub 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