综合介绍
openapi-mcp-server 是一个开源工具,旨在将符合 OpenAPI v3.1 标准的API转化为AI可用的资源。它由 janwilmake 维护,基于 Model Context Protocol(MCP)协议开发。项目的核心功能是充当API代理,让开发者通过 Claude Desktop 等工具直接与API交互。这个工具特别适合需要快速集成API的开发者和AI工程师。它的设计简单直接,开源在 GitHub 上,任何人都可以免费使用或贡献代码。
功能列表
- API转MCP代理:将 OpenAPI 规范的端点转为 Claude 可用的工具。
- 支持多种格式:可以将API转换为 OpenAI、Anthropic 或 MCP 工具格式。
- 命令行操作:提供 CLI 工具,方便程序化调用API。
- 示例服务器:内置 Petstore API 示例,帮助用户快速上手。
- 开源免费:代码公开,用户可自由修改和扩展。
使用帮助
openapi-mcp-server 不需要复杂安装,直接通过 GitHub 获取源码后运行。以下是详细步骤。
安装与运行
- 准备环境
确保你的电脑安装了 Node.js 和 pnpm(推荐)。可以用命令检查:
node -v
pnpm -v
如果没有,访问 https://nodejs.org
和 https://pnpm.io
下载安装。
2. 克隆仓库
打开终端,输入:
git clone https://github.com/janwilmake/openapi-mcp-server.git
cd openapi-mcp-server
- 安装依赖
在项目目录运行:
pnpm install
- 构建项目
构建代码以确保正常运行:
pnpm build
- 链接全局命令
让命令行工具可用:
npm link
配置 Claude Desktop
- 编辑配置文件
找到 Claude Desktop 的配置文件,通常在:
- Windows:
%AppData%\Claude\claude_desktop_config.json
- Mac:
~/Library/Application Support/Claude/claude_desktop_config.json
如果没有,创建一个新文件。
- 添加 MCP 服务器
在配置文件中加入以下内容:
{
"mcpServers": {
"petstore-api": {
"command": "npx",
"args": ["openapi-mcp-server", "/path/to/petstore-openapi.json"]
}
}
}
将 /path/to/petstore-openapi.json
替换为你的 OpenAPI 文件路径,比如项目中的 examples/petstore-openapi.json
。
3. 启动 Claude Desktop
运行 Claude Desktop,它会自动加载此服务器。
使用 CLI 调用API
- 准备 OpenAPI 文件
确保你有目标API的 OpenAPI v3.1 JSON 文件,比如petstore-openapi.json
。 - 运行命令
在终端输入:
npx openapi-mcp-server /path/to/your-openapi.json
这会启动一个代理服务器。
3. 测试 Petstore 示例
项目自带一个 Petstore API 示例。运行:
npx openapi-mcp-server examples/petstore-openapi.json
然后在 Claude Desktop 中与它交互,比如输入“get pet by ID”。
程序化转换API
- 导入模块
在你的 Node.js 项目中,添加代码:
import { OpenAPIToMCPConverter } from 'openapi-mcp-server';
- 转换API
使用以下代码将 OpenAPI 转为工具格式:
const converter = new OpenAPIToMCPConverter(openApiSpec); // openApiSpec 是你的 JSON 数据
const openAiTools = await converter.convertToOpenAITools(); // 转为 OpenAI 格式
const mcpTools = converter.convertToMCPTools(); // 转为 MCP 格式
- 调用API
使用 HttpClient 执行请求:
import { HttpClient } from 'openapi-mcp-server';
const httpClient = new HttpClient({ baseUrl: 'https://api.example.com' }, openApiSpec);
const response = await httpClient.executeOperation(mcpTools.openApiLookup['getPetById'], { petId: 123 });
操作建议
- 调试问题:如果 Claude 崩溃,检查 OpenAPI 文件是否规范,可用
https://editor.swagger.io
验证。 - 更新代码:修改代码后,运行
pnpm build
并重启 Claude Desktop。 - 学习示例:查看
examples/README.md
,了解 Petstore 服务器的 CRUD 操作。
应用场景
- 快速API集成
开发者想为项目添加宠物管理功能。他用 openapi-mcp-server 加载 Petstore API,在 Claude 中直接测试端点,省去手动编写代码的时间。 - AI辅助开发
AI工程师需要生成API调用代码。他通过工具转换 OpenAPI 文件,用 Claude 生成完整请求代码。 - 教学演示
老师用 Petstore 示例,向学生展示如何将API接入AI工具,学习API交互。
QA
- 需要付费吗?
不需要,项目完全开源免费,托管在 GitHub 上。 - 支持哪些API?
只要是 OpenAPI v3.1 规范的API都可以,比如 GitHub、Cloudflare 等。 - Claude 不识别怎么办?
检查配置文件路径和 OpenAPI 文件是否正确,确保服务器已启动。