MotherDuck

oficial

Consulta y analiza datos con MotherDuck y DuckDB local.

¿Qué puedes hacer con Mother Duck MCP?

  • Ejecutar consultas SQL contra DuckDB o MotherDuck — pídele a tu asistente que ejecute SQL analítico mediante execute_query, con soporte para operaciones de solo lectura y opcionalmente de escritura.
  • Explorar esquemas de bases de datos — lista las bases de datos disponibles con list_databases, luego profundiza en tablas y columnas usando list_tables y list_columns.
  • Cambiar entre conexiones de bases de datos — usa switch_database_connection para moverte entre archivos locales de DuckDB, instancias en memoria, bases de datos alojadas en S3 o MotherDuck en tiempo de ejecución.
  • Conectarse a MotherDuck para análisis en la nube — apunta el servidor a md: con un token para consultar y gestionar bases de datos de MotherDuck directamente.
  • Controlar el tamaño de la salida de las consultas — configura --max-rows y --max-chars para limitar los conjuntos de resultados devueltos al asistente.

Documentación

MotherDuck / DuckDB Local MCP Server

Servidor MCP Local de DuckDB / MotherDuck

Analítica SQL e ingeniería de datos para Asistentes de IA e IDEs.


Conecta asistentes de IA a tus datos usando el potente motor SQL analítico de DuckDB. Soporta conexión a archivos DuckDB locales, bases de datos en memoria, bases de datos alojadas en S3 y MotherDuck. Permite ejecutar consultas SQL de lectura y escritura, explorar catálogos de bases de datos y cambiar entre diferentes conexiones de base de datos sobre la marcha.

¿Buscas un servidor MCP remoto completamente gestionado para MotherDuck?Ir a la documentación del MCP Remoto de MotherDuck

MCP Remoto vs Local

MCP RemotoMCP Local (este repositorio)
AlojamientoAlojado por MotherDuckSe ejecuta localmente/autoalojado
ConfiguraciónSin configuraciónRequiere instalación local
AccesoLectura-escritura soportadaLectura-escritura soportada
Sistema de archivos local-Consulta entre bases de datos locales y remotas, ingesta de datos desde / exportación de datos al sistema de archivos local

📝 ¿Migrando desde v0.x?

  • Solo lectura por defecto: El servidor ahora se ejecuta en modo solo lectura por defecto. Añade --read-write para habilitar el acceso de escritura. Consulta Asegurando para Producción.
  • Base de datos por defecto cambiada: El valor por defecto de --db-path cambió de md: a :memory:. Añade --db-path md: explícitamente para MotherDuck.
  • El modo solo lectura de MotherDuck requiere token de escalado de lectura: Las conexiones a MotherDuck en modo solo lectura requieren un token de escalado de lectura. Los tokens regulares requieren --read-write.

Inicio Rápido

Prerrequisitos: Instala uv vía pip install uv o brew install uv

Conectando a DuckDB en Memoria (Modo Desarrollo)

{
  "mcpServers": {
    "DuckDB (in-memory, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", ":memory:", "--read-write", "--allow-switch-databases"]
    }
  }
}

Máxima flexibilidad sin restricciones — acceso de lectura-escritura y la capacidad de cambiar a cualquier base de datos (archivos locales, S3 o MotherDuck) en tiempo de ejecución.

Conectando a un Archivo DuckDB Local en Modo Solo Lectura

{
  "mcpServers": {
    "DuckDB (read-only)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", "/absolute/path/to/your.duckdb"]
    }
  }
}

Se conecta a un archivo DuckDB específico en modo solo lectura. No retendrá el bloqueo del archivo, por lo que es conveniente usarlo junto con una conexión de escritura al mismo archivo DuckDB. También puedes conectarte a archivos DuckDB remotos en S3 usando s3://bucket/path.duckdb — consulta Variables de Entorno para la autenticación de S3. Si estás considerando el acceso de terceros al MCP, consulta Asegurando para Producción.

Conectando a MotherDuck en Modo Lectura-Escritura

{
  "mcpServers": {
    "MotherDuck (local, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", "md:", "--read-write"],
      "env": {
        "motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
      }
    }
  }
}

Consulta Parámetros de Línea de Comandos para más opciones, Asegurando para Producción para guías de despliegue, y Solución de Problemas si encuentras incidencias.

Configuración del Cliente

ClienteUbicación de ConfiguraciónInstalación en Un Clic
Claude DesktopAjustes → Desarrollador → Editar Configuración.mcpb (Paquete MCP)
Claude CodeUsa los comandos CLI de abajo-
Codex CLIUsa los comandos CLI de abajo o ~/.codex/config.toml-
Gemini CLIUsa los comandos CLI de abajo o ~/.gemini/settings.json-
CursorAjustes → MCP → Añadir nuevo servidor MCP globalInstall in Cursor
VS CodeCtrl+Shift+P → "Preferencias: Abrir Configuración de Usuario (JSON)"Install with UV in VS Code
Kiro~/.kiro/settings/mcp.json (global) o .kiro/settings/mcp.json (proyecto)Add to Kiro

Cualquier cliente compatible con MCP puede usar este servidor. Añade la configuración JSON de Inicio Rápido al archivo de configuración MCP de tu cliente. Consulta la documentación de tu cliente para la ubicación del archivo de configuración.

Comandos CLI de Claude Code

DuckDB en Memoria (Modo Desarrollo):

claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases

DuckDB Local (Solo Lectura):

claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb

MotherDuck (Lectura-Escritura):

claude mcp add --scope user motherduck --transport stdio --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-write
Comandos CLI de Codex

DuckDB en Memoria (Modo Desarrollo):

codex mcp add duckdb -- uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases

DuckDB Local (Solo Lectura):

codex mcp add duckdb -- uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb

MotherDuck (Lectura-Escritura):

codex mcp add motherduck --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-write
Comandos CLI de Gemini

DuckDB en Memoria (Modo Desarrollo):

gemini mcp add -s user duckdb uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases

DuckDB Local (Solo Lectura):

gemini mcp add -s user duckdb uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb

MotherDuck (Lectura-Escritura):

gemini mcp add -s user -e motherduck_token=YOUR_TOKEN motherduck uvx mcp-server-motherduck --db-path md: --read-write
Configuración JSON manual de Kiro

Añade lo siguiente a tu archivo de configuración MCP de Kiro (~/.kiro/settings/mcp.json para global, o .kiro/settings/mcp.json para ámbito de proyecto). Consulta la documentación de Kiro MCP para más detalles.

DuckDB en Memoria (Modo Desarrollo):

{
  "mcpServers": {
    "DuckDB (in-memory, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", ":memory:", "--read-write", "--allow-switch-databases"]
    }
  }
}

MotherDuck (Lectura-Escritura):

{
  "mcpServers": {
    "MotherDuck (local, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", "md:", "--read-write"],
      "env": {
        "motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
      }
    }
  }
}

Herramientas

HerramientaDescripciónEntradas RequeridasEntradas Opcionales
execute_queryEjecutar consulta SQL (dialecto DuckDB)sql-
list_databasesListar todas las bases de datos (útil para MotherDuck o múltiples DBs adjuntas)--
list_tablesListar tablas y vistas-database, schema
list_columnsListar columnas de una tabla/vistatabledatabase, schema
switch_database_connection*Cambiar a una base de datos diferentepathcreate_if_not_exists

*Requiere el flag --allow-switch-databases

Todas las herramientas devuelven JSON. Los resultados están limitados a 1024 filas / 50,000 caracteres por defecto (configurable vía --max-rows, --max-chars).

Asegurando para Producción

Al dar acceso a terceros a un servidor MCP autoalojado, el modo solo lectura por sí solo no es suficiente — aún permite el acceso al sistema de archivos local, cambiar configuraciones de DuckDB y otras operaciones potencialmente sensibles.

Para despliegues en producción con acceso de terceros, recomendamos MotherDuck MCP Remoto — sin configuración, con capacidad de lectura-escritura y alojado por MotherDuck.

Autoalojando MotherDuck MCP: Haz un fork de este repositorio y personalízalo según sea necesario. Usa una cuenta de servicio con tokens de escalado de lectura y habilita el modo SaaS para restringir el acceso a archivos locales.

Autoalojando DuckDB MCP: Usa --init-sql para aplicar configuraciones de seguridad. Consulta la guía de seguridad de DuckDB para las opciones disponibles.

Docker

Construye y ejecuta el servidor con HTTP Transmisible en el puerto 8000 (por defecto usa un DuckDB en memoria):

docker build -t mcp-server-motherduck .
docker run --rm -p 8000:8000 mcp-server-motherduck

Conéctate a MotherDuck pasando un token y sobrescribiendo el comando:

docker run --rm -p 8000:8000 \
  -e motherduck_token="$MOTHERDUCK_TOKEN" \
  mcp-server-motherduck --transport http --db-path md:

El endpoint MCP está disponible en http://localhost:8000/mcp. Los flags de CLI y variables de entorno de abajo siguen siendo aplicables.

Parámetros de Línea de Comandos

ParámetroPor DefectoDescripción
--db-path:memory:Ruta de la base de datos: archivo local (absoluta), md: (MotherDuck), o URL s3://
--motherduck-tokenvariable de entorno motherduck_tokenToken de acceso de MotherDuck
--read-writeFalseHabilitar acceso de escritura
--motherduck-saas-modeFalseModo SaaS de MotherDuck (restringe el acceso local)
--allow-switch-databasesFalseHabilitar la herramienta switch_database_connection
--max-rows1024Máximo de filas devueltas
--max-chars50000Máximo de caracteres devueltos
--query-timeout-1Tiempo de espera de consulta en segundos (-1 = deshabilitado)
--init-sqlNoneSQL a ejecutar al inicio
--motherduck-connection-parameterssession_hint=mcp&
dbinstance_inactivity_ttl=0s
Parámetros adicionales de cadena de conexión de MotherDuck (pares key=value separados por &)
--ephemeral-connectionsTrueUsar conexiones temporales para archivos locales de solo lectura
--transportstdioTipo de transporte: stdio o http
--stateless-httpFalseSolo para compatibilidad de protocolo (ej. con AWS Bedrock AgentCore Runtime). El servidor aún mantiene el estado global a través del DatabaseClient compartido.
--port8000Puerto para transporte HTTP
--host127.0.0.1Host para transporte HTTP

Variables de Entorno

VariableDescripción
motherduck_token o MOTHERDUCK_TOKENToken de acceso de MotherDuck (alternativa a --motherduck-token)
HOMEUsado por DuckDB para extensiones y configuración. Sobrescribir con --home-dir si no está configurado.
AWS_ACCESS_KEY_IDClave de acceso AWS para conexiones a bases de datos S3
AWS_SECRET_ACCESS_KEYClave secreta AWS para conexiones a bases de datos S3
AWS_SESSION_TOKENToken de sesión AWS para credenciales temporales (roles IAM, SSO, perfiles de instancia EC2)
AWS_DEFAULT_REGIONRegión AWS para conexiones S3
AWS_ENDPOINTEndpoint AWS para conexiones S3

Solución de Problemas

  • spawn uvx ENOENT: Especifica la ruta completa a uvx (ejecuta which uvx para encontrarlo)
  • Archivo bloqueado: Asegúrate de que --ephemeral-connections esté activado (por defecto: true) y de que no estés conectado en modo lectura-escritura

Recursos

Desarrollo

Para ejecutar desde el código fuente:

{
  "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>"
      }
    }
  }
}

Proceso de Lanzamiento

  1. Ejecuta la GitHub Action Release New Version
  2. Introduce la versión en formato MAJOR.MINOR.PATCH
  3. El flujo de trabajo incrementa la versión, publica en PyPI/registro MCP y crea el lanzamiento en GitHub con el paquete MCPB

Licencia

Licencia MIT - consulta el archivo LICENSE.

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