Skip to main content
Glama
infinyte

Model Context Protocol (MCP) Server

by infinyte

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

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

特征

  • 为多个 AI 提供商(Anthropic、OpenAI)提供统一的 API

  • 支持聊天完成和遗留完成

  • 工具调用支持

  • 上下文/系统消息处理

  • 基于环境的配置

  • MongoDB 数据库用于持久性和状态管理

  • 工具执行历史和分析

Related MCP server: Model Control Plane (MCP) Server

安装

# 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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/infinyte/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server