MongoDB***MCP服务器,一个用于与MongoDB数据库和MongoDB Atlas交互的模型上下文协议(Model Context Protocol)服务器。
MongoDB MCP Server是实现模型上下文协议(MCP)的服务器,提供与MongoDB数据库和MongoDB Atlas云服务的交互能力。该服务器允许MCP客户端通过标准化接口访问MongoDB工具和服务,实现数据库管理、集群操作和数据查询等功能。
MongoDB MCP Server适用于需要通过MCP协议与MongoDB交互的各类客户端应用,包括但不限于:
支持的MCP客户端包括:Windsurf、VSCode、Claude Desktop和Cursor等。
shellnode -v
大多数MCP客户端需要创建或修改配置文件以添加MCP服务器。
注意:不同客户端的配置文件语法可能不同。请参考以下链接获取最新语法说明:
您可以提供MongoDB连接字符串或Atlas API凭据:
shelldocker run --rm -i \ mongodb/mongodb-mcp-server:latest
shelldocker run --rm -i \ -e MDB_MCP_CONNECTION_STRING="mongodb+srv://username:***/myDatabase" \ mongodb/mongodb-mcp-server:latest
shelldocker run --rm -i \ -e MDB_MCP_API_CLIENT_ID="your-atlas-service-accounts-client-id" \ -e MDB_MCP_API_CLIENT_SECRET="your-atlas-service-accounts-client-secret" \ mongodb/mongodb-mcp-server:latest
无选项配置:
json{ "mcpServers": { "MongoDB": { "command": "docker", "args": ["run", "--rm", "-i", "mongodb/mongodb-mcp-server:latest"] } } }
使用连接字符串:
json{ "mcpServers": { "MongoDB": { "command": "docker", "args": [ "run", "--rm", "-i", "-e", "MDB_MCP_CONNECTION_STRING=mongodb+srv://username:***/myDatabase", "mongodb/mongodb-mcp-server:latest" ] } } }
使用Atlas API凭据:
json{ "mcpServers": { "MongoDB": { "command": "docker", "args": [ "run", "--rm", "-i", "-e", "MDB_MCP_API_CLIENT_ID=your-atlas-service-accounts-client-id", "-e", "MDB_MCP_API_CLIENT_SECRET=your-atlas-service-accounts-client-secret", "mongodb/mongodb-mcp-server:latest" ] } } }
atlas-list-orgs - 列出MongoDB Atlas组织atlas-list-projects - 列出MongoDB Atlas项目atlas-create-project - 创建新的MongoDB Atlas项目atlas-list-clusters - 列出MongoDB Atlas集群atlas-inspect-cluster - 检查特定的MongoDB Atlas集群atlas-create-free-cluster - 创建免费的MongoDB Atlas集群atlas-connect-cluster - 连接到MongoDB Atlas集群atlas-inspect-access-list - 检查有权访问MongoDB Atlas集群的IP/CIDR范围atlas-create-access-list - 配置MongoDB Atlas集群的IP/CIDR访问列表atlas-list-db-users - 列出MongoDB Atlas数据库用户atlas-create-db-user - 创建MongoDB Atlas数据库用户注意:Atlas工具仅在配置部分设置凭据后可用。
connect - 连接到MongoDB实例find - 对MongoDB集合运行查询aggregate - 对MongoDB集合运行聚合操作count - 获取MongoDB集合中的文档数量insert-one - 向MongoDB集合插入单个文档insert-many - 向MongoDB集合插入多个文档create-index - 为MongoDB集合创建索引update-one - 更新MongoDB集合中的单个文档update-many - 更新MongoDB集合中的多个文档rename-collection - 重命名MongoDB集合delete-one - 从MongoDB集合中删除单个文档delete-many - 从MongoDB集合中删除多个文档drop-collection - 从MongoDB数据库中删除集合drop-database - 删除MongoDB数据库list-databases - 列出MongoDB连接的所有数据库list-collections - 列出给定数据库的所有集合collection-indexes - 描述集合的索引collection-schema - 描述集合的模式collection-storage-size - 获取集合的大小(MB)db-stats - 返回MongoDB数据库的统计信息MongoDB MCP Server可通过多种方法配置,优先级从高到低如下:
| 选项 | 描述 |
|---|---|
apiClientId | 用于认证的Atlas API客户端ID |
apiClientSecret | 用于认证的Atlas API客户端密钥 |
connectionString | MongoDB连接字符串,用于直接数据库连接(可选,用户可在每次工具调用时提供) |
logPath | 存储日志的文件夹 |
disabledTools | 要禁用的工具名称、操作类型和/或工具类别的数组 |
readOnly | 设置为true时,仅允许读取和元数据操作类型,禁用创建/更新/删除操作 |
telemetry | 设置为disabled时,禁用遥测数据收集 |
默认日志位置如下:
%LOCALAPPDATA%\mongodb\mongodb-mcp\.app-logs~/.mongodb/mongodb-mcp/.app-logs可以使用disabledTools选项禁用特定工具或工具类别。此选项接受字符串数组,其中每个字符串可以是工具名称、操作类型或类别。
数组的构造方式取决于所使用的配置方法:
export MDB_MCP_DISABLED_TOOLS="create,update,delete,atlas,collectionSchema"。--disabledTools create update delete atlas collectionSchema。工具类别:
atlas - MongoDB Atlas工具,如列出集群、创建集群等。mongodb - MongoDB数据库工具,如find、aggregate等。操作类型:
create - 创建资源的工具,如创建集群、插入文档等。update - 更新资源的工具,如更新文档、重命名集合等。delete - 删除资源的工具,如删除文档、删除集合等。read - 读取资源的工具,如查询、聚合、列出集群等。metadata - 读取元数据的工具,如列出数据库、列出集合、集合模式等。readOnly配置选项允许将MCP服务器限制为仅使用具有"read"和"metadata"操作类型的工具。启用后,所有具有"create"、"update"或"delete"操作类型的工具将不会在服务器上注册。
这在希望提供MongoDB数据访问进行分析但不允许修改数据或基础设施的场景中非常有用。
可以通过以下方式启用只读模式:
export MDB_MCP_READ_ONLY=true--readOnly当只读模式激活时,服务器日志中将显示一条消息,指示由于此限制而阻止注册的工具。
telemetry配置选项允许禁用遥测数据收集。启用时,MCP服务器将收集使用数据并发送给MongoDB。
可以通过以下方式禁用遥测:
export MDB_MCP_TELEMETRY=disabled--telemetry disabledexport DO_NOT_TRACK=1要使用Atlas API工具,需要在MongoDB Atlas中创建服务账户:
创建服务账户:
要了解有关服务账户的更多信息,请查看MongoDB Atlas文档。
保存客户端凭据:
添加访问列表条目:
配置MCP服务器:
apiClientId和apiClientSecret设置以MDB_MCP_为前缀的环境变量,后跟大写的选项名称(使用下划线分隔):
shell# 设置Atlas API凭据(通过服务账户) export MDB_MCP_API_CLIENT_ID="your-atlas-service-accounts-client-id" export MDB_MCP_API_CLIENT_SECRET="your-atlas-service-accounts-client-secret" # 设置自定义MongoDB连接字符串 export MDB_MCP_CONNECTION_STRING="mongodb+srv://username:***/myDatabase" export MDB_MCP_LOG_PATH="/path/to/logs"
Docker部署示例:
shelldocker run --rm -i \ -e MDB_MCP_API_CLIENT_ID="your-atlas-service-accounts-client-id" \ -e MDB_MCP_API_CLIENT_SECRET="your-atlas-service-accounts-client-secret" \ -e MDB_MCP_CONNECTION_STRING="mongodb+srv://username:***/myDatabase" \ mongodb/mongodb-mcp-server:latest
使用环境变量的连接字符串配置:
json{ "mcpServers": { "MongoDB": { "command": "docker", "args": ["run", "-i", "--rm", "mongodb/mongodb-mcp-server"], "env": { "MDB_MCP_CONNECTION_STRING": "mongodb+srv://username:***/myDatabase" } } } }
使用Atlas API凭据的配置:
json{ "mcpServers": { "MongoDB": { "command": "docker", "args": ["run", "-i", "--rm", "mongodb/mongodb-mcp-server"], "env": { "MDB_MCP_API_CLIENT_ID": "your-atlas-service-accounts-client-id", "MDB_MCP_API_CLIENT_SECRET": "your-atlas-service-accounts-client-secret" } } } }
启动服务器时将配置选项作为命令行参数传递:
shelldocker run -i --rm mongodb/mongodb-mcp-server \ --apiClientId="your-atlas-service-accounts-client-id" \ --apiClientSecret="your-atlas-service-accounts-client-secret" \ --connectionString="mongodb+srv://username:***/myDatabase" \ --logPath=/path/to/logs
使用命令行参数的MCP配置文件示例:
json{ "mcpServers": { "MongoDB": { "command": "docker", "args": [ "run", "-i", "--rm", "mongodb/mongodb-mcp-server", "--connectionString", "mongodb+srv://username:***/myDatabase" ] } } }
yamlversion: '3' services: mongodb-mcp-server: image: mongodb/mongodb-mcp-server:latest environment: - MDB_MCP_API_CLIENT_ID=your-atlas-service-accounts-client-id - MDB_MCP_API_CLIENT_SECRET=your-atlas-service-accounts-client-secret # 或者使用直接连接字符串 # - MDB_MCP_CONNECTION_STRING=mongodb+srv://username:***/myDatabase - MDB_MCP_LOG_PATH=/logs - MDB_MCP_READ_ONLY=false - MDB_MCP_TELEMETRY=enabled volumes: - ./logs:/logs stdin_open: true tty: true
有兴趣贡献吗?太好了!请查看我们的贡献指南,了解代码贡献、标准、添加新工具和故障排除信息的指南。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429