内容
# MongoDB MCP 服务器
一个模型上下文协议(MCP)服务器,通过标准化的MCP工具和资源提供对MongoDB数据库的只读访问。
<a href="https://glama.ai/mcp/servers/cmywezu1sn">
<img width="380" height="200" src="https://glama.ai/mcp/servers/cmywezu1sn/badge" alt="MongoDB 服务器 MCP 服务器" />
</a>
## 概述
这个MongoDB MCP服务器使AI助手能够直接查询和分析MongoDB数据库,而无需写入权限,从而在提供强大的数据探索能力的同时确保数据安全。
## 功能
### MongoDB 操作
- **数据库探索**: 列出数据库和集合
- **模式发现**: 从样本文档中推断集合模式
- **查询**: 执行MongoDB查询,支持过滤、投影、排序和限制
- **聚合**: 运行只读聚合管道,并进行安全验证
- **文本搜索**: 对具有文本索引的集合执行全文搜索
- **地理空间查询**: 查找靠近点、位于多边形内或与几何图形相交的位置
- **文档操作**: 统计文档数量、采样随机文档、按ID查找文档
- **数据分析**: 获取集合统计信息、索引信息和查询执行计划
- **性能洞察**: 检查查询执行计划以优化性能
- **数据探索**: 获取不同值、字段分布和数据样本
- **格式转换**: 将查询结果导出为JSON或CSV格式
### 增强功能
- **模式推断**: 自动从文档中检测数据类型和结构
- **可视化提示**: 根据结果内容智能建议数据可视化
- **安全验证**: 防止在聚合管道中执行写入操作
- **示例丰富的文档**: 每个工具的描述中都包含详细示例
## 要求
### 环境变量
- `MONGODB_URI`(必填): 带有身份验证的MongoDB连接字符串(如果需要)
- `MONGODB_DEFAULT_DATABASE`(可选): 查询中未指定时的默认数据库名称
### 先决条件
- 可以访问MongoDB服务器
- 如果MongoDB实例需要身份验证凭证
- 目标数据库具有适当的读取权限
## 安装
### 从源代码构建
安装依赖项:
```bash
npm install
```
构建服务器:
```bash
npm run build
```
开发时自动重建:
```bash
npm run watch
```
### 与Claude Desktop集成
要与Claude Desktop一起使用,请添加服务器配置:
在MacOS上:`~/Library/Application Support/Claude/claude_desktop_config.json`
在Windows上:`%APPDATA%/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"mongodb": {
"command": "/path/to/mongodb-server/build/index.js",
"env": {
"MONGODB_URI": "mongodb://username:password@hostname:port/database",
"MONGODB_DEFAULT_DATABASE": "your_default_db"
}
}
}
}
```
### 与Claude Web集成
对于通过MCP Chrome扩展的Claude Web,请在Cline MCP设置中添加配置:
```json
{
"mcpServers": {
"mongodb": {
"command": "node",
"args": ["/path/to/mongodb-server/build/index.js"],
"env": {
"MONGODB_URI": "mongodb://username:password@hostname:port/database",
"MONGODB_DEFAULT_DATABASE": "your_default_db"
}
}
}
}
```
### 与Claude Code集成
要与Claude Code一起使用,请使用以下命令:
```bash
cd /path/to/my/project
claude mcp add mongo-server /path/to/mongodb-mcp/build/index.js -e "MONGODB_URI=mongodb://user@password:27017/dbname?authSource=authDbName" -e MONGO_DEFAULT_DATABASE=dbname
```
确保用实际的MongoDB连接字符串和默认数据库名称替换占位符。
如果配置正确,当运行`claude`时,您应该看到以下内容:
```bash
╭───────────────────────────────────────────────────────╮
│ ✻ 欢迎使用Claude Code研究预览版! │
│ │
│ /help 获取帮助 │
│ │
│ cwd: <path-to-project-directory> │
│ │
│ ─────────────────────────────────────────────────── │
│ │
│ MCP 服务器: │
│ │
│ • mongo-server 已连接 │
╰───────────────────────────────────────────────────────╯
```
如果遇到问题,请参阅Claude Code [文档](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp-servers)。
## 安全考虑
- 本服务器设计为只读访问
- 连接字符串可能包含敏感的身份验证信息
- 安全地将连接字符串存储在环境变量中
- 使用具有只读权限的MongoDB用户
## 调试
由于MCP服务器通过stdio通信,调试可能具有挑战性。使用[MCP检查器](https://github.com/modelcontextprotocol/inspector),它作为包脚本可用:
```bash
npm run inspector
```
检查器将提供一个URL,以便在浏览器中访问调试工具。