MotherDuck
officielInterrogez et analysez des données avec MotherDuck et DuckDB local.
Que pouvez-vous faire avec MotherDuck MCP ?
-
Exécuter des analyses SQL — Demandez à votre assistant d’interroger des fichiers DuckDB locaux, des bases de données en mémoire ou MotherDuck à l’aide de
execute_queryavec la prise en charge complète du dialecte SQL DuckDB. -
Explorer la structure de la base de données — Faites lister par votre assistant les bases de données, les tables et les colonnes à l’aide de
list_databases,list_tablesetlist_columnspour comprendre votre schéma de données. -
Changer de connexion à la base de données — Demandez à votre assistant de basculer à la volée entre des fichiers locaux, des bases de données hébergées sur S3 ou MotherDuck via
switch_database_connection(nécessite l’indicateur--allow-switch-databases). -
Écrire et modifier des données — Activez le mode lecture-écriture pour permettre à votre assistant d’insérer, de mettre à jour ou de supprimer des enregistrements directement dans les bases de données connectées.
-
Ingérer et exporter des données — Utilisez le serveur pour interroger des bases de données locales et distantes, en ingérant des données depuis ou en les exportant vers votre système de fichiers local.
Serveur MCP hébergé
npx add-mcp 'https://api.motherduck.com/mcp'S’installe dans Claude Code, Codex, Cursor et plus
Documentation
Serveur MCP local DuckDB / MotherDuck
Analytique SQL et ingénierie des données pour assistants IA et IDE.
Connectez les assistants IA à vos données grâce au puissant moteur SQL analytique de DuckDB. Prend en charge la connexion à des fichiers DuckDB locaux, des bases en mémoire, des bases 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 bases de données à la volée.
Vous cherchez un serveur MCP distant entièrement géré pour MotherDuck ? → Consultez la documentation MCP distante de MotherDuck
MCP distant vs MCP local
| MCP distant | MCP local (ce dépôt) | |
|---|---|---|
| Hébergement | Hébergé par MotherDuck | S'exécute localement / auto-hébergé |
| Configuration | Zéro configuration | Nécessite une installation locale |
| Accès | Lecture-écriture prise en charge | Lecture-écriture prise en charge |
| Système de fichiers local | - | Interrogez les bases locales et distantes, ingérez des données depuis / exportez des données vers le système de fichiers local |
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 (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 conserve pas le verrou de fichier, ce qui est pratique pour une utilisation parallèle à une connexion en écriture vers le 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>"
}
}
}
}
Consultez Paramètres de ligne de commande pour plus d'options, Sécurisation pour la production pour les recommandations de déploiement, et Dépannage en cas de problèmes.
Configuration du client
| Client | Emplacement de configuration | Installation en un clic |
|---|---|---|
| Claude Desktop | Paramètres → Développeur → Modifier la configuration | .mcpb (MCP Bundle) |
| 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 connaître 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 Kiro
Ajoutez ce qui suit à votre fichier de configuration MCP Kiro (~/.kiro/settings/mcp.json pour le global, ou .kiro/settings/mcp.json pour le 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 facultatives |
|---|---|---|---|
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 bases attachées) | - | - |
list_tables | Lister les tables et 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 accès à des tiers à un serveur MCP auto-hébergé, le mode lecture seule seul ne suffit pas — 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 — zéro configuration, lecture-écriture prise en charge, et hébergé par MotherDuck.
Auto-hébergement du MCP MotherDuck : Forkez ce dépôt et personnalisez-le selon vos besoins. Utilisez un compte de service avec des jetons de lecture évolutifs et activez le mode SaaS pour restreindre l'accès aux fichiers locaux.
Auto-hébergement du MCP DuckDB : Utilisez --init-sql pour appliquer les paramètres de sécurité. Consultez le guide de sécurisation DuckDB pour les options disponibles.
Docker
Construisez et exécutez le serveur avec Streamable HTTP sur le port 8000 (par défaut, 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 à 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 | Défaut | Description |
|---|---|---|
--db-path | :memory: | Chemin de la base : fichier local (absolu), md: (MotherDuck) ou URL s3:// |
--motherduck-token | variable d'environnement 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 maximal de lignes renvoyées |
--max-chars | 50000 | Nombre maximal de caractères renvoyé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 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 compatibilité de protocole uniquement (par ex. avec AWS Bedrock AgentCore Runtime). Le serveur maintient toujours l'é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. Remplacez avec --home-dir s'il n'est pas défini. |
AWS_ACCESS_KEY_ID | Clé d'accès AWS pour les connexions de bases S3 |
AWS_SECRET_ACCESS_KEY | Clé secrète AWS pour les connexions de bases S3 |
AWS_SESSION_TOKEN | Jeton de session AWS pour les identifiants temporaires (rôles IAM, SSO, profils d'instances 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é (défaut : true) et que vous n'êtes pas connecté en mode lecture-écriture
Ressources
- Documentation MCP MotherDuck
- Close the Loop : Des pipelines de données plus rapides avec MCP, DuckDB et IA (Blog)
- Des pipelines de données plus rapides avec MCP et DuckDB (YouTube)
Développement
Pour exécuter depuis la source :
{
"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 publication GitHub avec le package MCPB
Licence
Licence MIT - voir le fichier LICENSE.
mcp-name: io.github.motherduckdb/mcp-server-motherduck