项目简介
'rmcp-openapi' 是一个基于 Rust 语言开发的 MCP (Model Context Protocol) 服务器,其核心功能是将现有的 OpenAPI (Swagger) 规范描述的 RESTful API 自动转换成符合 MCP 协议的工具。通过这个服务器,大型语言模型 (LLM) 客户端可以以统一的、结构化的方式发现并调用这些 REST API,从而扩展其外部功能和上下文感知能力。
主要功能点
- 自动化工具生成: 自动解析 OpenAPI 规范,为其中定义的每个 REST API 操作生成对应的 MCP 工具。
- 灵活的规范加载: 支持从 URL 或本地文件加载 OpenAPI 规范文件。
- HTTP 客户端集成: 内置可配置的 HTTP 客户端,用于执行实际的 REST API 请求。
- 参数智能映射: 自动将 OpenAPI 中的路径、查询、请求体参数映射到 MCP 工具参数。
- 结构化输出支持: 从 OpenAPI 响应定义自动生成输出 Schema,确保 MCP 客户端能够理解和验证响应数据。
- 多种传输协议: 默认支持 StreamableHttp,并可选支持 SSE (Server-Sent Events) 传输协议,提供灵活的客户端连接方式。
- 安全与授权: 支持多种授权模式,可在 MCP 规范合规性(默认不转发授权头)和代理需求之间取得平衡。
- 详尽错误处理: 区分协议验证错误和工具执行错误,并提供详细的错误信息,便于调试和客户端处理。
安装步骤
- 安装 Rust 环境: 首先,请确保您的系统已安装 Rust 编程语言及其官方包管理器 Cargo。如果您尚未安装,请访问 rust-lang.org 网站,按照指引进行安装。
- 安装 'rmcp-openapi-server':
打开终端(命令行工具),运行以下命令安装 'rmcp-openapi-server' 二进制程序:
此命令会将服务器可执行文件编译并安装到您的 Cargo 运行时路径中,使其可以直接从命令行调用。cargo install rmcp-openapi-server
服务器配置 (Claude Desktop 示例)
MCP 客户端(如 Claude Desktop)需要配置 MCP 服务器的启动命令及其参数,以便与 MCP 服务器建立连接。以下是一个用于连接 Swagger Petstore API 的配置示例,您可以将其添加到您的 MCP 客户端配置中:
{ "servers": { "petstore-api": { // 您为该 MCP 服务器实例定义的唯一名称 "command": "rmcp-openapi-server", // 启动 MCP 服务器的命令行可执行文件名称 "args": [ "https://petstore.swagger.io/v2/swagger.json", // 传递 OpenAPI 规范文件的 URL 或本地路径 "--port", "8080", // 指定 MCP 服务器监听的本地端口 "--base-url", "https://petstore.swagger.io/v2" // 指定实际后端 REST API 的基础 URL ] } } }
基本使用方法
-
启动服务器: 在终端中运行以下命令。您需要提供一个 OpenAPI 规范的 URL 或文件路径,以及后端 API 的 'base-url'。 例如,使用公共的 Swagger Petstore API:
rmcp-openapi-server https://petstore.swagger.io/v2/swagger.json --port 8080 --base-url https://petstore.swagger.io/v2服务器成功启动后,您会看到类似 "OpenAPI MCP Server starting" 和 "Server ready for MCP client connections" 的信息,并提示连接 URL,默认情况下为 'http://127.0.0.1:8080/mcp'。
-
连接 MCP 客户端: 使用任何支持 Model Context Protocol 的客户端(例如,Claude Desktop 或基于官方 MCP SDK 开发的自定义应用)连接到 'rmcp-openapi-server' 提供的 MCP 端点,通常是 'http://127.0.0.1:8080/mcp'。 客户端连接后,将能够:
- 列出可用工具: 发现所有从 OpenAPI 规范自动生成的 API 工具(例如 'addPet', 'findPetsByStatus', 'getPetById' 等)。
- 调用工具: 通过 MCP 协议调用这些工具,向其传递必要的参数,并接收结构化的 API 响应。
- AI 助手集成: LLM 可以利用这些工具与外部服务进行交互,例如查询宠物信息、添加新宠物或更新宠物状态,从而扩展其功能和访问实时上下文信息。
信息
分类
网页与API