npx claudepluginhub shenjingnan/api2mcpAI 辅助将 REST API 转换为 MCP 工具,支持生成 openapi.yaml 和 mcp.json 配置
将 OpenAPI 规范动态转换为 MCP (Model Context Protocol) 工具。
# 推荐使用 npx,无需安装
npx api2mcp --url https://petstore3.swagger.io/api/v3/openapi.json
# 或全局安装
npm install -g api2mcp
# 或
pnpm add -g api2mcp
# 克隆仓库
git clone https://github.com/shenjingnan/api2mcp.git
cd api2mcp
# 安装依赖
pnpm install
# 构建
pnpm build
无需安装,直接使用 npx 运行:
# 基本使用
npx api2mcp --url https://petstore3.swagger.io/api/v3/openapi.json
# 指定基础 URL
npx api2mcp --url ./openapi.json --base-url https://api.example.com
# 带认证头
npx api2mcp --url https://api.example.com/openapi.json --headers '{"Authorization":"Bearer xxx"}'
# 带工具前缀
npx api2mcp --url https://api.example.com/openapi.json --prefix myapi
# 调试模式
npx api2mcp --url https://api.example.com/openapi.json --debug
如果需要全局安装:
# 使用 pnpm 全局安装
pnpm add -g api2mcp
# 或使用 npm 全局安装
npm install -g api2mcp
# 然后直接运行
api2mcp --url https://petstore3.swagger.io/api/v3/openapi.json
| 参数 | 简写 | 说明 |
|---|---|---|
--url | -u | OpenAPI 文档 URL 或本地文件路径 |
--base-url | -b | API 基础 URL (覆盖 OpenAPI servers) |
--timeout | -t | 请求超时时间 (毫秒) |
--headers | -h | 自定义请求头 (JSON 字符串) |
--prefix | -p | 工具名前缀 |
--mode | -m | 工作模式:default(默认)或 ondemand(按需) |
--debug | -d | 启用调试模式 |
--fixed-params | -f | 固定参数 (JSON 字符串或 key=value 格式),这些参数会注入到每个 API 请求中,但不会暴露给 LLM |
支持以下配置文件名:
api2mcp.jsonapi2mcp.config.json.api2mcp.json配置文件示例:
{
"openapiUrl": "https://api.example.com/openapi.json",
"baseUrl": "https://api.example.com",
"timeout": 30000,
"headers": {
"Authorization": "Bearer your-token"
},
"toolPrefix": "myapi",
"mode": "default"
}
api2mcp 支持两种工作模式:
将所有 API 直接转换为 MCP 工具。适合 API 数量较少的场景。
npx api2mcp --url https://api.example.com/openapi.json --mode default
当 OpenAPI 文档包含大量端点(如数百或数千个)时,按需模式提供更好的体验:
npx api2mcp --url https://api.example.com/openapi.json --mode ondemand
| 工具名 | 功能 |
|---|---|
api_list | 分页浏览所有 API,支持按标签过滤 |
api_search | 模糊搜索 API(名称、摘要、描述、路径) |
api_detail | 获取 API 的详细信息和参数 Schema |
api_execute | 直接执行 API 调用 |
用户: 我需要查询用户信息
LLM 调用流程:
1. api_search(query="user") → 找到相关 API
2. api_detail(id="get_user") → 查看参数要求
3. api_execute(operationId="get_user", parameters={userId: 123}) → 执行调用
| 环境变量 | 说明 |
|---|---|
OPENAPI_URL | OpenAPI 文档 URL |
API_BASE_URL | API 基础 URL |
API_TIMEOUT | 请求超时时间 (毫秒) |
API_HEADERS | 自定义请求头 (JSON 字符串) |
API_FIXED_PARAMS | 固定参数 (JSON 字符串或 key=value 格式),这些参数会注入到每个 API 请求中,但不会暴露给 LLM |
DEBUG | 启用调试模式 |
固定参数是一种特殊的参数,会在每次 API 请求中自动注入,但不会暴露给 LLM。适用于 API 密钥、Token 等敏感信息。
通过外部配置传入固定参数:
--fixed-params 'key=YOUR_API_KEY' 或 --fixed-params '{"key":"YOUR_API_KEY"}'API_FIXED_PARAMS='key=YOUR_API_KEY' 或 API_FIXED_PARAMS='{"key":"YOUR_API_KEY"}'"fixedParams": {"key": "YOUR_API_KEY"}完整示例参见
examples/amap-geo-assistant/和examples/caiyun-weather/。
在 Claude Desktop 配置文件中添加:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"api2mcp": {
"command": "npx",
"args": ["-y", "api2mcp", "--url", "https://api.example.com/openapi.json"]
}
}
}
注意: 使用
-y参数可以自动确认 npx 的安装提示,避免交互式确认。
当 API 需要认证密钥等敏感参数时,推荐使用 MCP 客户端的 env 字段通过环境变量传递,而非 --fixed-params CLI 参数。这样可以避免密钥以明文形式出现在进程参数中(进程参数可通过 ps 等命令被其他用户查看)。
{
"mcpServers": {
"my-api": {
"command": "npx",
"args": [
"-y",
"api2mcp",
"--url",
"https://api.example.com/openapi.json"
],
"env": {
"API_FIXED_PARAMS": "appKey=YOUR_APP_KEY"
}
}
}
}
API_FIXED_PARAMS 支持 key=value 格式(推荐,更简洁)或 JSON 字符串格式,其中的键值对会作为固定参数注入到每个 API 请求中。这些参数对 LLM 不可见,适合传递 API 密钥、token 等敏感信息。
配置加载优先级 (从高到低):
# 安装依赖
pnpm install
# 开发模式 (监听文件变化)
pnpm dev
# 构建
pnpm build
# 类型检查
pnpm typecheck