Servidor FastMCP para MongoDB que permite que agentes de IA interajam com bancos MongoDB de forma dinâmica e segura.
- Conexão Dinâmica: Não requer configuração prévia de variáveis de ambiente
- Verificação de Conexão: Todas as tools verificam se há conexão ativa antes de executar
- Interface Intuitiva: A IA pode configurar a conexão conforme necessário
- Operações Completas: Suporte a CRUD, índices, agregações e estatísticas
- Tratamento de Erros: Mensagens claras e sugestões de ação
- Sistema de Decorators: Registro automático de tools com injeção de dependências
- Validação Robusta: Uso de Pydantic para validação de dados
- Logging Estruturado: Sistema de logging avançado com structlog
- Testes Completos: Suíte de testes com mocks e cobertura de 58%
- Scripts de Desenvolvimento: Automação completa do ambiente de desenvolvimento
A IA deve primeiro configurar a conexão com MongoDB usando a tool mongodb_configure_connection:
# Exemplo de uso pela IA
result = await mongodb_configure_connection(
host="localhost",
port=27017,
username="usuario",
password="senha",
auth_source="admin"
)Todas as outras tools verificam automaticamente se há uma conexão ativa. Se não houver, retornam uma mensagem clara indicando que é necessário configurar a conexão primeiro.
Após configurar a conexão, a IA pode usar todas as tools disponíveis:
- Databases: listar, criar, remover, obter informações
- Collections: listar, criar, remover, renomear, validar
- Documentos: inserir, buscar, atualizar, remover, listar
- Índices: criar, listar, remover
- Estatísticas: status do servidor, estatísticas do sistema
mongodb_configure_connection: Configura conexão com MongoDBmongodb_test_connection: Testa a conexão atualmongodb_get_connection_status: Obtém status da conexãomongodb_disconnect: Desconecta do MongoDB
mongodb_list_databases: Lista todos os databasesmongodb_create_database: Cria um novo databasemongodb_drop_database: Remove um databasemongodb_get_database_info: Obtém informações de um database
mongodb_list_collections: Lista collections de um databasemongodb_create_collection: Cria uma nova collectionmongodb_drop_collection: Remove uma collectionmongodb_get_collection_info: Obtém informações de uma collectionmongodb_validate_collection: Valida integridade de uma collectionmongodb_count_documents: Conta documentos em uma collectionmongodb_aggregate: Executa pipeline de agregação
mongodb_list_documents: Lista documentos de uma collectionmongodb_get_document: Busca um documento específicomongodb_insert_document: Insere um novo documentomongodb_update_document: Atualiza um documento existentemongodb_delete_document: Remove um documento
mongodb_list_indexes: Lista índices de uma collectionmongodb_create_index: Cria um novo índicemongodb_drop_index: Remove um índice
mongodb_get_server_status: Obtém status do servidor MongoDBmongodb_get_system_stats: Obtém estatísticas do sistema
- Python: 3.8 ou superior
- MongoDB: 4.0 ou superior (para uso das tools)
- Sistema: Linux, macOS ou Windows
- Memória: Mínimo 512MB RAM
- Espaço: Mínimo 100MB em disco
- Clone o repositório
- Crie um ambiente virtual:
python -m venv venv source venv/bin/activate # Linux/Mac # ou venv\Scripts\activate # Windows
- Instale as dependências:
pip install -r requirements.txt
- Execute o servidor:
python -m src.main
Para usar o servidor MCP no Cursor, adicione a seguinte configuração ao seu arquivo de configuração:
{
"mcpServers": {
"mongodb": {
"command": "/caminho/para/seu/projeto/mongodb/start-mcp.sh"
}
}
}Exemplo para o projeto atual:
{
"mcpServers": {
"mongodb": {
"command": "/home/fabio/Documentos/work/codes/ai/mcp/mongodb/start-mcp.sh"
}
}
}Nota: Certifique-se de que o script start-mcp.sh tem permissões de execução:
chmod +x start-mcp.sh- Clone o repositório
- Execute o script de configuração:
./scripts/dev.sh up
- O script criará automaticamente:
- Ambiente virtual Python
- Instalação de todas as dependências
- Para executar o servidor:
./scripts/dev.sh run
O projeto inclui scripts úteis para desenvolvimento:
# Usar o helper de desenvolvimento
./scripts/dev.sh up # Configurar ambiente de desenvolvimento
./scripts/dev.sh test # Executar testes
./scripts/dev.sh lint # Verificar qualidade do código
./scripts/dev.sh format # Formatar código automaticamente
./scripts/dev.sh run # Executar servidor
./scripts/dev.sh debug # Executar servidor em modo debug
./scripts/dev.sh clean # Limpar ambiente completamente
# Usar comandos Make (alternativa)
make help # Mostrar todos os comandos disponíveis
make install-dev # Instalar dependências de desenvolvimento
make test # Executar testes com cobertura
make lint # Verificar qualidade do código
make format # Formatar código automaticamente
make run # Executar servidor
make clean # Limpar arquivos temporários- Configurar Conexão: A IA deve sempre começar configurando a conexão
- Verificar Status: Testar se a conexão está funcionando
- Executar Operações: Usar as tools conforme necessário
- Gerenciar Recursos: Desconectar quando terminar
# 1. Configurar conexão
connection_result = await mongodb_configure_connection(
host="mongodb.example.com",
port=27017,
username="admin",
password="secret123"
)
# 2. Verificar status
status = await mongodb_get_connection_status()
# 3. Listar databases
databases = await mongodb_list_databases()
# 4. Trabalhar com collections
collections = await mongodb_list_collections("meu_database")
# 5. Desconectar ao final
await mongodb_disconnect()- Sem Hardcoding: Nenhuma credencial é armazenada em código
- Conexão Dinâmica: Cada sessão pode usar credenciais diferentes
- Sanitização de Logs: Credenciais são automaticamente mascaradas nos logs
- Validação: Todas as operações são validadas antes da execução
- Isolamento: Conexões são isoladas por sessão
- Validação de Entrada: Uso de Pydantic para validação robusta
- Logging Seguro: Sistema de logging que protege informações sensíveis
O sistema fornece mensagens claras e sugestões de ação:
- Sem Conexão: Indica que é necessário configurar a conexão primeiro
- Erros de Autenticação: Sugere verificar credenciais
- Operações Falhadas: Explica o que deu errado e como corrigir
src/
├── tools/ # Tools MCP com sistema de decorators
│ ├── tools_connection.py # Gerenciamento de conexões
│ ├── tools_databases.py # Operações com databases
│ ├── tools_collections.py # Operações com collections
│ ├── tools_documents.py # Operações com documentos
│ ├── tools_indexes.py # Operações com índices
│ ├── tools_stats.py # Estatísticas do servidor
│ ├── decorators.py # Sistema de decorators
│ └── dependencies.py # Container de dependências
├── utils/ # Utilitários (conector, logger, segurança)
├── config/ # Configurações com Pydantic
├── core/ # Exceções e lógica central
├── models/ # Schemas Pydantic para validação
├── services/ # Camada de serviços
└── server.py # Servidor principal
- Crie o arquivo em
src/tools/ - Use o decorator
@mongodb_toolpara registro automático - Implemente a função com tratamento de erros adequado
- Use
DependencyContainerpara acessar dependências - A tool será registrada automaticamente no servidor
O projeto usa um sistema avançado de decorators para:
- Registro automático de tools
- Verificação de conexão automática
- Injeção de dependências centralizada
- Tratamento de erros consistente
# Verificar qualidade
make lint
# Formatar código
make format
# Executar testes
make test
# Verificar cobertura
make coverageO projeto inclui uma suíte completa de testes:
# Executar todos os testes
make test
# Executar testes específicos
make test-unit # Apenas testes unitários
make test-fast # Testes sem cobertura
# Executar testes com script
./scripts/dev.sh testCobertura de Testes:
- 103 testes executando com sucesso
- Testes unitários com mocks
- Fixtures para dados de teste
- Cobertura de código de 58%
- Relatórios HTML e XML
mcp>=1.10.1: Framework MCP basefastmcp: Biblioteca para criação de servidores MCPpymongo>=4.5.0: Driver MongoDB para Pythonpydantic>=2.0.0: Validação de dadosstructlog>=23.0.0: Logging estruturado
pytest>=7.0.0: Framework de testespytest-asyncio>=0.21.0: Suporte a testes assíncronospytest-cov>=4.0.0: Cobertura de testesblack>=23.0.0: Formatação de códigoflake8>=6.0.0: Lintingmypy>=1.0.0: Verificação de tiposisort>=5.12.0: Ordenação de imports
Contribuições são bem-vindas! Para contribuir:
- Fork o repositório
- Crie uma branch para sua feature
- Faça suas alterações seguindo as diretrizes de código
- Execute os testes e verificações de qualidade
- Crie um Pull Request
- Use docstrings em português brasileiro
- Siga o padrão de código (Black, isort, flake8)
- Adicione testes para novas funcionalidades
- Atualize a documentação quando necessário
# Configurar ambiente
./scripts/dev.sh up
# Verificar qualidade
make lint
# Executar testes
make test
# Formatar código
make formatMIT License
- Issues: Para bugs e features
- Documentação: Este README e código fonte
- Testes: Execute
make testpara verificar funcionamento