MotherDuck
officielInterrogez et analysez des données avec MotherDuck et DuckDB local.
Que pouvez-vous faire avec MotherDuck MCP ?
- Exécuter des requêtes SQL sur DuckDB ou MotherDuck — demandez à votre assistant d’exécuter du SQL analytique via
execute_query, avec prise en charge des opérations de lecture et, en option, d’écriture. - Explorer les schémas de base de données — listez les bases de données disponibles avec
list_databases, puis explorez les tables et colonnes à l’aide delist_tablesetlist_columns. - Basculer entre les connexions de base de données — utilisez
switch_database_connectionpour passer entre des fichiers DuckDB locaux, des instances en mémoire, des bases de données hébergées sur S3 ou MotherDuck à l’exécution. - Se connecter à MotherDuck pour l’analytique cloud — pointez le serveur vers
md:avec un jeton pour interroger et gérer directement les bases de données MotherDuck. - Contrôler la taille de la sortie des requêtes — configurez
--max-rowset--max-charspour limiter les ensembles de résultats renvoyés à l’assistant.
Documentation
Serveur MCP local DuckDB / MotherDuck
Analyse SQL et ingénierie de données pour les assistants IA et les IDE.
Connectez les assistants IA à vos données en utilisant le puissant moteur SQL analytique de DuckDB. Prend en charge la connexion aux fichiers DuckDB locaux, aux bases de données en mémoire, aux bases de données hébergées sur S3 et à MotherDuck. Permet d'exécuter des requêtes SQL en lecture et en écriture, de parcourir les catalogues de bases de données et de basculer entre différentes connexions de base de données à la volée.
Vous recherchez un serveur MCP distant entièrement géré pour MotherDuck ? → Consultez la documentation du MCP distant MotherDuck
MCP distant vs local
| MCP distant | MCP local (ce dépôt) | |
|---|---|---|
| Hébergement | Hébergé par MotherDuck | Exécuté localement/auto-hébergé |
| Configuration | Aucune configuration | Nécessite une installation locale |
| Accès | Lecture-écriture prise en charge | Lecture-écriture prise en charge |
| Système de fichiers local | - | Interroger des bases de données locales et distantes, ingérer des données depuis / exporter des données vers le système de fichiers local |
📝 Migration depuis la v0.x ?
- Lecture seule par défaut : Le serveur fonctionne désormais en mode lecture seule par défaut. Ajoutez
--read-writepour activer l'accès en écriture. Voir Sécurisation pour la production.- Base de données par défaut modifiée : La valeur par défaut de
--db-pathest passée demd:à:memory:. Ajoutez--db-path md:explicitement pour MotherDuck.- La lecture seule MotherDuck nécessite un jeton de lecture à l'échelle : Les connexions MotherDuck en mode lecture seule nécessitent un jeton de lecture à l'échelle. Les jetons standard nécessitent
--read-write.
Démarrage rapide
Prérequis : Installez uv via pip install uv ou brew install uv
Connexion à DuckDB en mémoire (Mode développement)
{
"mcpServers": {
"DuckDB (in-memory, r/w)": {
"command": "uvx",
"args": ["mcp-server-motherduck", "--db-path", ":memory:", "--read-write", "--allow-switch-databases"]
}
}
}
Flexibilité totale sans garde-fous — accès en lecture-écriture et possibilité de basculer vers n'importe quelle base de données (fichiers locaux, S3 ou MotherDuck) à l'exécution.
Connexion à un fichier DuckDB local en mode lecture seule
{
"mcpServers": {
"DuckDB (read-only)": {
"command": "uvx",
"args": ["mcp-server-motherduck", "--db-path", "/absolute/path/to/your.duckdb"]
}
}
}
Se connecte à un fichier DuckDB spécifique en mode lecture seule. Ne conservera pas le verrou de fichier, ce qui est pratique pour une utilisation conjointe avec une connexion en écriture au même fichier DuckDB. Vous pouvez également vous connecter à des fichiers DuckDB distants sur S3 en utilisant s3://bucket/path.duckdb — voir Variables d'environnement pour l'authentification S3. Si vous envisagez un accès tiers au MCP, consultez Sécurisation pour la production.
Connexion à MotherDuck en mode lecture-écriture
{
"mcpServers": {
"MotherDuck (local, r/w)": {
"command": "uvx",
"args": ["mcp-server-motherduck", "--db-path", "md:", "--read-write"],
"env": {
"motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
}
}
}
}
Voir Paramètres de ligne de commande pour plus d'options, Sécurisation pour la production pour des conseils de déploiement, et Dépannage si vous rencontrez des problèmes.
Configuration du client
| Client | Emplacement de la configuration | Installation en un clic |
|---|---|---|
| Claude Desktop | Paramètres → Développeur → Modifier la configuration | .mcpb (Bundle MCP) |
| Claude Code | Utilisez les commandes CLI ci-dessous | - |
| Codex CLI | Utilisez les commandes CLI ci-dessous ou ~/.codex/config.toml | - |
| Gemini CLI | Utilisez les commandes CLI ci-dessous ou ~/.gemini/settings.json | - |
| Cursor | Paramètres → MCP → Ajouter un nouveau serveur MCP global | |
| VS Code | Ctrl+Shift+P → "Préférences : Ouvrir les paramètres utilisateur (JSON)" | |
| Kiro | ~/.kiro/settings/mcp.json (global) ou .kiro/settings/mcp.json (projet) |
Tout client compatible MCP peut utiliser ce serveur. Ajoutez la configuration JSON du Démarrage rapide au fichier de configuration MCP de votre client. Consultez la documentation de votre client pour l'emplacement du fichier de configuration.
Commandes CLI Claude Code
DuckDB en mémoire (Mode développement) :
claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases
DuckDB local (Lecture seule) :
claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb
MotherDuck (Lecture-écriture) :
claude mcp add --scope user motherduck --transport stdio --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-write
Commandes CLI Codex
DuckDB en mémoire (Mode développement) :
codex mcp add duckdb -- uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases
DuckDB local (Lecture seule) :
codex mcp add duckdb -- uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb
MotherDuck (Lecture-écriture) :
codex mcp add motherduck --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-write
Commandes CLI Gemini
DuckDB en mémoire (Mode développement) :
gemini mcp add -s user duckdb uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases
DuckDB local (Lecture seule) :
gemini mcp add -s user duckdb uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb
MotherDuck (Lecture-écriture) :
gemini mcp add -s user -e motherduck_token=YOUR_TOKEN motherduck uvx mcp-server-motherduck --db-path md: --read-write
Configuration JSON manuelle pour Kiro
Ajoutez ce qui suit à votre fichier de configuration MCP Kiro (~/.kiro/settings/mcp.json pour global, ou .kiro/settings/mcp.json pour le périmètre du projet). Consultez la documentation MCP de Kiro pour plus de détails.
DuckDB en mémoire (Mode développement) :
{
"mcpServers": {
"DuckDB (in-memory, r/w)": {
"command": "uvx",
"args": ["mcp-server-motherduck", "--db-path", ":memory:", "--read-write", "--allow-switch-databases"]
}
}
}
MotherDuck (Lecture-écriture) :
{
"mcpServers": {
"MotherDuck (local, r/w)": {
"command": "uvx",
"args": ["mcp-server-motherduck", "--db-path", "md:", "--read-write"],
"env": {
"motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
}
}
}
}
Outils
| Outil | Description | Entrées requises | Entrées optionnelles |
|---|---|---|---|
execute_query | Exécuter une requête SQL (dialecte DuckDB) | sql | - |
list_databases | Lister toutes les bases de données (utile pour MotherDuck ou plusieurs BDD attachées) | - | - |
list_tables | Lister les tables et les vues | - | database, schema |
list_columns | Lister les colonnes d'une table/vue | table | database, schema |
switch_database_connection* | Basculer vers une autre base de données | path | create_if_not_exists |
*Nécessite le drapeau --allow-switch-databases
Tous les outils renvoient du JSON. Les résultats sont limités à 1024 lignes / 50 000 caractères par défaut (configurable via --max-rows, --max-chars).
Sécurisation pour la production
Lorsque vous donnez à des tiers l'accès à un serveur MCP auto-hébergé, le mode lecture seule seul n'est pas suffisant — il permet toujours l'accès au système de fichiers local, la modification des paramètres DuckDB et d'autres opérations potentiellement sensibles.
Pour les déploiements en production avec accès tiers, nous recommandons MotherDuck Remote MCP — aucune configuration, capable de lecture-écriture, et hébergé par MotherDuck.
Auto-hébergement de MotherDuck MCP : Forkez ce dépôt et personnalisez-le selon vos besoins. Utilisez un compte de service avec des jetons de lecture à l'échelle et activez le mode SaaS pour restreindre l'accès aux fichiers locaux.
Auto-hébergement de DuckDB MCP : Utilisez --init-sql pour appliquer les paramètres de sécurité. Consultez le guide de sécurisation de DuckDB pour les options disponibles.
Docker
Construisez et exécutez le serveur avec HTTP Streamable sur le port 8000 (par défaut, une base DuckDB en mémoire) :
docker build -t mcp-server-motherduck .
docker run --rm -p 8000:8000 mcp-server-motherduck
Connectez-vous à MotherDuck en passant un jeton et en remplaçant la commande :
docker run --rm -p 8000:8000 \
-e motherduck_token="$MOTHERDUCK_TOKEN" \
mcp-server-motherduck --transport http --db-path md:
Le point de terminaison MCP est disponible à l'adresse http://localhost:8000/mcp. Les drapeaux CLI et les variables d'environnement ci-dessous s'appliquent toujours.
Paramètres de ligne de commande
| Paramètre | Valeur par défaut | Description |
|---|---|---|
--db-path | :memory: | Chemin de la base de données : fichier local (absolu), md: (MotherDuck), ou URL s3:// |
--motherduck-token | variable d'env motherduck_token | Jeton d'accès MotherDuck |
--read-write | False | Activer l'accès en écriture |
--motherduck-saas-mode | False | Mode SaaS MotherDuck (restreint l'accès local) |
--allow-switch-databases | False | Activer l'outil switch_database_connection |
--max-rows | 1024 | Nombre maximum de lignes retournées |
--max-chars | 50000 | Nombre maximum de caractères retournés |
--query-timeout | -1 | Délai d'expiration de la requête en secondes (-1 = désactivé) |
--init-sql | None | SQL à exécuter au démarrage |
--motherduck-connection-parameters | session_hint=mcp&dbinstance_inactivity_ttl=0s | Paramètres supplémentaires de la chaîne de connexion MotherDuck (paires key=value séparées par &) |
--ephemeral-connections | True | Utiliser des connexions temporaires pour les fichiers locaux en lecture seule |
--transport | stdio | Type de transport : stdio ou http |
--stateless-http | False | Pour la compatibilité de protocole uniquement (par exemple avec AWS Bedrock AgentCore Runtime). Le serveur maintient toujours un état global via le DatabaseClient partagé. |
--port | 8000 | Port pour le transport HTTP |
--host | 127.0.0.1 | Hôte pour le transport HTTP |
Variables d'environnement
| Variable | Description |
|---|---|
motherduck_token ou MOTHERDUCK_TOKEN | Jeton d'accès MotherDuck (alternative à --motherduck-token) |
HOME | Utilisé par DuckDB pour les extensions et la configuration. Remplacer par --home-dir s'il n'est pas défini. |
AWS_ACCESS_KEY_ID | Clé d'accès AWS pour les connexions aux bases de données S3 |
AWS_SECRET_ACCESS_KEY | Clé secrète AWS pour les connexions aux bases de données S3 |
AWS_SESSION_TOKEN | Jeton de session AWS pour les informations d'identification temporaires (rôles IAM, SSO, profils d'instance EC2) |
AWS_DEFAULT_REGION | Région AWS pour les connexions S3 |
AWS_ENDPOINT | Point de terminaison AWS pour les connexions S3 |
Dépannage
spawn uvx ENOENT: Spécifiez le chemin complet versuvx(exécutezwhich uvxpour le trouver)- Fichier verrouillé : Assurez-vous que
--ephemeral-connectionsest activé (par défaut : true) et que vous n'êtes pas connecté en mode lecture-écriture
Ressources
- Documentation MotherDuck MCP
- Close the Loop : Pipelines de données plus rapides avec MCP, DuckDB & IA (Blog)
- Pipelines de données plus rapides avec MCP et DuckDB (YouTube)
Développement
Pour exécuter à partir des sources :
{
"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>"
}
}
}
}
Processus de publication
- Exécutez l'action GitHub
Release New Version - Saisissez la version au format
MAJOR.MINOR.PATCH - Le workflow incrémente la version, publie sur PyPI/le registre MCP et crée la version GitHub avec le package MCPB
Licence
Licence MIT - voir le fichier LICENSE.
mcp-name: io.github.motherduckdb/mcp-server-motherduck