MotherDuck MCP Server

oficial

Consulte e analise dados com MotherDuck e DuckDB local

Documentação

MotherDuck / DuckDB Local MCP Server

Servidor MCP Local DuckDB / MotherDuck

Análises 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 com arquivos DuckDB locais, bancos de dados em memória, bancos de dados hospedados no S3 e MotherDuck. Permite executar consultas SQL de leitura e escrita, navegar pelos catálogos de bancos 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 MCP Remoto MotherDuck

MCP Remoto vs Local

MCP RemotoMCP Local (este repositório)
HospedagemHospedado pela MotherDuckExecuta localmente/auto-hospedado
ConfiguraçãoConfiguração zeroRequer instalação local
AcessoLeitura e escrita suportadosLeitura e escrita suportados
Sistema de arquivos local-Consulta entre bancos de dados locais e remotos, ingestão/exportação de dados do/para o sistema de arquivos local

📝 Migrando da v0.x?

  • Somente leitura por padrão: O servidor agora executa em modo somente leitura por padrão. Adicione --read-write para habilitar acesso de escrita. Veja Protegendo para Produção.
  • Banco de dados padrão alterado: O padrão de --db-path mudou de md: para :memory:. Adicione --db-path md: explicitamente para MotherDuck.
  • Somente leitura no MotherDuck requer token de escalonamento de leitura: Conexões MotherDuck em modo somente leitura requerem um token de escalonamento de leitura. Tokens regulares requerem --read-write.

Início Rápido

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

Conectando ao DuckDB em Memória (Modo Dev)

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

Flexibilidade total sem restrições — acesso de leitura e 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 a um arquivo DuckDB específico em modo somente leitura. Não manterá o bloqueio do arquivo, sendo conveniente para uso simultâneo com uma conexão de escrita para o mesmo arquivo DuckDB. Você também pode conectar a arquivos DuckDB remotos no S3 usando s3://bucket/path.duckdb — veja Variáveis de Ambiente para autenticação S3. Se estiver considerando acesso de terceiros ao MCP, veja 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>"
      }
    }
  }
}

Veja 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 dificuldades.

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 Dev):

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 Dev):

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 Dev):

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). Veja a documentação MCP do Kiro para mais detalhes.

DuckDB em Memória (Modo Dev):

{
  "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_queryExecuta consulta SQL (dialeto DuckDB)sql-
list_databasesLista todos os bancos de dados (útil para MotherDuck ou múltiplos DBs anexados)--
list_tablesLista tabelas e visões-database, schema
list_columnsLista colunas de uma tabela/visãotabledatabase, schema
switch_database_connection*Alterna para um banco de dados diferentepathcreate_if_not_exists

*Requer a flag --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 conceder acesso de 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 em produção com acesso de terceiros, recomendamos o MCP Remoto MotherDuck — configuração zero, capacidade de leitura-escrita e hospedado pela MotherDuck.

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

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

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-tokenmotherduck_token variável de ambienteToken de acesso MotherDuck
--read-writeFalseHabilita acesso de escrita
--motherduck-saas-modeFalseModo SaaS MotherDuck (restringe acesso local)
--allow-switch-databasesFalseHabilita a ferramenta switch_database_connection
--max-rows1024Máximo de linhas retornadas
--max-chars50000Máximo de caracteres retornados
--query-timeout-1Tempo limite da consulta em segundos (-1 = desabilitado)
--init-sqlNoneSQL a ser executado na inicialização
--motherduck-connection-parameterssession_hint=mcp&
dbinstance_inactivity_ttl=0s
Parâmetros adicionais de string de conexão MotherDuck (pares key=value separados por &)
--ephemeral-connectionsTrueUsa 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 MotherDuck (alternativa a --motherduck-token)
HOMEUsado pelo DuckDB para extensões e configuração. Sobrescreva 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 está ativado (padrão: true) e que você não está 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 GitHub Action 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 no GitHub com o pacote MCPB

Licença

Licença MIT - veja o arquivo LICENSE.

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