MongoDB MCP Server - Query and manage MongoDB databases through MCP protocol
Project description
MongoDB MCP Server - Streamable HTTP
基于 MCP 官方 SDK 实现的 MongoDB MCP Server,采用 Streamable HTTP 传输协议,完美支持 FastGPT。
项目结构
python-mcp-server/
├── src/my_mongodb_mcp/
│ ├── __init__.py
│ └── server.py # 核心代码(11 个工具函数)
├── tests/
│ └── test_server.py
├── pyproject.toml # 打包配置
├── .env.example # 环境变量模板
├── .env # 实际环境变量(需自行配置)
├── .gitignore
└── README.md
可用工具
| 工具名 | 描述 | 写操作 |
|---|---|---|
| list_databases | 列出所有数据库 | ❌ |
| list_collections | 列出数据库中的集合 | ❌ |
| find_documents | 查询文档 | ❌ |
| count_documents | 统计文档数量 | ❌ |
| aggregate | 聚合管道操作 | ❌ |
| list_indexes | 列出索引 | ❌ |
| get_collection_stats | 获取集合统计 | ❌ |
| insert_document | 插入单个文档 | ✅ |
| update_documents | 更新文档 | ✅ |
| delete_documents | 删除文档 | ✅ |
| create_index | 创建索引 | ✅ |
🚀 完整操作流程(SOP)
第一步:环境准备
# 1. 创建 conda 环境(需要管理员权限)
conda create -n mongodb-mcp python=3.12 -y
# 2. 激活环境
conda activate mongodb-mcp
# 3. 进入项目目录
cd C:\Develop\AI\nju-skills-0210\nju-skills\app\python-mcp-server
第二步:安装依赖
# 安装项目依赖
pip install -e ".[dev]"
第三步:配置环境变量
# 复制环境变量模板
copy .env.example .env
编辑 .env 文件,填入实际配置:
# MongoDB 连接字符串
MDB_MCP_CONNECTION_STRING=mongodb://username:password@host:27017/database?authSource=admin&directConnection=true
# 只读模式(推荐开启,防止 AI 误操作)
MDB_MCP_READ_ONLY=true
# 数据库名(可选,默认使用连接串中的数据库)
MDB_MCP_DATABASE=
第四步:启动服务器
# 启动 Streamable HTTP 模式的 MCP Server
python -m my_mongodb_mcp.server
预期输出:
🚀 MongoDB MCP Server 已启动(Streamable HTTP 模式)
📍 地址:http://localhost:8000/
📍 只读模式:是
📍 数据库:fastgpt
INFO: Uvicorn running on http://0.0.0.0:8000
第五步:本地测试
浏览器访问:
http://localhost:8000/
或使用 curl 测试:
curl http://localhost:8000/
第六步:内网穿透(可选,用于 FastGPT 云端访问)
6.1 启动 Cloudflare Tunnel
新开一个终端窗口:
cloudflared tunnel --url http://localhost:8000
预期输出:
Tunnel URL: https://xxx-yyy-zzz.trycloudflare.com
6.2 在 FastGPT 中配置
- 打开 FastGPT
- 创建 MCP 工具
- 填写配置:
- 工具类型:MCP 工具
- 名称:MongoDB
- MCP 地址:
https://xxx-yyy-zzz.trycloudflare.com/ - 鉴权类型:无
- 点击"解析"
- 等待工具列表加载
- 保存
🔧 常见问题
Q1: ModuleNotFoundError: No module named 'my_mongodb_mcp'
原因:未激活正确的 conda 环境或未安装包
解决:
conda activate mongodb-mcp
pip install -e ".[dev]"
Q2: MDB_MCP_CONNECTION_STRING environment variable is not set
原因:.env 文件未配置或路径错误
解决:
- 确认
.env文件在项目根目录 - 确认运行命令时工作目录是项目根目录
- 重启终端重新加载环境变量
Q3: Cloudflare Tunnel 502 错误
原因:MCP Server 未启动或已崩溃
解决:
- 检查 MCP Server 终端是否有错误输出
- 确认 8000 端口正在监听:
netstat -ano | findstr :8000 - 重启 MCP Server 和 Cloudflare Tunnel
Q4: FastGPT 解析失败
解决:
- 确认 MCP 地址正确(不要加
/sse后缀) - 等待 10-15 秒(首次连接可能较慢)
- 检查 FastGPT 日志获取详细错误信息
📊 技术说明
为什么选择 Streamable HTTP?
| 传输模式 | 状态 | 说明 |
|---|---|---|
| Streamable HTTP | ✅ 推荐 | MCP 官方标准,双向通信,支持 FastGPT |
| SSE | ⚠️ 有限支持 | 旧版本协议,单向通信 |
| stdio | ✅ 本地使用 | 仅适合本地 CLI 工具 |
Streamable HTTP 优势
- ✅ 官方标准 - MCP 协议推荐的传输方式
- ✅ 双向通信 - 支持 GET 初始化和 POST 工具调用
- ✅ 会话管理 - 自动处理 session ID
- ✅ FastGPT 兼容 - 完美支持 FastGPT 的 MCP 工具集
架构说明
┌─────────────────────────────────────────────────────────┐
│ FastGPT │
│ MCP 地址:https://xxx.trycloudflare.com/ │
└───────────────────┬─────────────────────────────────────┘
│ HTTPS
┌───────────────────▼─────────────────────────────────────┐
│ Cloudflare Tunnel │
│ 公网 → 本地 8000 │
└───────────────────┬─────────────────────────────────────┘
│ HTTP
┌───────────────────▼─────────────────────────────────────┐
│ MongoDB MCP Server (Streamable HTTP) │
│ - MCP Server (官方 SDK) │
│ - StreamableHTTPServerTransport │
│ - 11 个 MongoDB 工具 │
└───────────────────┬─────────────────────────────────────┘
│ MongoDB Protocol
┌───────────────────▼─────────────────────────────────────┐
│ MongoDB Database │
│ mongodb://user:pass@host:27017/db │
└─────────────────────────────────────────────────────────┘
🔒 安全建议
1. 开启只读模式
MDB_MCP_READ_ONLY=true
防止 AI 意外修改或删除数据。
2. 使用专用数据库用户
为 MCP Server 创建专用的 MongoDB 用户,只授予必要的权限。
3. 限制网络访问
如果可能,限制 MongoDB 只接受来自 MCP Server 的连接。
4. 定期备份
确保 MongoDB 数据定期备份。
📝 开发说明
添加新工具
- 在
server.py中添加工具函数 - 在
create_mcp_server()中注册工具 - 在
handle_list_tools()中添加工具描述
测试工具
# 在 tests/test_server.py 中添加测试
async def test_list_databases():
result = await list_databases({})
assert len(result) > 0
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file my_mongodb_mcp-0.1.0.tar.gz.
File metadata
- Download URL: my_mongodb_mcp-0.1.0.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b74aa05ac6a7346900018f021df21d14d38800493df1a696c8b0b82e4c21f6d8
|
|
| MD5 |
751b335b7e75ef17b873b13abba4911a
|
|
| BLAKE2b-256 |
c65f4411f7335892020ce57afb164f2b4a9033c1cc87214d1ee702d810c135b5
|
File details
Details for the file my_mongodb_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: my_mongodb_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7bf74ef36f81587381b8733c3d6d6ffc66fc0ba3ca858512fd2561824b588de
|
|
| MD5 |
6626bba41afe032c0df275ef698b6a5c
|
|
| BLAKE2b-256 |
85bafd9bfe6e778630f42d3034d79fab2d19a88c7822fd679a4e6c881f3429e4
|