M

MCP多云模型连接器

一个统一的API服务器,通过一致的接口实现与多个AI模型提供商(如Anthropic和OpenAI)的交互,支持聊天完成、工具调用和上下文处理。

rag-systemsautonomous-agentsagent-orchestration

320 查看 · 2026-07-07 更新

简介

一个统一的API服务器,通过一致的接口实现与多个AI模型提供商(如Anthropic和OpenAI)的交互,支持聊天完成、工具调用和上下文处理。

简介

一个统一的API服务器,通过一致的接口实现与多个AI模型提供商(如Anthropic和OpenAI)的交互,支持聊天完成、工具调用和上下文处理。

模型上下文协议 (MCP) 服务器

一个简单的模型上下文协议服务器实现,为多个 AI 模型提供商提供统一的 API。

特性

  • 多个 AI 提供商(Anthropic、OpenAI)的统一 API
  • 支持聊天补全和传统补全
  • 工具调用支持
  • 上下文/系统消息处理
  • 基于环境的配置
  • 使用 MongoDB 数据库进行持久化和状态管理
  • 工具执行历史记录和分析

安装

bash

克隆仓库

git clone cd testmcp

安装依赖

npm install

运行交互式设置

npm run setup

设置脚本将引导您完成必要的 API 密钥配置:

  • ANTHROPIC_API_KEY - 用于 Claude 模型
  • OPENAI_API_KEY - 用于 GPT 模型和 DALL-E 图像生成
  • STABILITY_API_KEY - 用于 Stable Diffusion 图像生成
  • GOOGLE_CSE_API_KEYGOOGLE_CSE_ID - 用于网络搜索功能
  • BING_SEARCH_API_KEY - 用于备用网络搜索

如果您愿意,也可以手动编辑 .env 文件。

MongoDB 设置

MCP 服务器使用 MongoDB 进行数据持久化。您可以选择以下几种方式来设置 MongoDB:

选项 1:自动化设置(推荐)

运行 MongoDB 设置脚本,该脚本将引导您完成整个过程:

bash

运行 MongoDB 设置脚本

npm run setup-mongodb

此脚本将:

  1. 检查 Docker 是否可用
  2. 使用 Docker Compose 启动 MongoDB(如果可用)
  3. 在您的 .env 文件中配置连接
  4. 验证 MongoDB 连接

选项 2:手动 Docker 设置

最简单的方法是使用包含的 Docker Compose 配置来启动 MongoDB:

bash

在 Docker 中启动 MongoDB 和 Mongo Express

docker compose up -d

更新您的 .env 文件中的连接字符串

echo "MONGODB_URI=mongodb://mcpuser:mcppassword@localhost:27017/mcp-server" >> .env

MongoDB 将在 mongodb://mcpuser:mcppassword@localhost:27017/mcp-server 可用
Mongo Express(Web 管理界面)将在 http://localhost:8081 可用

选项 3:本地 MongoDB 安装

如果您希望在本地安装 MongoDB:

  1. https://www.mongodb.com/try/download/community 下载并安装 MongoDB

  2. 启动 MongoDB 服务

  3. 更新您的 .env 文件:

    MONGODB_URI=mongodb://localhost:27017/mcp-server

选项 4:MongoDB Atlas(云)

对于生产环境,推荐使用 MongoDB Atlas:

  1. https://www.mongodb.com/cloud/atlas 创建账户

  2. 创建一个新的集群

  3. 设置数据库用户并白名单您的 IP 地址

  4. 获取连接字符串并更新您的 .env 文件:

    MONGODB_URI=mongodb+srv://:@.mongodb.net/mcp-server?retryWrites=true&w=majority

数据库迁移

要将现有数据迁移到 MongoDB:

bash

运行迁移脚本

npm run migrate-mongodb

此脚本将:

  1. 将工具定义迁移到 MongoDB
  2. 将配置(如 API 密钥)迁移到 MongoDB
  3. 如果有备份数据,则导入备份数据

使用

启动服务器

bash

交互式启动(检查 API 密钥)

npm start

开发模式,带自动重载

npm run dev

快速启动(跳过环境检查)

npm run quick-start

使用 PM2 进程管理器启动服务器

npm run pm2:start

在生产模式下使用 PM2 启动服务器

npm run pm2:start:prod

服务器将在 http://localhost:3000(或您在 .env 中指定的端口)上运行。

启动选项

  1. 标准启动 (npm start):

    • 检查是否已配置 API 密钥
    • 如果未找到密钥则提示进行设置
    • 推荐首次用户使用
  2. 开发模式 (npm run dev):

    • 使用 nodemon 实现代码更改时自动重载
    • 仍然执行环境检查
    • 最适合开发
  3. 快速启动 (npm run quick-start):

    • 跳过所有环境检查- 立即启动服务器
  • 当您确定配置正确时非常有用
  1. PM2 生产模式 (npm run pm2:start:prod):
    • 使用 PM2 进程管理器运行服务器
    • 如果服务器崩溃,会自动重启
    • 为生产环境优化
    • 跳过环境检查

使用 PM2 进程管理器

可以使用 PM2(一个用于 Node.js 应用程序的生产进程管理器)来运行服务器。PM2 提供了以下功能:

  • 进程管理(崩溃后重启)
  • 日志管理
  • 性能监控
  • 负载均衡(适用于多个实例)

PM2 命令

bash

使用 PM2 启动服务器

npm run pm2:start

以生产模式启动

npm run pm2:start:prod

查看日志

npm run pm2:logs

监控性能

npm run pm2:monit

重启服务器

npm run pm2:restart

停止服务器

npm run pm2:stop

从 PM2 中移除服务器

npm run pm2:delete

PM2 的配置存储在 ecosystem.config.js 文件中。您可以修改此文件以更改:

  • 进程名称
  • 环境变量
  • 内存限制
  • 部署配置
  • 实例数量(用于负载均衡)

API 端点

POST /mcp/:provider

通过统一的 API 向 AI 模型发起请求。

URL 参数:

  • provider: 要使用的 AI 提供商 (anthropicopenai)

请求体: json { "messages": [ { "role": "user", "content": "您的提示内容" } ], "model": "claude-3-opus-20240229", // 可选,特定于提供商的模型名称 "tools": [...], // 可选,用于函数调用的工具 "context": "系统消息或上下文" // 可选 }

或者(旧格式):

json { "prompt": "您的提示内容", "model": "claude-3-opus-20240229", // 可选 "context": "系统消息或上下文" // 可选 }

响应: 返回来自提供商 API 的原始响应。

GET /tools/available

获取所有可用工具的详细信息列表。

查询参数:

  • format - 响应格式:json(默认)、yamltablehtml
  • category - 按类别筛选工具(可选)
  • enabled - 按启用状态筛选:true(默认)或 false
  • search - 按名称、描述或标签搜索工具
  • provider - 按提供商筛选工具(例如 openaigoogle
  • limit - 返回的最大工具数量(用于分页)
  • offset - 分页偏移量(默认:0)

响应(JSON 格式): json { "success": true, "count": 10, "metadata": { "categories": ["web", "image", "utility"], "providers": ["openai", "anthropic", "internal"], "totalCount": 24, "offset": 0, "limit": 10 }, "tools": [ { "name": "web_search", "description": "在网络上搜索信息", "category": "web", "version": "1.0.0", "provider": "google", "enabled": true, "parameters": { "query": { "type": "string", "description": "搜索查询", "required": true }, "limit": { "type": "number", "description": "最大结果数", "required": false, "default": 5 } }, "usage": { "endpoint": "/tools/web/search", "method": "POST", "parameters": { /* 同上 */ } }, "metadata": { "createdAt": "2023-10-15T12:00:00Z", "updatedAt": "2024-04-20T09:30:00Z", "usageCount": 1245 } } // ... 更多工具 ] }

GET /health

健康检查端点,如果服务器正在运行则返回状态码 200。

数据管理

数据库备份

您可以创建和管理数据库备份:

bash

创建完整备份

npm run backup-mongodb

创建包含执行历史的备份

npm run backup-mongodb -- --with-executions

列出现有备份

npm run backup-mongodb -- --list

测试数据库连接

要验证您的 MongoDB 设置:

bash

运行数据库测试脚本

npm run test-mongodb### 示例客户端

命令行客户端

测试客户端包含在 src/client.js 中。要运行它:

bash node src/client.js

Web 客户端

当服务器运行时,可以在 http://localhost:3000 访问一个简单的 Web 界面。您可以直接从浏览器中使用此界面来测试 API。

可用工具

MCP 服务器提供了一个工具发现端点,允许用户和 AI 代理以编程方式列出所有可用工具:

工具发现

GET /tools/available - 列出所有带有详细信息的可用工具。

  • 支持多种格式:JSON、YAML、HTML 和 ASCII 表格
  • 提供按类别、提供商和搜索词过滤的功能
  • 包含每个工具的详细元数据和使用示例

示例用法: bash

获取 JSON 格式的全部工具

curl http://localhost:3000/tools/available

获取特定类别的工具

curl http://localhost:3000/tools/available?category=web

搜索与图像相关的工具

curl http://localhost:3000/tools/available?search=image

获取所有工具的格式化 HTML 页面

curl http://localhost:3000/tools/available?format=html > tools.html

Web 搜索工具

服务器包括内置的 Web 搜索和检索工具:

  1. Web 搜索 (/tools/web/search)

    • 根据给定查询搜索网络上的信息
    • 参数:query(必需),limit(可选)
    • 需要环境变量:GOOGLE_CSE_API_KEYGOOGLE_CSE_ID
    • 如果 Google 搜索失败,则回退到 BING_SEARCH_API_KEY
  2. Web 内容 (/tools/web/content)

    • 从特定 URL 检索并提取内容
    • 参数:url(必需),useCache(可选)
  3. Web 批处理 (/tools/web/batch)

    • 并行从多个 URL 检索内容
    • 参数:urls(必需数组),useCache(可选)

图像生成工具

服务器还包括图像生成、编辑和变体工具:

  1. 生成图像 (/tools/image/generate)

    • 根据文本提示生成图像
    • 参数:
      • prompt(必需):图像的详细描述
      • provider(可选):openaistability(默认为 openai
      • options(可选):特定于提供商的选项
  2. 编辑图像 (/tools/image/edit)

    • 使用文本提示编辑现有图像
    • 参数:
      • imagePath(必需):要编辑的图像路径
      • prompt(必需):要进行的编辑的描述
      • maskPath(可选):掩码图像路径
  3. 创建图像变体 (/tools/image/variation)

    • 创建现有图像的变体
    • 参数:
      • imagePath(必需):要创建变体的图像路径

注意: 要使用这些工具,您需要在 .env 文件中设置 API 密钥:

  • 对于 OpenAI 图像:OPENAI_API_KEY
  • 对于 Stability AI 图像:STABILITY_API_KEY
  • 对于 Web 搜索:GOOGLE_CSE_API_KEYGOOGLE_CSE_ID

与 AI 模型的工具集成

MCP 服务器自动处理与 AI 模型的工具调用和执行。当模型决定使用某个工具时,服务器会:

  1. 使用提供的参数执行请求的工具
  2. 将工具的响应返回给模型
  3. 模型可以将工具的响应整合到其最终答案中

AI 模型的工具发现

AI 模型可以使用 /tools/available 端点来发现可用的工具及其使用方法。这特别适用于:

  • 运行时动态工具发现
  • AI 代理的自文档化
  • 使 AI 系统能够适应可用功能

示例系统提示用于 AI 模型:

您可以通过 MCP 服务器访问外部工具。 在使用任何工具之前,您应该通过调用以下命令检查可用的工具: GET /tools/available

这将返回所有可用工具及其参数和使用说明的列表。 然后,您可以按照提供的使用模式使用这些工具。

示例工具用法请参阅 /examples 目录以获取演示工具使用方法的示例代码。

添加新的提供商或工具

添加新的AI提供商

要添加新的AI提供商,请执行以下步骤:

  1. 将提供商的SDK添加到项目中
  2. server.js 中创建一个新的处理函数
  3. 在主路由处理程序中添加一个新的情况

添加新工具

要在服务器上添加新工具,请执行以下步骤:

  1. /src/tools 目录下创建一个新的工具实现
  2. 将工具定义添加到 tool-definitions.js
  3. 更新 server.js 中的工具执行函数
  4. 如果需要,为直接使用工具添加新的API端点

许可证

ISC

来源