MotherDuck

oficial

Consulta y analiza datos con MotherDuck y DuckDB local.

¿Qué puedes hacer con MotherDuck MCP?

  • Ejecutar análisis SQL — Pídele a tu asistente que consulte archivos DuckDB locales, bases de datos en memoria o MotherDuck usando execute_query con soporte completo del dialecto SQL de DuckDB.

  • Explorar la estructura de la base de datos — Haz que tu asistente liste bases de datos, tablas y columnas usando list_databases, list_tables y list_columns para comprender el esquema de tus datos.

  • Cambiar conexiones de base de datos — Indícale a tu asistente que cambie entre archivos locales, bases de datos alojadas en S3 o MotherDuck sobre la marcha mediante switch_database_connection (requiere la bandera --allow-switch-databases).

  • Escribir y modificar datos — Habilita el modo de lectura-escritura para permitir que tu asistente inserte, actualice o elimine registros directamente en las bases de datos conectadas.

  • Ingerir y exportar datos — Usa el servidor para consultar bases de datos locales y remotas, ingiriendo datos desde o exportándolos a tu sistema de archivos local.

Servidor MCP alojado

npx add-mcp 'https://api.motherduck.com/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

MotherDuck / DuckDB Local MCP Server

DuckDB / MotherDuck Local MCP Server

Analítica SQL y 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. Admite 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 bases de datos sobre la marcha.

¿Buscas un servidor MCP remoto totalmente gestionado para MotherDuck? → Ir a la documentación de MotherDuck Remote MCP

MCP remoto vs local

MCP remotoMCP local (este repositorio)
AlojamientoAlojado por MotherDuckSe ejecuta localmente/autoalojado
ConfiguraciónSin configuraciónRequiere instalación local
AccesoLectura-escritura compatibleLectura-escritura compatible
Sistema de archivos local-Consulta entre bases de datos locales y remotas, ingiere datos desde / exporta datos al sistema de archivos local

Inicio rápido

Requisitos previos: Instala uv mediante pip install uv o brew install uv

Conexión a DuckDB en memoria (modo de desarrollo)

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

Flexibilidad total 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.

Conexión a un archivo DuckDB local en modo de 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 de solo lectura. No mantiene 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 acceso de terceros al MCP, consulta Asegurando para producción.

Conexión a MotherDuck en modo de 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ía de implementación y Solución de problemas si encuentras problemas.

Configuración del cliente

ClienteUbicación de configuraciónInstalación con un clic
Claude DesktopConfiguración → Desarrollador → Editar configuración.mcpb (MCP Bundle)
Claude CodeUsa los comandos CLI a continuación-
Codex CLIUsa los comandos CLI a continuación o ~/.codex/config.toml-
Gemini CLIUsa los comandos CLI a continuación o ~/.gemini/settings.json-
CursorConfiguración → 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 de 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 de 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 de 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 MCP de Kiro para más detalles.

DuckDB en memoria (modo de 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_queryEjecuta consultas SQL (dialecto DuckDB)sql-
list_databasesLista todas las bases de datos (útil para MotherDuck o múltiples BD adjuntas)--
list_tablesLista tablas y vistas-database, schema
list_columnsLista columnas de una tabla/vistatabledatabase, schema
switch_database_connection*Cambia a una base de datos diferentepathcreate_if_not_exists

*Requiere la bandera --allow-switch-databases

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

Asegurando para producción

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

Para implementaciones de producción con acceso de terceros, recomendamos MotherDuck Remote MCP — sin configuración, compatible con lectura-escritura y alojado por MotherDuck.

Autoalojamiento de 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.

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

Docker

Construye y ejecuta el servidor con Streamable HTTP en el puerto 8000 (por defecto usa 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. Las banderas CLI y las variables de entorno a continuación siguen aplicándose.

Parámetros de línea de comandos

ParámetroPredeterminadoDescripción
--db-path:memory:Ruta de la base de datos: archivo local (absoluto), md: (MotherDuck) o URL s3://
--motherduck-tokenvariable de entorno motherduck_tokenToken de acceso de MotherDuck
--read-writeFalseHabilita acceso de escritura
--motherduck-saas-modeFalseModo SaaS de MotherDuck (restringe acceso local)
--allow-switch-databasesFalseHabilita 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 para ejecutar al inicio
--motherduck-connection-parameterssession_hint=mcp&
dbinstance_inactivity_ttl=0s
Parámetros adicionales de la cadena de conexión de MotherDuck (pares key=value separados por &)
--ephemeral-connectionsTrueUsa conexiones temporales para archivos locales de solo lectura
--transportstdioTipo de transporte: stdio o http
--stateless-httpFalseSolo para compatibilidad de protocolo (p. ej., con AWS Bedrock AgentCore Runtime). El servidor aún mantiene estado global mediante el 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. Sobrescribe con --home-dir si no está configurado.
AWS_ACCESS_KEY_IDClave de acceso de AWS para conexiones de bases de datos S3
AWS_SECRET_ACCESS_KEYClave secreta de AWS para conexiones de bases de datos S3
AWS_SESSION_TOKENToken de sesión de AWS para credenciales temporales (roles IAM, SSO, perfiles de instancia EC2)
AWS_DEFAULT_REGIONRegión de AWS para conexiones S3
AWS_ENDPOINTEndpoint de 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 (predeterminado: true) y que no estés conectado en modo de 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 acción de GitHub Release New Version
  2. Ingresa 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 de GitHub con el paquete MCPB

Licencia

Licencia MIT - consulta el archivo LICENSE.

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