项目简介

MyMCP是一个强大的无服务器应用程序,能够动态地将任何符合OpenAPI v3规范的API转换为一个功能齐全的Model Context Protocol (MCP) 服务器。通过它,您可以将现有API快速暴露为MCP兼容接口,支持LLM(大型语言模型)客户端进行工具调用、流式传输等功能,极大地简化了LLM应用与外部API的集成。

主要功能点

  • 动态转换OpenAPI: 能够实时解析并转换任何OpenAPI 3.x规范,将其包装成一个MCP服务器。这意味着您不需要为每个API手动编写MCP适配层。
  • 自动化工具生成: 将OpenAPI中定义的每个API端点自动转换为一个可供LLM调用的MCP工具,并生成相应的输入模式('inputSchema')。
  • 完整的MCP协议支持: 完全兼容MCP官方规范(2024-11-05),支持'initialize'、'tools/list'、'tools/call'、'prompts/list'、'resources/list'、'resources/templates/list'、'notifications/initialized'和'ping'等所有核心方法。
  • API调用与流式传输: LLM客户端可以通过MCP接口调用底层API,MyMCP负责执行实际的HTTP请求并返回结果。同时,它支持WebSocket进行流式结果传输,适用于需要实时更新或长时间运行的任务。
  • 灵活部署: 设计为在Cloudflare Workers等无服务器环境中轻松部署,具备高可用性和可伸缩性。
  • 预配置服务器: 支持为常用API配置别名(例如'tabroom'),简化访问和集成。

安装步骤

  1. 克隆仓库: 使用Git命令将项目仓库克隆到您的本地机器。
    git clone https://github.com/gmitch215/MyMCP.git
  2. 进入项目目录:
    cd MyMCP
  3. 安装依赖: 使用Bun(推荐)或npm安装项目所需的所有依赖。
    bun install
    # 或者使用npm:
    # npm install
  4. 运行开发服务器 (本地): 启动一个本地开发服务器进行测试和开发。
    bun run dev
    # 或者使用npm:
    # npm run dev
  5. 部署到Cloudflare Workers (可选): MyMCP被设计为在Cloudflare Workers上运行。您可以按照README中的部署指南将其部署到Cloudflare Workers,以获得生产环境的服务。

服务器配置

MyMCP作为一个网络服务运行,而不是由MCP客户端本地启动的进程。因此,您不需要配置 'command' 或 'args' 来“启动”MyMCP服务器。您需要在MCP客户端中配置的,是MyMCP部署实例的连接URL,它指定了要与哪个OpenAPI服务进行交互。

假设MyMCP部署后可访问的基地址是 'https://mymcp.gmitch215.xyz' (或者您自己的部署地址)。

核心MCP连接URL模式:

  • 基础MCP JSON-RPC (通过HTTP POST通信): 用于发送'initialize', 'tools/list', 'tools/call'等JSON-RPC请求。 'https://<您的MyMCP部署地址>/{OpenAPI_URL_编码后的部分_或_预配置别名}/sse'

    • 示例 (连接到自定义OpenAPI服务): 如果您希望通过MyMCP暴露 'https://api.example.com/openapi.json' 这个OpenAPI服务,连接URL将是: 'https://mymcp.gmitch215.xyz/https%3A%2F%2Fapi.example.com%2Fopenapi.json/sse'
    • 示例 (连接到预配置服务): 如果您想使用MyMCP中预配置的 'tabroom' API (定义在'src/servers.json'中),连接URL将是: 'https://mymcp.gmitch215.xyz/tabroom/sse'
  • MCP 流式传输 (通过WebSocket通信): 用于需要实时或长时间传输结果的工具调用。 'https://<您的MyMCP部署地址>/{OpenAPI_URL_编码后的部分_或_预配置别名}/stream/:task_id' (注意:通常MCP客户端会先向 '/stream' 发送一个 'POST' 请求以获取 'task_id',然后通过 'task_id' 建立WebSocket连接。)

MCP客户端配置示例 (JSON格式,仅为概念性说明,实际配置可能因客户端而异):

[
  {
    "name": "MyMCP-ExampleAPI",
    "description": "通过MyMCP连接到示例OpenAPI API,提供LLM工具",
    "url": "https://mymcp.gmitch215.xyz/https%3A%2F%2Fapi.example.com%2Fopenapi.json/sse",
    "protocol": "mcp",
    "transport": "http"
    // 如果OpenAPI API需要认证,MCP客户端可能需要在此处配置相关凭证。
  },
  {
    "name": "MyMCP-Tabroom",
    "description": "通过MyMCP连接到预配置的Tabroom API,提供LLM工具",
    "url": "https://mymcp.gmitch215.xyz/tabroom/sse",
    "protocol": "mcp",
    "transport": "http"
  }
]

基本使用方法

  1. 部署MyMCP: 首先,将MyMCP应用程序部署到您选择的无服务器平台(例如Cloudflare Workers),并获取其可访问的基地址,如 'https://my-mcp-gateway.example.com'。
  2. 准备OpenAPI规范: 准备一个您希望通过MCP暴露的API的OpenAPI 3.x规范的公共URL(例如 'https://api.petstore.io/v3/openapi.json')。
  3. 连接MCP客户端: 在兼容MCP的LLM客户端(如Claude Desktop, Cursor, Windsurf等)中,配置一个新的MCP服务器连接。连接URL应按照上述“核心MCP连接URL模式”构建。
    • 例如,如果您的MyMCP部署在 'https://my-mcp-gateway.example.com',且您想连接到 'https://api.petstore.io/v3/openapi.json',则连接URL将是 'https://my-mcp-gateway.example.com/https%3A%2F%2Fapi.petstore.io%2Fv3%2Fopenapi.json/sse'。
  4. 发现与调用工具: 一旦MCP客户端成功连接,它就可以通过 'tools/list' 方法自动发现OpenAPI中定义的所有API端点作为可用的LLM工具。LLM即可通过 'tools/call' 方法来调用这些工具,从而与底层API进行交互。

信息

分类

开发者工具