使用说明

项目简介

MCP Oats 是一个演示项目,它展示了如何使用 OpenAPI Specification 自动生成 TypeScript MCP 服务器。该服务器能够将 OpenAPI 规范描述的 API 接口转换为 MCP 工具 (Tools),从而使得 LLM 客户端可以通过 MCP 协议调用这些 API 接口。

主要功能点

  • OpenAPI 工具桥接: 自动解析 OpenAPI (Swagger) 规范文件(如 'swagger.yaml'),并将其中定义的 API 接口转换为 MCP 服务器可注册和执行的工具。
  • 动态工具注册: 根据 OpenAPI 规范,动态地将 API 操作注册为 MCP 工具,无需手动编写工具定义代码。
  • 基于 SSE 的 MCP 传输: 使用 Server-Sent Events (SSE) 作为 MCP 服务器的传输协议,实现与 MCP 客户端的实时通信。
  • 输入参数校验: 利用 Zod 库根据 OpenAPI 规范自动生成工具输入参数的校验逻辑,确保请求数据的有效性。
  • API 请求处理: 接收 MCP 客户端的工具调用请求,根据 OpenAPI 定义构建并执行实际的 API 请求,并将 API 响应结果返回给客户端。

安装步骤

  1. 克隆仓库
    git clone https://github.com/wycats/mcp-oats.git
    cd mcp-oats
  2. 安装依赖 确保你已安装 Node.js 和 npm。运行以下命令安装项目依赖:
    npm install

服务器配置

MCP 服务器是为 MCP 客户端提供服务的后端应用。要让 MCP 客户端连接到 'mcp-oats' 服务器,需要在客户端配置服务器的启动信息。以下是 'mcp-oats' 服务器的 MCP 客户端配置示例(JSON 格式):

{
  "serverName": "mcp-oats-server",
  "command": "node",
  "args": [
    "src/server/main.ts"
  ],
  "transport": "sse",
  "baseUrl": "http://localhost:9999/mcp"
}

配置参数说明:

  • 'serverName': 服务器名称,这里设置为 'mcp-oats-server',与 'src/server/main.ts' 中定义的服务器名称一致。
  • 'command': 启动服务器的命令,由于 'mcp-oats' 是 Node.js 应用,所以命令为 'node'。
  • 'args': 启动命令的参数,指向服务器入口文件 'src/server/main.ts'。
  • 'transport': MCP 传输协议,'mcp-oats' 使用 SSE,所以设置为 'sse'。
  • 'baseUrl': MCP 服务器的根 URL,默认为 'http://localhost:9999/mcp'。端口 '9999' 是在 'src/server/main.ts' 中定义的服务器监听端口。'/mcp' 是 'src/server/setup-mcp.ts' 中定义的 MCP 路径前缀。

请注意: MCP 客户端需要根据此配置信息,构建连接 'mcp-oats' 服务器所需的命令和参数。实际配置可能因 MCP 客户端的具体实现而略有不同,但核心信息保持一致。

基本使用方法

  1. 启动服务器 在项目根目录下,运行以下命令启动 'mcp-oats' 服务器:

    npm run dev

    或者直接运行服务器入口文件:

    node src/server/main.ts

    服务器成功启动后,会在控制台输出 'Server is listening on port 9999...'。

  2. 配置 MCP 客户端 根据上述 服务器配置 章节的说明,配置你的 MCP 客户端,使其能够连接到运行在 'http://localhost:9999/mcp' 的 'mcp-oats-server'。

  3. 调用 OpenAPI 工具 一旦 MCP 客户端成功连接到服务器,客户端应该能够发现并调用由 OpenAPI 规范转换而来的工具。工具名称通常基于 OpenAPI Operation ID 生成。

    例如,如果 'swagger.yaml' 中定义了一个 Operation ID 为 'getPetById' 的 API 接口,那么在 MCP 客户端中,你可能可以使用名为 'getPetById' 的工具来调用该 API。

    具体的工具调用方式取决于你的 MCP 客户端实现。通常,你需要指定工具名称和相应的输入参数(这些参数也是根据 OpenAPI 规范定义的)。

示例 OpenAPI 规范 (swagger.yaml)

仓库中可能包含 'swagger.yaml' 示例文件,用于演示如何将 OpenAPI Petstore 示例 API 转换为 MCP 工具。你可以修改或替换 'swagger.yaml' 文件,以集成你自己的 OpenAPI 规范。

注意: 'mcp-oats' 只是一个演示项目,可能需要根据实际使用场景进行扩展和定制。

信息

分类

网页与API