MotherDuck

officiel

Interrogez 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 de list_tables et list_columns.
  • Basculer entre les connexions de base de données — utilisez switch_database_connection pour 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-rows et --max-chars pour limiter les ensembles de résultats renvoyés à l’assistant.

Documentation

MotherDuck / DuckDB Local MCP Server

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 distantMCP local (ce dépôt)
HébergementHébergé par MotherDuckExécuté localement/auto-hébergé
ConfigurationAucune configurationNécessite une installation locale
AccèsLecture-écriture prise en chargeLecture-é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-write pour 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-path est passée de md: à :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

ClientEmplacement de la configurationInstallation en un clic
Claude DesktopParamètres → Développeur → Modifier la configuration.mcpb (Bundle MCP)
Claude CodeUtilisez les commandes CLI ci-dessous-
Codex CLIUtilisez les commandes CLI ci-dessous ou ~/.codex/config.toml-
Gemini CLIUtilisez les commandes CLI ci-dessous ou ~/.gemini/settings.json-
CursorParamètres → MCP → Ajouter un nouveau serveur MCP globalInstall in Cursor
VS CodeCtrl+Shift+P → "Préférences : Ouvrir les paramètres utilisateur (JSON)"Install with UV in VS Code
Kiro~/.kiro/settings/mcp.json (global) ou .kiro/settings/mcp.json (projet)Add to Kiro

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

OutilDescriptionEntrées requisesEntrées optionnelles
execute_queryExécuter une requête SQL (dialecte DuckDB)sql-
list_databasesLister toutes les bases de données (utile pour MotherDuck ou plusieurs BDD attachées)--
list_tablesLister les tables et les vues-database, schema
list_columnsLister les colonnes d'une table/vuetabledatabase, schema
switch_database_connection*Basculer vers une autre base de donnéespathcreate_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ètreValeur par défautDescription
--db-path:memory:Chemin de la base de données : fichier local (absolu), md: (MotherDuck), ou URL s3://
--motherduck-tokenvariable d'env motherduck_tokenJeton d'accès MotherDuck
--read-writeFalseActiver l'accès en écriture
--motherduck-saas-modeFalseMode SaaS MotherDuck (restreint l'accès local)
--allow-switch-databasesFalseActiver l'outil switch_database_connection
--max-rows1024Nombre maximum de lignes retournées
--max-chars50000Nombre maximum de caractères retournés
--query-timeout-1Délai d'expiration de la requête en secondes (-1 = désactivé)
--init-sqlNoneSQL à exécuter au démarrage
--motherduck-connection-parameterssession_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-connectionsTrueUtiliser des connexions temporaires pour les fichiers locaux en lecture seule
--transportstdioType de transport : stdio ou http
--stateless-httpFalsePour la compatibilité de protocole uniquement (par exemple avec AWS Bedrock AgentCore Runtime). Le serveur maintient toujours un état global via le DatabaseClient partagé.
--port8000Port pour le transport HTTP
--host127.0.0.1Hôte pour le transport HTTP

Variables d'environnement

VariableDescription
motherduck_token ou MOTHERDUCK_TOKENJeton d'accès MotherDuck (alternative à --motherduck-token)
HOMEUtilisé par DuckDB pour les extensions et la configuration. Remplacer par --home-dir s'il n'est pas défini.
AWS_ACCESS_KEY_IDClé d'accès AWS pour les connexions aux bases de données S3
AWS_SECRET_ACCESS_KEYClé secrète AWS pour les connexions aux bases de données S3
AWS_SESSION_TOKENJeton de session AWS pour les informations d'identification temporaires (rôles IAM, SSO, profils d'instance EC2)
AWS_DEFAULT_REGIONRégion AWS pour les connexions S3
AWS_ENDPOINTPoint de terminaison AWS pour les connexions S3

Dépannage

  • spawn uvx ENOENT : Spécifiez le chemin complet vers uvx (exécutez which uvx pour le trouver)
  • Fichier verrouillé : Assurez-vous que --ephemeral-connections est activé (par défaut : true) et que vous n'êtes pas connecté en mode lecture-écriture

Ressources

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

  1. Exécutez l'action GitHub Release New Version
  2. Saisissez la version au format MAJOR.MINOR.PATCH
  3. 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