MotherDuck

officiel

Interrogez 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_query avec 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_tables et list_columns pour 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

MotherDuck / DuckDB Local MCP Server

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 distantMCP local (ce dépôt)
HébergementHébergé par MotherDuckS'exécute localement / auto-hébergé
ConfigurationZéro configurationNécessite une installation locale
AccèsLecture-écriture prise en chargeLecture-é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

ClientEmplacement de configurationInstallation en un clic
Claude DesktopParamètres → Développeur → Modifier la configuration.mcpb (MCP Bundle)
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 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

OutilDescriptionEntrées requisesEntrées facultatives
execute_queryExécuter une requête SQL (dialecte DuckDB)sql-
list_databasesLister toutes les bases de données (utile pour MotherDuck ou plusieurs bases attachées)--
list_tablesLister les tables et 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 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ètreDéfautDescription
--db-path:memory:Chemin de la base : fichier local (absolu), md: (MotherDuck) ou URL s3://
--motherduck-tokenvariable d'environnement 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 maximal de lignes renvoyées
--max-chars50000Nombre maximal de caractères renvoyé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 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 compatibilité de protocole uniquement (par ex. avec AWS Bedrock AgentCore Runtime). Le serveur maintient toujours l'é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. Remplacez avec --home-dir s'il n'est pas défini.
AWS_ACCESS_KEY_IDClé d'accès AWS pour les connexions de bases S3
AWS_SECRET_ACCESS_KEYClé secrète AWS pour les connexions de bases S3
AWS_SESSION_TOKENJeton de session AWS pour les identifiants temporaires (rôles IAM, SSO, profils d'instances 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é (défaut : true) et que vous n'êtes pas connecté en mode lecture-écriture

Ressources

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

  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 publication GitHub avec le package MCPB

Licence

Licence MIT - voir le fichier LICENSE.

mcp-name: io.github.motherduckdb/mcp-server-motherduck