项目简介

本项目 'Apifox MCP Demo' 是一个 MCP (Model Context Protocol) 服务器的示例实现,旨在演示如何将 Apifox 这类 API 协作平台上的接口信息,通过 MCP 协议提供给 LLM (大型语言模型) 客户端使用。该服务器实现了一个工具,允许 LLM 客户端通过 Apifox 接口的协作链接,获取该接口的 OpenAPI 定义,从而帮助 LLM 理解和调用 Apifox 中定义的 API 接口。

主要功能点

  • MCP 服务器: 基于 '@modelcontextprotocol/sdk/server' 构建,实现了 MCP 协议的核心功能。
  • 工具注册: 注册了 'get_endpoint_oas_by_link' 工具,允许 LLM 客户端通过 Apifox 接口协作链接获取 OpenAPI 定义。
  • OpenAPI 定义获取: 通过 Apifox API,根据项目 ID 和接口 ID 获取指定接口的 OpenAPI 3.0 JSON 格式定义。
  • SSE 传输协议: 使用 SSE (Server-Sent Events) 作为 MCP 服务器与客户端之间的通信协议。
  • 环境变量配置: 通过 '.env' 文件配置 Apifox Access Token,保证 API 访问的安全性。

安装步骤

  1. 克隆仓库

    git clone https://github.com/Tzott/apifox-mcp-demo.git
    cd apifox-mcp-demo
  2. 配置环境变量 复制 '.env.example' 文件为 '.env',并根据提示在 '.env' 文件中填入你的 Apifox Access Token。Access Token 需要在 Apifox 客户端中创建。

    cp .env.example .env
  3. 启动服务器 确保你的环境中已安装 NodeJS (>= 18) 和 pnpm。如果未安装 pnpm,可以先运行 'npm i -g pnpm' 进行安装。然后执行以下命令安装依赖、构建项目并启动服务器:

    pnpm i && pnpm build && pnpm start
  4. 查看启动日志 启动成功后,你会在终端看到类似以下的日志信息,其中包含了 SSE 和 Message endpoint 的地址:

    SSE endpoint: http://localhost:4444/sse
    Message endpoint: http://localhost:4444/messages
    HTTP server listening on port 4444

服务器配置

MCP 客户端需要配置以下信息以连接到 'Apifox MCP Demo' 服务器。以下是 JSON 格式的配置信息示例,请根据实际情况填写 'server name' 和其他参数。

{
  "serverName": "Apifox MCP Server Demo",
  "command": "node",
  "args": [
    "lib/index.js"
  ],
  "transport": "sse",
  "baseUrl": "http://localhost:4444"
}

配置参数说明:

  • 'serverName': MCP 服务器的名称,可以自定义,用于在客户端中标识该服务器。
  • 'command': 启动 MCP 服务器的命令,这里使用 'node' 运行 JavaScript 文件。
  • 'args': 启动命令的参数,这里指向编译后的服务器入口文件 'lib/index.js'。
  • 'transport': 使用的传输协议,本项目使用 'sse' (Server-Sent Events)。
  • 'baseUrl': MCP 服务器的基础 URL,客户端将根据此 URL 拼接具体的 endpoint 地址。

基本使用方法

  1. 启动 MCP 服务器: 按照安装步骤启动 'Apifox MCP Demo' 服务器。

  2. 配置 MCP 客户端: 在支持 MCP 协议的 LLM 客户端 (如 Cursor) 中,添加一个新的 MCP 服务器配置,填入上面提供的 JSON 配置信息,并确保 'baseUrl' 与服务器实际运行地址一致。

  3. 连接 MCP 服务器: 在客户端中连接到配置好的 MCP 服务器。如果配置正确,客户端应该显示连接成功的提示。

  4. 调用工具: 在 LLM 客户端中,可以使用 'get_endpoint_oas_by_link' 工具。该工具需要 'projectId' (Apifox 项目 ID) 和 'endpointId' (Apifox 接口 ID) 作为参数。你可以从 Apifox 接口的协作链接中提取这两个 ID。例如,对于链接 'https://app.apifox.com/link/project/5898808/apis/api-263537040','projectId' 为 '5898808','endpointId' 为 '263537040'。

  5. 获取 OpenAPI 定义: LLM 客户端调用 'get_endpoint_oas_by_link' 工具后,MCP 服务器会向 Apifox API 发起请求,获取指定接口的 OpenAPI 定义,并将结果返回给 LLM 客户端。LLM 客户端可以使用 OpenAPI 定义来理解和操作 Apifox API 接口。

信息

分类

开发者工具