MongoDB旧版协议服务器

为旧版MongoDB实例(版本<4.0)设计的模型上下文协议服务器,提供只读访问以安全地查询历史数据。

  • by Webxspark
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 Webxspark/legacy-mongodb-mcp

使用说明

传统MongoDB MCP服务器

专门为遗留MongoDB实例(版本<4.0)设计的模型上下文协议(MCP)服务器。

概述

现代MongoDB工具经常放弃对旧版本数据库的支持。该项目旨在通过为遗留MongoDB部署提供MCP接口来弥合这一差距,允许AI模型与存储在旧系统中的历史数据进行交互。

当前状态

集中: 严格只读操作。

该项目执行 只读 在检查遗留生产系统时,确保数据安全。

🔒 只读执行

  • 不 connect 工具暴露 -启动时通过环境变量建立连接
  • 无写入操作 -所有工具的设计都是只读的
  • 聚合限制 - $out 和 $merge 阶段被封锁
  • 索引检查模式 -可选择强制拒绝不使用索引的查询
  • 响应极限 -每个查询的文档和字节的可配置限制

可用工具

工具 说明
list_databases 列出MongoDB实例中的所有数据库
list_collections 列出数据库中的所有集合
find 对集合运行查找查询
count 使用可选筛选器统计集合中的文档
aggregate 运行聚合管道(仅限只读阶段)
collection_indexes 描述集合的索引
collection_schema 从采样文档推断模式
collection_storage_size 获取集合的存储大小统计信息
db_stats 获取数据库统计信息
explain 获取查找/聚合/计数的查询执行计划
export_data 将查询/聚合结果导出到EJSON文件
mongodb_logs 检索最近的mongod日志条目
get_server_config 获取当前服务器配置(已编辑)

工具使用示例

解释

返回查询执行计划统计信息:

# Format: ["method_name", {"arguments"}]
explain(
    database="testdb",
    collection="products",
    method=["find", {"filter": {"status": "active"}, "limit": 10}],
    verbosity="executionStats"
)

导出数据

将查询结果导出到JSON文件:

# Format: ["target_name", {"arguments"}]
export_data(
    database="testdb",
    collection="products",
    exportTitle="active_products",
    exportTarget=["find", {"filter": {"status": "active"}, "limit": 100}],
    jsonExportFormat="relaxed"  # or "canonical"
)

配置

服务器是通过环境变量配置的:

变量 必填 默认 描述
MDB_MCP_CONNECTION_STRING 是 - MongoDB连接字符串(MongoDB://或MongoDB+srv://)
MDB_MCP_READ_ONLY 没有 true 启用只读模式(此服务器始终为真)
MDB_MCP_INDEX_CHECK 没有 false 拒绝不使用索引的查询
MDB_MCP_MAX_DOCUMENTS_PER_QUERY 没有 100 每次查询的最大文档数
MDB_MCP_MAX_BYTES_PER_QUERY 没有 16777216 最大响应字节数(16MB)
MDB_MCP_LOG_LEVEL 没有 INFO 日志记录级别(调试、信息、警告、错误)

🔒 安全建议:始终对连接字符串使用环境变量。切勿将凭据作为命令行参数传递。

安装

先决条件

  • Python 3.10+(用于本地安装)
  • Docker(用于容器化使用)
  • 访问MongoDB实例(建议使用2.6-3.6版本)

选项1:Docker(推荐)

拉取并运行预构建的Docker镜像:

docker run --rm -i \
  --network=host \
  -e MDB_MCP_CONNECTION_STRING="mongodb://user:password@localhost:27017/mydb?authSource=admin" \
  -e MDB_MCP_READ_ONLY=true \
  ghcr.io/webxspark/legacy-mongodb-mcp:latest

或者在本地构建:

# Clone the repository
git clone https://github.com/Webxspark/legacy-mongodb-mcp.git
cd legacy-mongodb-mcp

# Build the image
docker build -t legacy-mongodb-mcp .

# Run the container
docker run --rm -i \
  --network=host \
  -e MDB_MCP_CONNECTION_STRING="mongodb://user:password@localhost:27017" \
  legacy-mongodb-mcp

选项2:本地安装

# Clone the repository
git clone https://github.com/Webxspark/legacy-mongodb-mcp.git
cd legacy-mongodb-mcp

# Install dependencies
pip install -r requirements.txt

用法

使用VS代码/游标(Docker)

添加到您的 .vscode/mcp.json:

{
    "servers": {
        "legacy-mongodb": {
            "command": "docker",
            "args": [
                "run", "--rm", "-i",
                "--network=host",
                "-e", "MDB_MCP_CONNECTION_STRING",
                "-e", "MDB_MCP_READ_ONLY",
                "ghcr.io/webxspark/legacy-mongodb-mcp:latest"
            ],
            "env": {
                "MDB_MCP_CONNECTION_STRING": "mongodb://user:password@localhost:27017/mydb?authSource=admin",
                "MDB_MCP_READ_ONLY": "true"
            }
        }
    }
}

使用VS代码/游标(本地Python)

添加到您的 .vscode/mcp.json:

{
    "servers": {
        "legacy-mongodb": {
            "command": "python",
            "args": ["src/server.py"],
            "env": {
                "MDB_MCP_CONNECTION_STRING": "mongodb://user:password@localhost:27017",
                "MDB_MCP_READ_ONLY": "true",
                "MDB_MCP_INDEX_CHECK": "false"
            }
        }
    }
}

或与 uv:

{
    "servers": {
        "legacy-mongodb": {
            "command": "uv",
            "args": ["run", "--with", "mcp", "--with", "pymongo", "python", "src/server.py"],
            "env": {
                "MDB_MCP_CONNECTION_STRING": "mongodb://user:password@localhost:27017"
            }
        }
    }
}

干运行模式

在不启动服务器的情况下测试您的配置:

# Local
export MDB_MCP_CONNECTION_STRING="mongodb://localhost:27017"
python src/server.py --dry-run

# Docker
docker run --rm -i \
  -e MDB_MCP_CONNECTION_STRING="mongodb://localhost:27017" \
  ghcr.io/webxspark/legacy-mongodb-mcp:latest --dry-run

使用Docker Compose进行测试

Docker Compose配置用于MongoDB 3.6的测试:

Docker Compose配置用于MongoDB 3.6的测试:

# Start the test MongoDB instance
docker compose up -d

# The connection string will be:
# mongodb://admin:secret_password@localhost:27017

路线图

未来的开发将根据用户需求扩展功能:

  • []写入操作(受保护,选择加入)
  • []用户/角色管理
  • []备份实用程序

许可证

麻省理工学院