MotherDuck

oficial

Consulte e analise dados com MotherDuck e DuckDB local

O que você pode fazer com MotherDuck MCP?

  • Executar análises SQL — Peça ao seu assistente para consultar arquivos DuckDB locais, bancos de dados em memória ou MotherDuck usando execute_query com suporte completo ao dialeto SQL do DuckDB.

  • Explorar a estrutura do banco de dados — Peça ao seu assistente para listar bancos de dados, tabelas e colunas usando list_databases, list_tables e list_columns para entender o esquema dos seus dados.

  • Alternar conexões de banco de dados — Instrua seu assistente a alternar entre arquivos locais, bancos de dados hospedados em S3 ou MotherDuck em tempo real via switch_database_connection (requer a flag --allow-switch-databases).

  • Escrever e modificar dados — Ative o modo leitura-escrita para permitir que seu assistente insira, atualize ou exclua registros diretamente nos bancos de dados conectados.

  • Ingerir e exportar dados — Use o servidor para consultar bancos de dados locais e remotos, ingerindo dados de ou exportando para o seu sistema de arquivos local.

Servidor MCP hospedado

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

Instala no Claude Code, Codex, Cursor e outros

Documentação

MotherDuck / DuckDB Local MCP Server

DuckDB / MotherDuck Local MCP Server

Análise SQL e engenharia de dados para Assistentes de IA e IDEs.


Conecte assistentes de IA aos seus dados usando o poderoso motor SQL analítico do DuckDB. Suporta conexão a arquivos DuckDB locais, bancos de dados em memória, bancos de dados hospedados em S3 e MotherDuck. Permite executar consultas SQL de leitura e escrita, navegar pelos catálogos de banco de dados e alternar entre diferentes conexões de banco de dados em tempo real.

Procurando um servidor MCP remoto totalmente gerenciado para MotherDuck? → Acesse a documentação do MotherDuck Remote MCP

MCP Remoto vs Local

MCP RemotoMCP Local (este repositório)
HospedagemHospedado pela MotherDuckExecuta localmente/auto-hospedado
ConfiguraçãoZero configuraçãoRequer instalação local
AcessoLeitura-escrita suportadoLeitura-escrita suportado
Sistema de arquivos local-Consulte bancos de dados locais e remotos, ingira dados de / exporte dados para o sistema de arquivos local

Início Rápido

Pré-requisitos: Instale uv via pip install uv ou brew install uv

Conectando ao DuckDB em Memória (Modo de Desenvolvimento)

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

Flexibilidade total sem proteções — acesso de leitura-escrita e a capacidade de alternar para qualquer banco de dados (arquivos locais, S3 ou MotherDuck) em tempo de execução.

Conectando a um Arquivo DuckDB Local em Modo Somente Leitura

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

Conecta-se a um arquivo DuckDB específico em modo somente leitura. Não mantém o bloqueio do arquivo, sendo conveniente para uso junto a uma conexão de escrita no mesmo arquivo DuckDB. Você também pode conectar-se a arquivos DuckDB remotos em S3 usando s3://bucket/path.duckdb — consulte Variáveis de Ambiente para autenticação S3. Se você está considerando acesso de terceiros ao MCP, consulte Protegendo para Produção.

Conectando ao MotherDuck em Modo Leitura-Escrita

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

Consulte Parâmetros de Linha de Comando para mais opções, Protegendo para Produção para orientações de implantação e Solução de Problemas se encontrar problemas.

Configuração do Cliente

ClienteLocal da ConfiguraçãoInstalação com Um Clique
Claude DesktopConfigurações → Desenvolvedor → Editar Config.mcpb (Pacote MCP)
Claude CodeUse os comandos CLI abaixo-
Codex CLIUse os comandos CLI abaixo ou ~/.codex/config.toml-
Gemini CLIUse os comandos CLI abaixo ou ~/.gemini/settings.json-
CursorConfigurações → MCP → Adicionar novo servidor MCP globalInstall in Cursor
VS CodeCtrl+Shift+P → "Preferências: Abrir Configurações do Usuário (JSON)"Install with UV in VS Code
Kiro~/.kiro/settings/mcp.json (global) ou .kiro/settings/mcp.json (projeto)Add to Kiro

Qualquer cliente compatível com MCP pode usar este servidor. Adicione a configuração JSON do Início Rápido ao arquivo de configuração MCP do seu cliente. Consulte a documentação do seu cliente para a localização do arquivo de configuração.

Comandos CLI do Claude Code

DuckDB em Memória (Modo de Desenvolvimento):

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

DuckDB Local (Somente Leitura):

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

MotherDuck (Leitura-Escrita):

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

DuckDB em Memória (Modo de Desenvolvimento):

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

DuckDB Local (Somente Leitura):

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

MotherDuck (Leitura-Escrita):

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

DuckDB em Memória (Modo de Desenvolvimento):

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

DuckDB Local (Somente Leitura):

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

MotherDuck (Leitura-Escrita):

gemini mcp add -s user -e motherduck_token=YOUR_TOKEN motherduck uvx mcp-server-motherduck --db-path md: --read-write
Configuração JSON manual do Kiro

Adicione o seguinte ao seu arquivo de configuração MCP do Kiro (~/.kiro/settings/mcp.json para global, ou .kiro/settings/mcp.json para escopo de projeto). Consulte a documentação MCP do Kiro para mais detalhes.

DuckDB em Memória (Modo de Desenvolvimento):

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

MotherDuck (Leitura-Escrita):

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

Ferramentas

FerramentaDescriçãoEntradas ObrigatóriasEntradas Opcionais
execute_queryExecutar consulta SQL (dialeto DuckDB)sql-
list_databasesListar todos os bancos de dados (útil para MotherDuck ou múltiplos bancos anexados)--
list_tablesListar tabelas e visões-database, schema
list_columnsListar colunas de uma tabela/visãotabledatabase, schema
switch_database_connection*Alternar para um banco de dados diferentepathcreate_if_not_exists

*Requer o sinalizador --allow-switch-databases

Todas as ferramentas retornam JSON. Os resultados são limitados a 1024 linhas / 50.000 caracteres por padrão (configurável via --max-rows, --max-chars).

Protegendo para Produção

Ao dar acesso a terceiros a um servidor MCP auto-hospedado, o modo somente leitura por si só não é suficiente — ele ainda permite acesso ao sistema de arquivos local, alteração de configurações do DuckDB e outras operações potencialmente sensíveis.

Para implantações de produção com acesso de terceiros, recomendamos o MotherDuck Remote MCP — zero configuração, com capacidade de leitura-escrita e hospedado pela MotherDuck.

Auto-hospedagem do MotherDuck MCP: Faça um fork deste repositório e personalize conforme necessário. Use uma conta de serviço com tokens de escala de leitura e habilite o modo SaaS para restringir o acesso a arquivos locais.

Auto-hospedagem do DuckDB MCP: Use --init-sql para aplicar configurações de segurança. Consulte o guia de Proteção do DuckDB para opções disponíveis.

Docker

Construa e execute o servidor com HTTP Streamable na porta 8000 (padrão para um DuckDB em memória):

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

Conecte-se ao MotherDuck passando um token e substituindo o comando:

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

O endpoint MCP está disponível em http://localhost:8000/mcp. Os sinalizadores de CLI e variáveis de ambiente abaixo ainda se aplicam.

Parâmetros de Linha de Comando

ParâmetroPadrãoDescrição
--db-path:memory:Caminho do banco de dados: arquivo local (absoluto), md: (MotherDuck) ou URL s3://
--motherduck-tokenvariável de ambiente motherduck_tokenToken de acesso do MotherDuck
--read-writeFalseHabilitar acesso de escrita
--motherduck-saas-modeFalseModo SaaS do MotherDuck (restringe acesso local)
--allow-switch-databasesFalseHabilitar ferramenta switch_database_connection
--max-rows1024Máximo de linhas retornadas
--max-chars50000Máximo de caracteres retornados
--query-timeout-1Tempo limite de consulta em segundos (-1 = desabilitado)
--init-sqlNoneSQL para executar na inicialização
--motherduck-connection-parameterssession_hint=mcp&
dbinstance_inactivity_ttl=0s
Parâmetros adicionais da string de conexão do MotherDuck (pares key=value separados por &)
--ephemeral-connectionsTrueUsar conexões temporárias para arquivos locais somente leitura
--transportstdioTipo de transporte: stdio ou http
--stateless-httpFalseApenas para compatibilidade de protocolo (ex.: com AWS Bedrock AgentCore Runtime). O servidor ainda mantém estado global via o DatabaseClient compartilhado.
--port8000Porta para transporte HTTP
--host127.0.0.1Host para transporte HTTP

Variáveis de Ambiente

VariávelDescrição
motherduck_token ou MOTHERDUCK_TOKENToken de acesso do MotherDuck (alternativa ao --motherduck-token)
HOMEUsado pelo DuckDB para extensões e configuração. Substitua com --home-dir se não estiver definido.
AWS_ACCESS_KEY_IDChave de acesso AWS para conexões de banco de dados S3
AWS_SECRET_ACCESS_KEYChave secreta AWS para conexões de banco de dados S3
AWS_SESSION_TOKENToken de sessão AWS para credenciais temporárias (funções IAM, SSO, perfis de instância EC2)
AWS_DEFAULT_REGIONRegião AWS para conexões S3
AWS_ENDPOINTEndpoint AWS para conexões S3

Solução de Problemas

  • spawn uvx ENOENT: Especifique o caminho completo para uvx (execute which uvx para encontrá-lo)
  • Arquivo bloqueado: Certifique-se de que --ephemeral-connections esteja ativado (padrão: true) e que você não esteja conectado em modo leitura-escrita

Recursos

Desenvolvimento

Para executar a partir do código-fonte:

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

Processo de Lançamento

  1. Execute a ação do GitHub Release New Version
  2. Insira a versão no formato MAJOR.MINOR.PATCH
  3. O fluxo de trabalho incrementa a versão, publica no PyPI/registro MCP e cria o lançamento do GitHub com o pacote MCPB

Licença

Licença MIT - consulte o arquivo LICENSE.

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