MotherDuck
oficialConsulte 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_querycom 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_tableselist_columnspara 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
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 Remoto | MCP Local (este repositório) | |
|---|---|---|
| Hospedagem | Hospedado pela MotherDuck | Executa localmente/auto-hospedado |
| Configuração | Zero configuração | Requer instalação local |
| Acesso | Leitura-escrita suportado | Leitura-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
| Cliente | Local da Configuração | Instalação com Um Clique |
|---|---|---|
| Claude Desktop | Configurações → Desenvolvedor → Editar Config | .mcpb (Pacote MCP) |
| Claude Code | Use os comandos CLI abaixo | - |
| Codex CLI | Use os comandos CLI abaixo ou ~/.codex/config.toml | - |
| Gemini CLI | Use os comandos CLI abaixo ou ~/.gemini/settings.json | - |
| Cursor | Configurações → MCP → Adicionar novo servidor MCP global | |
| VS Code | Ctrl+Shift+P → "Preferências: Abrir Configurações do Usuário (JSON)" | |
| Kiro | ~/.kiro/settings/mcp.json (global) ou .kiro/settings/mcp.json (projeto) |
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
| Ferramenta | Descrição | Entradas Obrigatórias | Entradas Opcionais |
|---|---|---|---|
execute_query | Executar consulta SQL (dialeto DuckDB) | sql | - |
list_databases | Listar todos os bancos de dados (útil para MotherDuck ou múltiplos bancos anexados) | - | - |
list_tables | Listar tabelas e visões | - | database, schema |
list_columns | Listar colunas de uma tabela/visão | table | database, schema |
switch_database_connection* | Alternar para um banco de dados diferente | path | create_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âmetro | Padrão | Descrição |
|---|---|---|
--db-path | :memory: | Caminho do banco de dados: arquivo local (absoluto), md: (MotherDuck) ou URL s3:// |
--motherduck-token | variável de ambiente motherduck_token | Token de acesso do MotherDuck |
--read-write | False | Habilitar acesso de escrita |
--motherduck-saas-mode | False | Modo SaaS do MotherDuck (restringe acesso local) |
--allow-switch-databases | False | Habilitar ferramenta switch_database_connection |
--max-rows | 1024 | Máximo de linhas retornadas |
--max-chars | 50000 | Máximo de caracteres retornados |
--query-timeout | -1 | Tempo limite de consulta em segundos (-1 = desabilitado) |
--init-sql | None | SQL para executar na inicialização |
--motherduck-connection-parameters | session_hint=mcp&dbinstance_inactivity_ttl=0s | Parâmetros adicionais da string de conexão do MotherDuck (pares key=value separados por &) |
--ephemeral-connections | True | Usar conexões temporárias para arquivos locais somente leitura |
--transport | stdio | Tipo de transporte: stdio ou http |
--stateless-http | False | Apenas para compatibilidade de protocolo (ex.: com AWS Bedrock AgentCore Runtime). O servidor ainda mantém estado global via o DatabaseClient compartilhado. |
--port | 8000 | Porta para transporte HTTP |
--host | 127.0.0.1 | Host para transporte HTTP |
Variáveis de Ambiente
| Variável | Descrição |
|---|---|
motherduck_token ou MOTHERDUCK_TOKEN | Token de acesso do MotherDuck (alternativa ao --motherduck-token) |
HOME | Usado pelo DuckDB para extensões e configuração. Substitua com --home-dir se não estiver definido. |
AWS_ACCESS_KEY_ID | Chave de acesso AWS para conexões de banco de dados S3 |
AWS_SECRET_ACCESS_KEY | Chave secreta AWS para conexões de banco de dados S3 |
AWS_SESSION_TOKEN | Token de sessão AWS para credenciais temporárias (funções IAM, SSO, perfis de instância EC2) |
AWS_DEFAULT_REGION | Região AWS para conexões S3 |
AWS_ENDPOINT | Endpoint AWS para conexões S3 |
Solução de Problemas
spawn uvx ENOENT: Especifique o caminho completo parauvx(executewhich uvxpara encontrá-lo)- Arquivo bloqueado: Certifique-se de que
--ephemeral-connectionsesteja ativado (padrão: true) e que você não esteja conectado em modo leitura-escrita
Recursos
- Documentação MCP do MotherDuck
- Feche o Ciclo: Pipelines de Dados Mais Rápidos com MCP, DuckDB & IA (Blog)
- Pipelines de Dados Mais Rápidos com MCP e DuckDB (YouTube)
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
- Execute a ação do GitHub
Release New Version - Insira a versão no formato
MAJOR.MINOR.PATCH - 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