Mongo-MCP
Um servidor MCP para interagir com um banco de dados MongoDB.
Documentação
Mongo-MCP
English | 简体中文
Um serviço Machine Chat Protocol (MCP) para operações com MongoDB. Este serviço fornece um conjunto abrangente de ferramentas que permitem que Modelos de Linguagem de Grande Porte (LLMs) interajam com bancos de dados MongoDB por meio de operações CRUD completas, tarefas administrativas e recursos avançados.
Requisitos
- Python 3.10 ou superior
- Um serviço de banco de dados MongoDB em execução
- Recomenda-se usar uv para executar o programa
🚀 Recursos
📊 Ferramentas de Gerenciamento de Banco de Dados
list_databases- Listar todos os bancos de dadoscreate_database- Criar novo banco de dadosdrop_database- Excluir banco de dadosget_database_stats- Obter estatísticas do banco de dados
📦 Ferramentas de Gerenciamento de Coleções
list_collections- Listar todas as coleções em um banco de dadoscreate_collection- Criar nova coleção (com configurações opcionais)drop_collection- Excluir coleçãorename_collection- Renomear coleçãoget_collection_stats- Obter estatísticas da coleção
📄 Operações CRUD de Documentos
insert_document- Inserir documento únicoinsert_many_documents- Inserir múltiplos documentos em lotefind_documents- Consultar documentos (suporta ordenação, projeção, limite)find_one_document- Consultar documento únicocount_documents- Contar documentos que correspondem à consultaupdate_document- Atualizar documentos (único ou em lote)replace_document- Substituir documentodelete_document- Excluir documentos (único ou em lote)
🔍 Ferramentas de Gerenciamento de Índices
list_indexes- Listar todos os índices de uma coleçãocreate_index- Criar índice regularcreate_text_index- Criar índice de busca de textocreate_compound_index- Criar índice compostodrop_index- Excluir índicereindex_collection- Reconstruir todos os índices de uma coleção
📈 Operações de Agregação
aggregate_documents- Executar operações de pipeline de agregaçãodistinct_values- Obter valores distintos para um campo
🔧 Ferramentas de Monitoramento e Administração
get_server_status- Obter status do servidor MongoDBget_replica_set_status- Obter status do conjunto de réplicasping_database- Testar conexão com o banco de dadostest_mongodb_connection- Teste de conexão abrangenteget_connection_details- Obter informações detalhadas de conexão
🛠️ Stack de Tecnologia
- Python: Linguagem de programação principal
- FastMCP: SDK Python do MCP para geração automática de definições de ferramentas
- PyMongo: Driver oficial do MongoDB para Python
- uv: Ferramenta moderna de gerenciamento de pacotes Python
Uso
Executar diretamente com uvx
uvx run mongo-mcp
O servidor usa o método de transporte stdio, tornando-o adequado para integração com clientes MCP que suportam este método de transporte.
Exemplo de Configuração no Cursor
Se você usa Cursor como seu ambiente de desenvolvimento, você pode adicionar a seguinte configuração ao seu arquivo .cursor/mcp.json para depuração local:
{
"mcpServers": {
"mongo-mcp": {
"command": "uvx",
"args": [
"mongo-mcp"
],
"env": {
"MONGODB_URI": "mongodb://localhost:27017",
"MONGODB_DEFAULT_DB": "your_database_name",
"LOG_LEVEL": "INFO"
}
}
}
}
Variáveis de Ambiente
Configuração Básica
MONGODB_URI: String de conexão MongoDB (padrão: "mongodb://localhost:27017")MONGODB_DEFAULT_DB: Nome padrão do banco de dados (opcional)
Configuração do Pool de Conexões
MONGODB_MIN_POOL_SIZE: Tamanho mínimo do pool de conexões (padrão: 0)MONGODB_MAX_POOL_SIZE: Tamanho máximo do pool de conexões (padrão: 100)MONGODB_MAX_IDLE_TIME_MS: Tempo máximo de inatividade em milissegundos (padrão: 30000)
Configuração de Timeout
MONGODB_SERVER_SELECTION_TIMEOUT_MS: Timeout de seleção do servidor (padrão: 30000)MONGODB_SOCKET_TIMEOUT_MS: Timeout do socket (padrão: 0 - sem timeout)MONGODB_CONNECT_TIMEOUT_MS: Timeout de conexão (padrão: 20000)
Configuração de Segurança
MONGODB_TLS_ENABLED: Habilitar conexão TLS (padrão: false)MONGODB_AUTH_SOURCE: Fonte de autenticação (padrão: admin)MONGODB_AUTH_MECHANISM: Mecanismo de autenticação (SCRAM-SHA-1, SCRAM-SHA-256, etc.)
Configurações de Desempenho
MONGODB_READ_PREFERENCE: Preferência de leitura (padrão: primary)MONGODB_WRITE_CONCERN_W: Preocupação de escrita (padrão: 1)MONGODB_READ_CONCERN_LEVEL: Nível de preocupação de leitura (padrão: local)
Configuração de Logging
LOG_LEVEL: Nível de logging (padrão: "INFO")- Valores disponíveis: DEBUG, INFO, WARNING, ERROR, CRITICAL
LOG_MAX_FILE_SIZE: Tamanho máximo do arquivo de log em bytes (padrão: 10MB)LOG_BACKUP_COUNT: Número de arquivos de log de backup (padrão: 5)
Flags de Recursos
ENABLE_DANGEROUS_OPERATIONS: Habilitar operações potencialmente perigosas (padrão: false)ENABLE_ADMIN_OPERATIONS: Habilitar operações administrativas (padrão: true)ENABLE_INDEX_OPERATIONS: Habilitar operações de índice (padrão: true)
Guia de Desenvolvimento
- Clone o repositório
git clone https://github.com/441126098/mongo-mcp.git
cd mongo-mcp
- Instale as dependências de desenvolvimento
# Using uv (recommended)
uv sync
# Or using pip
pip install -e ".[dev]"
- Execute os testes
uv run pytest tests/ -v
- Estrutura do Código
src/mongo_mcp/server.py: Implementação do servidor MCPsrc/mongo_mcp/db.py: Implementação das operações principais do MongoDBsrc/mongo_mcp/config.py: Gerenciamento de configuraçãosrc/mongo_mcp/tools/: Implementação das ferramentas MCPdatabase_tools.py: Gerenciamento de banco de dados e coleçõesdocument_tools.py: Operações CRUD de documentosindex_tools.py: Gerenciamento de índicesaggregation_tools.py: Operações de agregaçãoadmin_tools.py: Ferramentas administrativas e de monitoramento
src/mongo_mcp/utils/: Módulos utilitáriostests/: Casos de teste
Testes
O projeto inclui cobertura abrangente de testes:
- Testes unitários para todos os módulos de ferramentas
- Testes de integração com MongoDB
- Testes simulados para testes isolados de componentes
Execute a suíte de testes:
# Run all tests
uv run pytest
# Run with verbose output
uv run pytest -v
# Run specific test file
uv run pytest tests/test_tools.py
Logging
Os arquivos de log são armazenados no diretório logs por padrão. O sistema de logging suporta:
- Níveis de log configuráveis
- Rotação de arquivos baseada em tamanho
- Suporte a codificação UTF-8
- Logging estruturado com nomes de funções e números de linha
Licença
MIT
Contribuição
Contribuições via Issues e Pull Requests são bem-vindas. Antes de enviar um PR, certifique-se de:
- Todos os testes passam (
uv run pytest) - Casos de teste apropriados são adicionados
- A documentação é atualizada
- O código segue os padrões de estilo existentes