使用说明

项目简介

mongodb-mcp 是一个基于 Model Context Protocol (MCP) 构建的服务器,它充当 LLM 客户端和 MongoDB 数据库之间的桥梁。通过此服务器,LLM 应用可以安全、便捷地查询和分析存储在 MongoDB 中的数据,而无需直接处理复杂的数据库连接和操作。该服务器提供了一系列预定义的工具,以标准化的方式暴露 MongoDB 的只读功能,旨在简化 LLM 应用与 MongoDB 数据库的集成,提升数据访问效率和安全性。

主要功能点

  • 数据库与集合浏览: 允许 LLM 客户端列出 MongoDB 服务器上的数据库和集合,方便用户了解数据存储结构。
  • Schema 自动推断: 能够分析 MongoDB 集合中的文档样本,自动推断出数据 Schema 结构,帮助 LLM 理解数据类型和字段信息。
  • 灵活的数据查询: 支持使用 MongoDB 查询语法进行数据检索,包括条件过滤、字段投影、结果排序和数量限制等常用操作。
  • 强大的聚合分析: 支持执行 MongoDB 的只读聚合管道,进行复杂的数据分析和统计,例如分组、统计、排序等。
  • 多样的数据操作: 提供包括获取集合统计信息、索引信息、查询执行计划、获取字段唯一值、随机数据抽样、文档计数以及根据ID查找文档等多种实用工具。
  • 地理空间与文本搜索: 支持地理空间查询和全文搜索功能,满足位置信息和文本内容检索需求。
  • 数据格式转换: 支持将查询结果导出为 JSON 或 CSV 格式,方便不同应用场景的数据处理和展示。

安装步骤

  1. 前提条件: 确保已安装 Node.js 和 npm (Node 包管理器)。
  2. 下载代码: 从 GitHub 仓库 https://github.com/jonfreeland/mongodb-mcp 克隆代码到本地。
  3. 安装依赖: 在项目根目录下打开终端,运行命令 'npm install' 安装项目所需的依赖包。
  4. 构建项目: 运行命令 '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' 的定义,其中详细描述了每个工具的功能、输入参数和使用示例。

信息

分类

数据库与文件