使用说明
MongoDB MCP服务器
用于MongoDB操作的生产就绪模型上下文协议(MCP)服务器,具有增强的安全性、性能监控和全面的工具。
特性
- 只读操作:具有内置限制的安全MongoDB查询
- 综合工具集:7个强大的数据库探索和分析工具
- 增强安全性:查询清理、速率限制和资源监控
- 性能监控:内置指标、缓存和超时管理
- 生产就绪:健康检查、优雅关机和全面日志记录
可用工具
1. query
执行带有安全限制的MongoDB查找查询。
- 参数:
database,collection,query,options - 限制:每次查询最多1000个文档
- 选项:限制、跳过、排序、投影
2. aggregate
运行聚合管道(仅限只读操作)。
- 参数:
database,collection,pipeline,options - 限制:最大批量为1000,超时60秒
- 安全:阻止管道中的写入操作
3. listCollections
列出数据库中的所有集合。
- 参数:
database - 退货:集合名称和元数据
4. listDatabases
列出所有可访问的数据库。
- 参数:无
- 退货:数据库名称和大小
5. getIndexes
查看集合的索引。
- 参数:
database,collection - 退货:指数定义和统计
6. explain
分析查询性能和执行计划。
- 参数:
database,collection,query,options - 冗长:queryPlanner、executionStats、所有PlansExecution
- 退货:详细的执行分析
7. stats
获取集合或数据库统计信息。
- 参数:
database,collection(可选) - 退货:存储统计数据、文档计数、索引信息
安装
先决条件
- Node.js>=18.0.0
- MongoDB连接(本地或远程)
来自NPM
npm install -g mongodb-mcp-server
来源
git clone https://github.com/your-repo/mongodb-mcp-server
cd mongodb-mcp-server
npm install
npm run build
码头工人
docker build -t mongodb-mcp-server .
docker run -e MONGODB_URI="mongodb://localhost:27017" mongodb-mcp-server
配置
环境变量
| 变量 | 描述 | 默认值 | 必填 |
|---|---|---|---|
MONGODB_URI |
MongoDB连接字符串 | mongodb://localhost:27017 |
是的 |
MONGODB_DATABASE |
默认数据库名称 | - | 否 |
MONGODB_TIMEOUT |
连接超时(ms) | 30000 |
没有 |
MONGODB_MAX_POOL_SIZE |
最大连接池大小 | 10 |
没有 |
MONGODB_MIN_POOL_SIZE |
最小连接池大小 | 2 |
没有 |
LOG_LEVEL |
日志记录级别 | info |
没有 |
RATE_LIMIT_REQUESTS |
每分钟最大请求数 | 100 |
没有 |
CACHE_TTL |
缓存TTL(秒) | 300 |
没有 |
连接字符串示例
# Local MongoDB
MONGODB_URI="mongodb://localhost:27017"
# MongoDB Atlas
MONGODB_URI="mongodb+srv://user:password@cluster.mongodb.net/database"
# Replica Set
MONGODB_URI="mongodb://user:password@host1:27017,host2:27017/database?replicaSet=myReplSet"
# With SSL
MONGODB_URI="mongodb://user:password@host:27017/database?ssl=true"
用法
作为MCP服务器
# Start the server
mongodb-mcp-server
# With custom configuration
MONGODB_URI="mongodb://localhost:27017/mydb" mongodb-mcp-server
使用克劳德桌面
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"mongodb": {
"command": "mongodb-mcp-server",
"env": {
"MONGODB_URI": "mongodb://localhost:27017"
}
}
}
}
查询示例
// Find documents
{
"database": "ecommerce",
"collection": "products",
"query": { "category": "electronics" },
"options": { "limit": 10, "sort": { "price": -1 } }
}
// Aggregation pipeline
{
"database": "ecommerce",
"collection": "orders",
"pipeline": [
{ "$match": { "status": "completed" } },
{ "$group": { "_id": "$customerId", "totalSpent": { "$sum": "$amount" } } },
{ "$sort": { "totalSpent": -1 } },
{ "$limit": 5 }
]
}
// Explain query performance
{
"database": "ecommerce",
"collection": "products",
"query": { "category": "electronics", "price": { "$lt": 500 } },
"options": { "verbosity": "executionStats" }
}
安全功能
查询限制
- 只读的:所有写入操作都被阻止
- 结果限制:每次查询最多1000个文档
- 超时保护:60秒后查询超时
- 资源监控:内存和CPU使用情况跟踪
受阻操作
drop,dropDatabaseinsert,insertOne,insertManyupdate,updateOne,updateManydelete,deleteOne,deleteManyremove,findAndModifycreateIndex,dropIndex
速率限制
- 默认值:每分钟100个请求
- 可通过以下方式配置
RATE_LIMIT_REQUESTS - 按连接跟踪
性能特点
缓存
- 使用5分钟TTL进行查询结果缓存
- 可配置的缓存大小和过期时间
- 自动缓存失效
连接管理
- 具有最小/最大大小的连接池
- 故障时自动重新连接
- 健康检查监测
监控
- 查询执行指标
- 连接池统计
- 错误率跟踪
- 性能警报
发展
构建
npm run build
发展模式
npm run dev
测试
npm test
代码检查
npm run lint
npm run lint:fix
类型检查
npm run typecheck
Docker使用
构建图像
docker build -t mongodb-mcp-server .
运行容器
docker run -e MONGODB_URI="mongodb://host.docker.internal:27017" mongodb-mcp-server
Docker Compose
version: '3.8'
services:
mongodb-mcp:
build: .
environment:
- MONGODB_URI=mongodb://mongo:27017
- LOG_LEVEL=debug
depends_on:
- mongo
mongo:
image: mongo:7
ports:
- "27017:27017"
故障排除
常见问题
连接被拒绝
# Check MongoDB is running
mongosh --eval "db.runCommand('ping')"
# Test connection string
MONGODB_URI="your-connection-string" mongodb-mcp-server
权限不足
# Ensure user has read permissions
# Add to MongoDB user roles: ["read", "readAnyDatabase"]
内存使用率高
# Reduce query limits
# Increase cache TTL
# Monitor query complexity
调试模式
LOG_LEVEL=debug mongodb-mcp-server
健康检查
服务器提供了一个健康检查端点用于监视:
# Check server status
curl http://localhost:3000/health
安全考虑
- 网络安全:使用SSL/TLS进行生产连接
- 认证:始终使用经过身份验证的MongoDB连接
- 防火墙:仅限制MongoDB访问授权主机
- 监控:启用安全事件的审核日志记录
- 更新:保持安全补丁的依赖关系更新
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 确保所有测试通过
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
- GitHub问题:报告bug和功能请求
- 文档:查看docs/目录以获取详细指南
- 示例:常见用例请参见示例/目录