MongoDB协议服务器

一个基于TypeScript构建的MongoDB模型上下文协议(MCP)服务器,支持多实例连接、集合查询聚合与分析、模式推断及数据采样。

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

使用说明

MongoDB MCP服务器

一个用于MongoDB操作的模型上下文协议(MCP)服务器,使用TypeScript构建。

特性

  • 🔌 连接到多个MongoDB实例
  • 🔍 查询、聚合和分析集合
  • 📊 模式推理和数据采样
  • 🚀 使用TypeScript构建类型安全
  • ⚡ 无需构建步骤-直接与运行 tsx

先决条件

  • Node.js 18+(推荐:v22.4.1+)
  • 要连接的MongoDB实例
  • Claude Desktop(用于MCP集成)

安装

1.克隆和安装依赖项

git clone <your-repo-url>
cd mongo-ts-mcp
npm install

2.配置MongoDB连接

创建一个 config.json 项目根目录中的文件:

cp config.json.example config.json

编辑 config.json 使用您的MongoDB连接详细信息:

{
  "connections": {
    "local": {
      "uri": "mongodb://localhost:27017",
      "database": "mydb"
    },
    "production": {
      "uri": "mongodb://user:password@host:27017",
      "database": "prod_db"
    }
  }
}

3.使start-mcp.sh可执行(Linux/MOSC/WSL)

chmod +x start-mcp.sh

用法

本地运行(开发)

# Direct execution with tsx (no build needed!)
npm start

# Or with npx
npx tsx src/index.ts

# Watch mode (auto-reload on changes)
npm run watch

使用Claude Desktop运行

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

地点:

  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

配置:

选项A:使用start-mcp.sh(推荐)

{
  "mcpServers": {
    "mongodb": {
      "command": "bash",
      "args": ["/path/to/mongo-ts-mcp/start-mcp.sh"]
    }
  }
}

选项B:直接npx(跨平台)

{
  "mcpServers": {
    "mongodb": {
      "command": "npx",
      "args": [
        "-y",
        "tsx",
        "/path/to/mongo-ts-mcp/src/index.ts"
      ],
      "cwd": "/path/to/mongo-ts-mcp"
    }
  }
}

选项C:WSL(仅限Windows)

{
  "mcpServers": {
    "mongodb": {
      "command": "wsl",
      "args": [
        "bash",
        "-l",
        "-c",
        "cd /home/user/projects/mongo-ts-mcp && npx tsx src/index.ts 2>/tmp/mcp-mongodb-error.log"
      ]
    }
  }
}

替换 /path/to/mongo-ts-mcp 根据您的实际项目路径。

重新启动克劳德桌面

更新配置后,完全重新启动Claude Desktop以使更改生效。

可用工具

MCP服务器为Claude提供以下工具:

  • list_collections -列出数据库中的所有集合
  • query_collection -使用过滤器和排序查询文档
  • aggregate -运行MongoDB聚合管道
  • count_documents -统计与筛选器匹配的文档
  • get_schema -从采集样本推断模式
  • sample_data -获取随机样本文档
  • distinct_values -获取字段的不同值

发展

项目结构

mongo-ts-mcp/
├── src/
│   ├── index.ts        # Main entry point
│   ├── connection.ts   # MongoDB connection management
│   ├── tools.ts        # MCP tool implementations
│   └── logger.ts       # Logging utilities
├── config.json         # MongoDB connections (not committed)
├── config.json.example # Example configuration
├── start-mcp.sh        # Shell script for easy startup
├── package.json
├── tsconfig.json
└── README.md

技术栈

  • 运行时间: Node.js与 tsx (无构建步骤!)
  • 语言: TypeScript
  • MCP-SDK: @modelcontextprotocol/sdk
  • 数据库: MongoDB Node.js驱动程序
  • 模块系统: ES模块

为什么是tsx?

此项目使用 tsx 而不是传统的TypeScript编译:

✅ 无构建步骤 -直接编辑并运行
✅ 清洁进口 -没有 .js TypeScript文件中所需的扩展名
✅ 快速发展 -更改后立即重新加载
✅ 生产准备就绪 -被许多大型项目使用

建筑(可选)

如果你需要编译JavaScript进行分发:

npm run build

输出将在 dist/ 文件夹。但对于MCP的使用,这是 不必要!

故障排除

错误:找不到模块

确保所有导入都在TypeScript文件中 不要 有 .js 扩展名:

// ✅ Correct
import { something } from "./module";

// ❌ Wrong (when using tsx)
import { something } from "./module.js";

检查日志

Linux/MOSC/WSL:

# If using error log redirect
cat /tmp/mcp-mongodb-error.log

# Or check Claude Desktop logs
tail -f ~/.config/Claude/logs/mcp*.log

窗户:

# Check Claude Desktop logs
type %APPDATA%\Claude\logs\mcp*.log

连接问题

验证您的 config.json:

  1. MongoDB URI正确
  2. 数据库名称存在
  3. 允许网络访问
  4. 身份验证凭据有效

贡献

欢迎投稿!拜托:

  1. 复刻仓库
  2. 创建要素分支
  3. 进行更改
  4. 使用Claude Desktop进行测试
  5. 提交拉取请求

支持

对于问题或疑问:

  • 在GitHub上打开一个问题
  • 检查MCP文件:https://modelcontextprotocol.io

致谢

与 模型上下文协议 通过Anthropic。