使用说明
传统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
路线图
未来的开发将根据用户需求扩展功能:
- []写入操作(受保护,选择加入)
- []用户/角色管理
- []备份实用程序