使用说明
项目简介
mongodb-mcp 是一个基于 Model Context Protocol (MCP) 构建的服务器,它充当 LLM 客户端和 MongoDB 数据库之间的桥梁。通过此服务器,LLM 应用可以安全、便捷地查询和分析存储在 MongoDB 中的数据,而无需直接处理复杂的数据库连接和操作。该服务器提供了一系列预定义的工具,以标准化的方式暴露 MongoDB 的只读功能,旨在简化 LLM 应用与 MongoDB 数据库的集成,提升数据访问效率和安全性。
主要功能点
- 数据库与集合浏览: 允许 LLM 客户端列出 MongoDB 服务器上的数据库和集合,方便用户了解数据存储结构。
- Schema 自动推断: 能够分析 MongoDB 集合中的文档样本,自动推断出数据 Schema 结构,帮助 LLM 理解数据类型和字段信息。
- 灵活的数据查询: 支持使用 MongoDB 查询语法进行数据检索,包括条件过滤、字段投影、结果排序和数量限制等常用操作。
- 强大的聚合分析: 支持执行 MongoDB 的只读聚合管道,进行复杂的数据分析和统计,例如分组、统计、排序等。
- 多样的数据操作: 提供包括获取集合统计信息、索引信息、查询执行计划、获取字段唯一值、随机数据抽样、文档计数以及根据ID查找文档等多种实用工具。
- 地理空间与文本搜索: 支持地理空间查询和全文搜索功能,满足位置信息和文本内容检索需求。
- 数据格式转换: 支持将查询结果导出为 JSON 或 CSV 格式,方便不同应用场景的数据处理和展示。
安装步骤
- 前提条件: 确保已安装 Node.js 和 npm (Node 包管理器)。
- 下载代码: 从 GitHub 仓库 https://github.com/jonfreeland/mongodb-mcp 克隆代码到本地。
- 安装依赖: 在项目根目录下打开终端,运行命令 'npm install' 安装项目所需的依赖包。
- 构建项目: 运行命令 'npm run build' 构建服务器代码。构建成功后,会在 'build' 目录下生成 'index.js' 文件,这是服务器的入口文件。
服务器配置
MCP 服务器需要配置在 MCP 客户端中,例如 Claude Desktop 或 Claude Web (通过 MCP Chrome 扩展)。配置信息为 JSON 格式,以下分别展示 Claude Desktop 和 Claude Web 的配置方法。请注意,以下配置中的路径 '/path/to/mongodb-server/build/index.js' 需要替换为 'index.js' 文件在你本地文件系统中的实际绝对路径。
针对 Claude Desktop 的配置 (配置文件路径根据操作系统有所不同):
- MacOS: '~/Library/Application Support/Claude/claude_desktop_config.json'
- Windows: '%APPDATA%/Claude/claude_desktop_config.json'
在配置文件中 'mcpServers' 字段下添加如下配置:
{ "mcpServers": { "mongodb": { "command": "/path/to/mongodb-server/build/index.js", // 替换为 index.js 的实际绝对路径 "env": { "MONGODB_URI": "mongodb://<your_mongodb_connection_string>", // 替换为你的 MongoDB 连接字符串,包含用户名、密码等 "MONGODB_DEFAULT_DATABASE": "<your_default_database_name>" // 可选,设置默认数据库名,如果查询时未指定数据库,则使用此默认数据库 } } } }
针对 Claude Web (通过 MCP Chrome 扩展) 的配置 (在 MCP Chrome 扩展的设置中配置 Cline MCP):
{ "mcpServers": { "mongodb": { "command": "node", "args": ["/path/to/mongodb-server/build/index.js"], // 替换为 index.js 的实际绝对路径 "env": { "MONGODB_URI": "mongodb://<your_mongodb_connection_string>", // 替换为你的 MongoDB 连接字符串,包含用户名、密码等 "MONGODB_DEFAULT_DATABASE": "<your_default_database_name>" // 可选,设置默认数据库名,如果查询时未指定数据库,则使用此默认数据库 } } } }
配置参数说明:
- '"mongodb"': 服务器名称,在 MCP 客户端中引用此服务器时使用。
- '"command"': 服务器启动命令。Claude Desktop 配置中直接指定 'index.js' 文件的绝对路径,Claude Web 配置中使用 'node' 命令来执行 'index.js' 文件。
- '"args"': 命令参数,Claude Web 配置中需要将 'index.js' 文件路径作为 'node' 命令的参数传入。
- '"env"': 环境变量配置。
- '"MONGODB_URI"': 必需。MongoDB 数据库的连接字符串,包含了连接 MongoDB 服务器所需的所有信息,例如服务器地址、端口、用户名、密码、数据库名称等。请根据你的 MongoDB 实例信息进行替换。
- '"MONGODB_DEFAULT_DATABASE"': 可选。默认数据库名称。如果设置此环境变量,则在调用工具时,如果未明确指定数据库名称,服务器将默认使用此数据库。
基本使用方法
配置完成后,在 LLM 客户端中,你可以使用 'use_mcp_tool' 指令来调用 mongodb-mcp 服务器提供的工具。以下是一些基本示例:
1. 列出数据库:
use_mcp_tool with server_name: "mongodb" tool_name: "list_databases"
2. 列出指定数据库的集合 (假设默认数据库已配置,或者替换 '<your_database_name>' 为实际数据库名):
use_mcp_tool with server_name: "mongodb" tool_name: "list_collections" arguments: { "database": "<your_database_name>" // 可选,如果已配置默认数据库,则可以省略 }
3. 查询集合数据 (查询 'users' 集合中年龄大于等于 21 岁的用户,并返回姓名和邮箱):
use_mcp_tool with server_name: "mongodb" tool_name: "query" arguments: { "collection": "users", "filter": { "age": { "$gte": 21 } }, "projection": { "name": 1, "email": 1 } }
4. 执行聚合管道 (统计 'users' 集合中不同角色的用户数量):
use_mcp_tool with server_name: "mongodb" tool_name: "aggregate" arguments: { "collection": "users", "pipeline": [ { "$group": { "_id": "$role", "count": { "$sum": 1 } } } ] }
更多工具的使用方法和参数说明,请参考 'src/index.ts' 文件中 'setupToolHandlers' 函数内 'ListToolsRequestSchema' 的定义,其中详细描述了每个工具的功能、输入参数和使用示例。
信息
分类
数据库与文件