Model Context Protocol (MCP) Server

by infinyte

Integrations

  • Enables environment-based configuration of API keys and server settings through .env file management

  • Supports development mode with automatic server reloading when code changes are detected

  • Provides access to OpenAI models (GPT) and DALL-E image generation through a unified API, supporting chat completions, legacy completions, and tool calling

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

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

特征

  • 为多个 AI 提供商(Anthropic、OpenAI)提供统一的 API
  • 支持聊天完成和遗留完成
  • 工具调用支持
  • 上下文/系统消息处理
  • 基于环境的配置
  • MongoDB 数据库用于持久性和状态管理
  • 工具执行历史和分析

安装

# Clone the repository git clone <repository-url> cd testmcp # Install dependencies npm install # Run the interactive setup npm run setup

安装脚本将指导您配置必要的 API 密钥:

  • ANTHROPIC_API_KEY - 适用于 Claude 模型
  • OPENAI_API_KEY - 用于 GPT 模型和 DALL-E 图像生成
  • STABILITY_API_KEY - 用于稳定扩散图像生成
  • GOOGLE_CSE_API_KEYGOOGLE_CSE_ID - 用于网络搜索功能
  • BING_SEARCH_API_KEY - 用于后备网络搜索

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

MongoDB 设置

MCP 服务器使用 MongoDB 进行数据持久化。您可以通过多种方式设置 MongoDB:

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

运行 MongoDB 安装脚本,它将指导您完成整个过程:

# Run the MongoDB setup script npm run setup-mongodb

该脚本将:

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

选项 2:手动 Docker 设置

开始使用 MongoDB 最简单的方法是使用包含的 Docker Compose 配置:

# Start MongoDB and Mongo Express in Docker docker compose up -d # Update your .env file with the connection string 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://<username>:<password>@<cluster>.mongodb.net/mcp-server?retryWrites=true&w=majority

数据库迁移

要将现有数据迁移到 MongoDB:

# Run the migration script npm run migrate-mongodb

该脚本将:

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

用法

启动服务器

# Interactive startup (checks for API keys) npm start # Development mode with auto-reload npm run dev # Quick start (skips environment checks) npm run quick-start # Start server with PM2 process manager npm run pm2:start # Start server with PM2 in production mode npm run pm2:start:prod

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

启动选项
  1. 标准启动npm start ):
    • 检查是否配置了 API 密钥
    • 如果未找到密钥,则提示设置
    • 建议首次使用者
  2. 开发模式npm run dev ):
    • 使用 nodemon 在代码更改时自动重新加载
    • 仍执行环境检查
    • 最适合开发
  3. 快速启动npm run quick-start ):
    • 绕过所有环境检查
    • 立即启动服务器
    • 当您知道您的配置正确时很有用
  4. PM2 生产模式npm run pm2:start:prod ):
    • 使用 PM2 进程管理器运行服务器
    • 如果服务器崩溃则自动重启
    • 针对生产环境进行了优化
    • 绕过环境检查

使用 PM2 进程管理器

该服务器可以与 PM2(Node.js 应用程序的生产流程管理器)一起运行。PM2 提供以下功能:

  • 进程管理(崩溃时重启)
  • 日志管理
  • 性能监控
  • 负载平衡(针对多个实例)
PM2 命令
# Start the server with PM2 npm run pm2:start # Start in production mode npm run pm2:start:prod # View logs npm run pm2:logs # Monitor performance npm run pm2:monit # Restart the server npm run pm2:restart # Stop the server npm run pm2:stop # Remove the server from PM2 npm run pm2:delete

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

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

API 端点

POST /mcp/:provider

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

URL 参数:

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

请求正文:

{ "messages": [ { "role": "user", "content": "Your prompt here" } ], "model": "claude-3-opus-20240229", // Optional, provider-specific model name "tools": [...], // Optional, tools for function calling "context": "System message or context" // Optional }

或(旧格式):

{ "prompt": "Your prompt here", "model": "claude-3-opus-20240229", // Optional "context": "System message or context" // Optional }

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

GET /tools/available

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

查询参数:

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

响应(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": "Search the web for information", "category": "web", "version": "1.0.0", "provider": "google", "enabled": true, "parameters": { "query": { "type": "string", "description": "The search query", "required": true }, "limit": { "type": "number", "description": "Maximum number of results", "required": false, "default": 5 } }, "usage": { "endpoint": "/tools/web/search", "method": "POST", "parameters": { /* same as above */ } }, "metadata": { "createdAt": "2023-10-15T12:00:00Z", "updatedAt": "2024-04-20T09:30:00Z", "usageCount": 1245 } } // ... more tools ] }
GET /health

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

数据管理

数据库备份

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

# Create a full backup npm run backup-mongodb # Create a backup with execution history npm run backup-mongodb -- --with-executions # List existing backups npm run backup-mongodb -- --list
测试数据库连接

要验证您的 MongoDB 设置:

# Run the database test script npm run test-mongodb

示例客户端

命令行客户端

src/client.js中包含一个测试客户端。运行方法如下:

node src/client.js
Web 客户端

服务器运行时,http://localhost:3000处有一个简单的 Web 界面。您可以使用它直接从浏览器测试 API。

可用工具

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

工具发现

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

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

使用示例:

# Get all tools in JSON format curl http://localhost:3000/tools/available # Get tools in a specific category curl http://localhost:3000/tools/available?category=web # Search for image-related tools curl http://localhost:3000/tools/available?search=image # Get a formatted HTML page of all tools curl http://localhost:3000/tools/available?format=html > tools.html

网络搜索工具

该服务器包括内置的网络搜索和检索工具:

  1. 网页搜索/tools/web/search
    • 在网络上搜索有关给定查询的信息
    • 参数: query (必需)、 limit (可选)
    • 需要: GOOGLE_CSE_API_KEYGOOGLE_CSE_ID环境变量
    • 如果 Google 搜索失败,则返回BING_SEARCH_API_KEY
  2. 网页内容/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
  • 对于稳定性 AI 图像: STABILITY_API_KEY
  • 对于网络搜索: GOOGLE_CSE_API_KEYGOOGLE_CSE_ID

工具与 AI 模型的集成

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

  1. 使用提供的参数执行请求的工具
  2. 返回工具对模型的响应
  3. 然后,模型可以将工具的响应纳入其最终答案中
人工智能模型的工具发现

AI 模型可以使用/tools/available端点来发现可用的工具以及如何使用它们。这在以下情况下尤其有用:

  • 运行时动态工具发现
  • 人工智能代理的自我文档
  • 使人工智能系统能够适应可用的能力

AI 模型的系统提示示例:

You have access to external tools through the MCP server. Before using any tools, you should check what tools are available by calling: GET /tools/available This will return a list of all available tools with their parameters and usage instructions. You can then use these tools by following the provided usage patterns.

工具使用示例

请参阅/examples目录中演示工具用法的示例代码。

添加新的提供程序或工具

添加新的AI提供商

要添加新的 AI 提供程序:

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

添加新工具

要向服务器添加新工具:

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

执照

国际学习中心

-
security - not tested
F
license - not found
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

统一的API服务器,通过一致的接口实现与Anthropic、OpenAI等多家AI模型提供商的交互,支持聊天补全、工具调用、上下文处理。

  1. 特征
    1. 安装
      1. MongoDB 设置
        1. 选项 1:自动设置(推荐)
        2. 选项 2:手动 Docker 设置
        3. 选项 3:本地 MongoDB 安装
        4. 选项 4:MongoDB Atlas(云)
      2. 数据库迁移
        1. 用法
          1. 启动服务器
          2. 使用 PM2 进程管理器
          3. API 端点
          4. 数据管理
          5. 示例客户端
        2. 可用工具
          1. 工具发现
          2. 网络搜索工具
          3. 图像生成工具
          4. 工具与 AI 模型的集成
          5. 工具使用示例
        3. 添加新的提供程序或工具
          1. 添加新的AI提供商
          2. 添加新工具
        4. 执照

          Related MCP Servers

          • -
            security
            A
            license
            -
            quality
            This server facilitates the invocation of AI models from providers like Anthropic, OpenAI, and Groq, enabling users to manage and configure large language model interactions seamlessly.
            Last updated -
            4
            Python
            MIT License
          • -
            security
            -
            license
            -
            quality
            An open standard server implementation that enables AI assistants to directly access APIs and services through Model Context Protocol, built using Cloudflare Workers for scalability.
            Last updated -
            TypeScript
          • -
            security
            F
            license
            -
            quality
            A modern AI service proxy that enables interaction with multiple AI providers (Anthropic Claude, OpenAI) through a unified API, deployed globally using Cloudflare Workers.
            Last updated -
            13
            TypeScript
          • A
            security
            F
            license
            A
            quality
            A Model Context Protocol server that enables AI assistants to interact with the Omi API for retrieving and creating conversations and memories for users.
            Last updated -
            4
            TypeScript

          View all related MCP servers

          ID: x9ucq0kwqj