MongoDB协议服务器

提供通过mongosh命令访问MongoDB数据库的模型上下文协议服务器,具有灵活的连接管理和全面的查询功能。

  • by jagadeesh52423
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 jagadeesh52423/mongo-mcp

使用说明

MongoDB MCP服务器

一个模型上下文协议(MCP)服务器,通过mongosh命令提供MongoDB数据库访问,具有灵活的连接管理和全面的查询功能。

特性

  • 🔌 灵活的连接管理:支持多种MongoDB环境
  • 🔒 安全配置:凭据的环境变量替换
  • 🚀 全面的蒙古语支持:执行任何MongoDB命令或查询
  • 📊 原生MongoDB语法:直接使用熟悉的MongoDB shell命令
  • 📚 文档集成:收集模式的上下文感知帮助
  • 🛡️ 错误处理:全面的错误报告和恢复

快速开始

1.安装

npm install @your-org/mongo-mcp-server

2.配置

在以下位置之一创建配置文件:

  • ./mongo-connections.json (当前目录)
  • ~/.mongo-mcp/connections.json (用户主页)
  • 通过自定义路径 MONGO_MCP_CONFIG 环境变量

配置示例:

{
  "connections": {
    "local": {
      "name": "Local Development",
      "host": "localhost",
      "port": 27017,
      "database": "myapp",
      "options": {
        "retryWrites": true
      }
    },
    "production": {
      "name": "Production",
      "host": "${MONGO_PROD_HOST}",
      "port": "${MONGO_PROD_PORT}",
      "database": "${MONGO_PROD_DATABASE}",
      "username": "${MONGO_PROD_USER}",
      "password": "${MONGO_PROD_PASS}",
      "authSource": "admin",
      "options": {
        "readPreference": "secondaryPreferred"
      }
    }
  }
}

3.环境变量

创建一个 .env 敏感凭据文件:

MONGO_PROD_HOST=localhost
MONGO_PROD_PORT=27020
MONGO_PROD_DATABASE=marketplace
MONGO_PROD_USER=your_username
MONGO_PROD_PASS=your_password

4.运行服务器

# Development
npm run dev

# Production
npm run build
npm start

MCP工具

mongo_connect

连接到MongoDB环境。

mongo_connect({ environment: "production" })

mongo_execute

执行任何mongosh命令。

mongo_execute({
  command: "db.users.find({}).limit(5)",
  timeout: 30000,
  explain: false
})

mongo_query

带验证的结构化查询。

mongo_query({
  collection: "users",
  operation: "find",
  filter: { status: "active" },
  options: { limit: 10, sort: { createdAt: -1 } }
})

mongo_collections

获取收藏信息。

mongo_collections({ action: "list" })
mongo_collections({ action: "describe", collection: "users" })

mongo_docs

查阅收款文件(如有)。

mongo_docs({ collection: "users", type: "schema" })

配置选项

连接属性

属性 类型 描述
name string 人类可读的连接名称
host string MongoDB主机(支持env变量: ${VAR})
port number MongoDB端口
database string 数据库名称
username 弦? 用户名(支持env变量)
password 弦? 密码(支持环境变量)
authSource 弦? 身份验证数据库
authMechanism 弦? 授权机制(例如SCRAM-SHA-256)
options 对象? 其他MongoDB选项
notes 弦? 文件/注释
collections 对象? 收藏说明

MongoDB选项

选项 类型 描述
readPreference string 读取首选项(主要、次要等)
retryWrites boolean 启用可重试写入
serverSelectionTimeoutMS number 服务器选择超时
connectTimeoutMS number 连接超时
directConnection boolean 直接连接(旁路发现)
maxPoolSize number 最大连接池大小

环境变量替换

使用 ${VARIABLE_NAME} 连接字符串中引用环境变量的语法:

{
  "host": "${MONGO_HOST}",
  "username": "${MONGO_USER}",
  "password": "${MONGO_PASS}"
}

安全最佳实践

  1. 从不提交凭据 到版本控制
  2. 使用环境变量 对于所有敏感数据
  3. 使用只读帐户 在可能的情况下
  4. 配置适当的超时 适用于生产环境
  5. 使用SSH隧道 用于远程连接
  6. 启用连接池 为了获得更好的性能

例子

看 examples/ 目录:

  • 连接配置模板
  • 环境变量示例
  • 常见查询模式
  • 收藏文档格式

故障排除

连接问题

  1. 检查环境变量:确保所有引用的变量都已设置
  2. 验证网络连接:测试SSH隧道和VPN连接
  3. 检查身份验证:验证凭据和身份验证机制
  4. 审核超时:调整慢速连接的超时值

常见错误

  • CONFIG_NOT_FOUND:在搜索路径中找不到配置文件
  • ENV_VAR_NOT_SET:未定义引用的环境变量
  • CONNECTION_FAILED:网络或身份验证问题
  • NOT_CONNECTED:尝试在没有活动连接的情况下进行操作

许可证

麻省理工学院