MongoDB LLM连接服务

一个实现LLM与MongoDB数据库直接交互的模型上下文协议(MCP)服务器,支持自然语言查询、模式检查和数据管理。

  • by 1RB
  • TypeScript
  • 本地部署
  • 15 星标
  • 更新于
在 GitHub 查看 1RB/mongo-mcp

使用说明

🗄️ 用于LLMS的MongoDB MCP服务器

一种模型上下文协议(MCP)服务器,使LLM能够直接与MongoDB数据库交互。通过自然语言无缝查询集合、检查模式和管理数据。

📚 什么是模型上下文协议(MCP)?

模型上下文协议(MCP)是由Anthropic开发的一个开放标准,它为人工智能系统与外部数据源和工具的连接创造了一种通用的方式。MCP在以下设备之间建立标准化的通信信道:

  • MCP客户端:像Claude这样消耗数据的AI助手(例如,Claude Desktop、Cursor.AI)
  • MCP服务器:公开数据和功能的服务(如MongoDB服务器)

MCP的主要优势:

  • 通用访问:为AI助手提供单一协议,以查询来自各种来源的数据
  • 标准化连接:一致地处理身份验证、使用策略和数据格式
  • 可持续生态系统:促进跨多个LLM客户端工作的可重用连接器

✨ 特性

  • 🔍 收集模式检查
  • 📊 文档查询和过滤
  • 📈 指标管理
  • 📝 文档操作(插入、更新、删除)
  • 🔒 通过连接字符串安全访问数据库
  • 📋 全面的错误处理和验证

📋 先决条件

在开始之前,请确保您已经:

您可以通过运行以下命令来验证您的Node.js安装:

node --version  # Should show v18.0.0 or higher

🚀 快速开始

要开始,请找到您的MongoDB连接URL,并将此配置添加到您的Claude Desktop配置文件中:

MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json
视窗: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "mongodb": {
      "command": "npx",
      "args": [
        "mongo-mcp",
        "mongodb://<username>:<password>@<host>:<port>/<database>?authSource=admin"
      ]
    }
  }
}

通过Smithery安装

Smithery.ai 是MCP服务器的注册平台,简化了发现和安装。要通过Smithery自动为Claude Desktop安装MongoDB MCP服务器,请执行以下操作:

npx -y @smithery/cli install mongo-mcp --client claude

Cursor.ai集成

要将MongoDB MCP与Cursor.ai一起使用:

  1. 打开Cursor.ai并导航到“设置”>“功能”
  2. 在功能面板中查找“MCP服务器”
  3. 添加具有以下配置的新MCP服务器:
    • 名字: mongodb
    • 命令: npx
    • 参数: mongo-mcp mongodb://<username>:<password>@<host>:<port>/<database>?authSource=admin

注意:Cursor目前仅在Agent in Composer功能中支持MCP工具。

测试沙盒设置

如果你没有MongoDB服务器可以连接,并且想创建一个示例沙盒,请按照以下步骤操作:

  1. 使用Docker Compose启动MongoDB:
docker-compose up -d
  1. 为数据库添加测试数据种子:
npm run seed

配置Claude桌面

将此配置添加到您的Claude Desktop配置文件中:

MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json
视窗: %APPDATA%/Claude/claude_desktop_config.json

地方发展模式:

{
  "mcpServers": {
    "mongodb": {
      "command": "node",
      "args": [
        "dist/index.js",
        "mongodb://root:example@localhost:27017/test?authSource=admin"
      ]
    }
  }
}

测试沙盒数据结构

种子脚本使用示例数据创建了三个集合:

用户

  • 个人信息(姓名、电子邮件、年龄)
  • 带坐标的嵌套地址
  • 兴趣爱好
  • 会员日期

产品

  • 产品详细信息(名称、SKU、类别)
  • 嵌套规范
  • 价格和库存信息
  • 标签和评级

订单

  • 包含商品的订单详细信息
  • 用户参考
  • 发货和付款信息
  • 状态跟踪

🎯 示例提示

与Claude一起尝试以下提示以探索功能:

基本操作

"What collections are available in the database?"
"Show me the schema for the users collection"
"Find all users in San Francisco"

高级查询

"Find all electronics products that are in stock and cost less than $1000"
"Show me all orders from the user john@example.com"
"List the products with ratings above 4.5"

索引管理

"What indexes exist on the users collection?"
"Create an index on the products collection for the 'category' field"
"List all indexes across all collections"

文档操作

"Insert a new product with name 'Gaming Laptop' in the products collection"
"Update the status of order with ID X to 'shipped'"
"Find and delete all products that are out of stock"

📝 可用工具

服务器为数据库交互提供了以下工具:

查询工具

  • listCollections:列出数据库中的可用集合
  • find:使用过滤和投影查询文档
  • insertOne:将单个文档插入到集合中
  • updateOne:更新集合中的单个文档
  • deleteOne:从集合中删除单个文档

索引工具

  • createIndex:在集合上创建新索引
  • dropIndex:从集合中删除索引
  • indexes:列出集合的索引

🛠️ 发展

本项目由以下部分组成:

  • TypeScript用于类型安全开发
  • 用于数据库操作的MongoDB Node.js驱动程序
  • Zod用于模式验证
  • 用于服务器实现的模型上下文协议SDK

设置开发环境:

# Install dependencies
npm install

# Build the project
npm run build

# Run in development mode
npm run dev

# Run tests
npm test

🔒 安全考虑

将此MCP服务器与MongoDB数据库一起使用时:

  1. 创建专用MongoDB用户 使用用例所需的最小权限
  2. 从不使用管理员凭据 在生产环境中
  3. 启用访问日志记录 出于审计目的
  4. 设置适当的读/写权限 关于收藏
  5. 使用连接字符串参数 限制访问(例如。, readPreference=secondary)
  6. 考虑IP允许列表 限制数据库访问

⚠️ 重要:配置数据库访问时,始终遵循最小权限原则。

🌐 运作原理

MongoDB MCP服务器:

  1. 使用提供的连接字符串连接到MongoDB数据库
  2. 将MongoDB操作作为遵循MCP规范的工具公开
  3. 使用Zod验证输入以实现类型安全和安保
  4. 执行查询并将结构化数据返回给LLM客户端
  5. 管理连接池和正确的错误处理

所有操作都经过适当的验证,以防止注入攻击等安全问题。

📦 部署

您可以通过多种方式部署此MCP服务器:

  • 本地通过npx(如快速入门所示)
  • 作为一个全局npm包: npm install -g @coderay/mongo-mcp-server
  • 在Docker容器中(请参阅存储库中的Dockerfile)
  • 作为Heroku、Vercel或AWS等平台上的服务

❓ 故障排除

常见问题

  1. 连接错误

    • 验证您的MongoDB连接字符串是否正确
    • 检查您的MongoDB服务器是否正在运行且可访问
    • 确保网络权限允许连接
  2. 身份验证问题

    • 确认用户名和密码正确
    • 验证是否指定了身份验证数据库(通常 authSource=admin)
    • 检查MongoDB是否需要TLS/SSL连接
  3. 工具执行问题

    • 完全重新启动Claude Desktop或Cursor.ai
    • 检查日志以了解详细的错误消息:
      # macOS
      tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
      
  4. 性能问题

    • 考虑为频繁查询的字段添加适当的索引
    • 使用投影来限制查询中返回的数据
    • 使用限制和跳过参数进行分页

获取帮助

如果您遇到问题:

🤝 贡献

欢迎投稿!请随时提交拉取请求。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

📜 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。