MongoDB操作协议服务

一个为MongoDB操作设计的机器聊天协议(MCP)服务,提供完整的CRUD操作、管理任务和高级功能,使大型语言模型(LLMs)能够与MongoDB数据库交互。

  • by 441126098
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 441126098/mongo-mcp

使用说明

Mongo MCP

英语| 简体中文

用于MongoDB操作的机器聊天协议(MCP)服务。该服务提供了一套全面的工具,允许大型语言模型(LLM)通过完整的CRUD操作、管理任务和高级功能与MongoDB数据库进行交互。

需求

  • Python 3.10或更高版本
  • 正在运行的MongoDB数据库服务
  • 建议使用 紫外线 运行程序

🚀 特性

📊 数据库管理工具

  • list_databases -列出所有数据库
  • create_database -创建新数据库
  • drop_database -删除数据库
  • get_database_stats -获取数据库统计信息

📦 收藏管理工具

  • list_collections -列出数据库中的所有集合
  • create_collection -创建新集合(具有可选设置)
  • drop_collection -删除收藏
  • rename_collection -重命名集合
  • get_collection_stats -获取收藏统计信息

📄 记录CRUD操作

  • insert_document -插入单个文档
  • insert_many_documents -批量插入多个文档
  • find_documents -查询文档(支持排序、投影、限制)
  • find_one_document -查询单个单据
  • count_documents -统计与查询匹配的文档
  • update_document -更新文档(单次或批量)
  • replace_document -替换文档
  • delete_document -删除文档(单个或批量)

🔍 索引管理工具

  • list_indexes -列出集合的所有索引
  • create_index -创建常规索引
  • create_text_index -创建文本搜索索引
  • create_compound_index -创建复合索引
  • drop_index -删除索引
  • reindex_collection -重建集合的所有索引

📈 聚集操作

  • aggregate_documents -执行聚合管道操作
  • distinct_values -获取字段的不同值

🔧 监控和管理工具

  • get_server_status -获取MongoDB服务器状态
  • get_replica_set_status -获取副本集状态
  • ping_database -测试数据库连接
  • test_mongodb_connection -综合连接测试
  • get_connection_details -获取详细的连接信息

🛠️ 技术栈

  • python:主要编程语言
  • FastMCP:用于自动生成工具定义的MCP Python SDK
  • PyMongo:官方MongoDB Python驱动程序
  • 紫外线:现代Python包管理工具

用法

直接用uvx运行

uvx run mongo-mcp

服务器使用stdio传输方法,使其适合与支持此传输方法的MCP客户端集成。

光标示例配置

如果你使用 光标 作为您的开发环境,您可以将以下配置添加到您的 .cursor/mcp.json 用于本地调试的文件:

{
    "mcpServers": {
        "mongo-mcp": {
            "command": "uvx",
            "args": [
                "mongo-mcp"
            ],
            "env": {
                "MONGODB_URI": "mongodb://localhost:27017",
                "MONGODB_DEFAULT_DB": "your_database_name",
                "LOG_LEVEL": "INFO"
            }
        }
    }
}

环境变量

基本配置

  • MONGODB_URI:MongoDB连接字符串(默认值:“mongodb://localhost:27017")
  • MONGODB_DEFAULT_DB:默认数据库名称(可选)

连接池配置

  • MONGODB_MIN_POOL_SIZE:最小连接池大小(默认值:0)
  • MONGODB_MAX_POOL_SIZE:最大连接池大小(默认值:100)
  • MONGODB_MAX_IDLE_TIME_MS:最大空闲时间(毫秒)(默认值:30000)

超时配置

  • MONGODB_SERVER_SELECTION_TIMEOUT_MS:服务器选择超时(默认值:30000)
  • MONGODB_SOCKET_TIMEOUT_MS:套接字超时(默认值:0-无超时)
  • MONGODB_CONNECT_TIMEOUT_MS:连接超时(默认值:20000)

安全配置

  • MONGODB_TLS_ENABLED:启用TLS连接(默认值:false)
  • MONGODB_AUTH_SOURCE:身份验证源(默认:admin)
  • MONGODB_AUTH_MECHANISM:身份验证机制(SCRAM-SHA-1、SCRAM-SHA-256等)

性能设置

  • MONGODB_READ_PREFERENCE:读取首选项(默认:主要)
  • MONGODB_WRITE_CONCERN_W:写入问题(默认值:1)
  • MONGODB_READ_CONCERN_LEVEL:读取关注级别(默认值:本地)

日志记录配置

  • LOG_LEVEL:日志记录级别(默认值:“INFO”)
    • 可用值:调试、信息、警告、错误、临界
  • LOG_MAX_FILE_SIZE:最大日志文件大小(以字节为单位)(默认值:10MB)
  • LOG_BACKUP_COUNT:备份日志文件数(默认值:5)

功能标志

  • ENABLE_DANGEROUS_OPERATIONS:启用潜在危险操作(默认值:false)
  • ENABLE_ADMIN_OPERATIONS:启用管理操作(默认值:true)
  • ENABLE_INDEX_OPERATIONS:启用索引操作(默认值:true)

开发指南

  1. 克隆存储库
git clone https://github.com/441126098/mongo-mcp.git
cd mongo-mcp
  1. 安装开发依赖项
# Using uv (recommended)
uv sync

# Or using pip
pip install -e ".[dev]"
  1. 运行测试
uv run pytest tests/ -v
  1. 编码结构
  • src/mongo_mcp/server.py:MCP服务器实现
  • src/mongo_mcp/db.py:核心MongoDB操作实现
  • src/mongo_mcp/config.py:配置管理
  • src/mongo_mcp/tools/:MCP工具实施
    • database_tools.py:数据库和收集管理
    • document_tools.py:记录CRUD操作
    • index_tools.py:索引管理
    • aggregation_tools.py:聚合操作
    • admin_tools.py:行政和监测工具
  • src/mongo_mcp/utils/:实用模块
  • tests/:测试用例

测试

该项目包括全面的测试覆盖范围:

  • 所有工具模块的单元测试
  • 与MongoDB的集成测试
  • 隔离组件测试的模拟测试

运行测试套件:

# 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

日志记录

日志文件存储在 logs 默认情况下为目录。日志记录系统支持:

  • 可配置的日志级别
  • 基于大小的文件旋转
  • UTF-8编码支持
  • 带有函数名和行号的结构化日志记录

许可证

麻省理工学院

贡献

欢迎通过Issues和Pull Request进行贡献。在提交PR之前,请确保:

  1. 所有测试均通过(uv run pytest)
  2. 添加了适当的测试用例
  3. 文档已更新
  4. 代码遵循现有的样式模式