Skip to main content
Glama

Apifox MCP

by Warren-W
README.md15 kB
# Apifox MCP 服务器 **让 AI 助手自动管理你的 Apifox API 文档!** 这是一个 [Model Context Protocol (MCP)](https://modelcontextprotocol.io) 服务器,允许 Claude Desktop、Claude Code、Cursor 等 MCP 客户端通过 Apifox Open API 自动导入 OpenAPI/Swagger 规范到你的 Apifox 项目。 ## ✨ 主要功能 - ✅ **API 导入**:批量导入 OpenAPI/Swagger 规范到 Apifox(稳定可靠) - ✅ **API 导出**:支持 Summary(目录结构)和 Full(完整规范)两种模式 - ✅ **智能废弃标记**:自动检测并标记已删除的接口为废弃状态(v1.2.1) - ✅ **部分模块导入**:支持只导入部分模块,不影响其他模块(智能范围检测) - ✅ **多格式支持**:支持 OpenAPI 3.0/3.1 和 Swagger 2.0 - ✅ **详细统计**:完整的导入/导出统计信息和错误报告 ## 🚀 快速开始 ### 1. 安装 #### 方式 1: 使用 npx(推荐) 无需安装,直接使用最新版本: ```bash npx -y apifox-openapi-mcp@latest --token "YOUR_TOKEN" --project-id "YOUR_PROJECT_ID" ``` #### 方式 2: 本地安装 ```bash # 克隆仓库 git clone https://github.com/yourusername/apifox-mcp.git cd apifox-mcp # 安装依赖 npm install # 构建 npm run build # 本地链接(可选,用于全局使用) npm link ``` ### 2. 获取 API Token 和项目 ID **步骤:** 1. **获取 Token**:登录 Apifox → 头像 → 账号设置 → API 访问令牌 → 新建令牌 2. **获取 Project ID**:打开项目 → 项目设置 → 基本设置 → 复制项目 ID ### 3. 配置 MCP 客户端 #### 3.1 Claude Desktop 编辑 Claude Desktop 配置文件: - **Linux/Mac**: `~/.config/Claude/claude_desktop_config.json` - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` #### 方式 1: 使用 npx(推荐,总是使用最新版本) ```json { "mcpServers": { "apifox": { "command": "npx", "args": [ "-y", "apifox-openapi-mcp@latest", "--token", "你的-APIFOX-TOKEN", "--project-id", "你的-项目-ID" ] } } } ``` #### 方式 2: 本地安装(使用绝对路径) ```json { "mcpServers": { "apifox": { "command": "node", "args": [ "/绝对路径/apifox-mcp/dist/index.js", "--token", "你的-APIFOX-TOKEN", "--project-id", "你的-项目-ID" ] } } } ``` #### 方式 3: 使用 npm link 后 ```json { "mcpServers": { "apifox": { "command": "apifox-mcp", "args": [ "--token", "你的-APIFOX-TOKEN", "--project-id", "你的-项目-ID" ] } } } ``` #### 3.2 Claude Code **方式 1: 使用 CLI 命令(推荐)** ```bash # 添加 MCP 服务器 claude mcp add apifox # 按提示输入配置 # Command: npx # Args: -y apifox-openapi-mcp@latest --token "你的-TOKEN" --project-id "你的-项目-ID" # 验证配置 claude mcp list ``` **方式 2: 直接编辑配置文件** 编辑 `~/.config/Claude/claude_desktop_config.json`(与 Claude Desktop 共享配置文件): ```json { "mcpServers": { "apifox": { "command": "npx", "args": [ "-y", "apifox-openapi-mcp@latest", "--token", "你的-APIFOX-TOKEN", "--project-id", "你的-项目-ID" ] } } } ``` 重启 Claude Code 后生效。 #### 3.3 Cursor **步骤:** 1. 打开 Cursor 设置:`Cursor Settings` > `Features` > `MCP` 2. 点击 `+ Add New MCP Server` 按钮 3. 填写配置信息: - **Name**: `apifox` - **Command**: `npx` - **Args**: ``` -y apifox-openapi-mcp@latest --token 你的-APIFOX-TOKEN --project-id 你的-项目-ID ``` - **Transport**: `stdio` 4. 保存配置 **使用提示**: - Cursor 的 Composer Agent 会自动使用 MCP 工具 - 最多支持 40 个 MCP 工具 - 给出明确指令时效果最佳,例如:"请使用 Apifox 工具导入这个 API" ### 4. 重启客户端 完全退出并重新打开对应的 MCP 客户端(Claude Desktop / Claude Code / Cursor),MCP 服务器会自动加载。 ### 📌 版本管理说明 **为什么使用 `@latest`?** - ✅ **总是使用最新版本** - 自动获取最新功能和修复 - ✅ **无需手动更新** - npx 会自动下载最新版本 - ✅ **避免缓存问题** - 配合 `-y` 参数跳过确认 **查看当前版本:** ```bash # 查看 npx 使用的版本 npx -y apifox-openapi-mcp@latest --version # 查看 npm 上的最新版本 npm view apifox-openapi-mcp version # 查看全局安装的版本 npm list -g apifox-openapi-mcp ``` **其他版本管理方式:** 1. **指定具体版本**(适合生产环境): ```json "args": ["-y", "apifox-openapi-mcp@1.3.1", ...] ``` 2. **全局安装**(更快的启动速度): ```bash npm install -g apifox-openapi-mcp ``` 然后在配置中使用 `"command": "apifox-mcp"` ## 📖 使用方法 ### 在 MCP 客户端中使用 与 AI 助手(Claude Desktop / Claude Code / Cursor)对话,它会自动调用 MCP 工具: ``` 你: 帮我创建一个用户管理 API 并导入到 Apifox Claude: 好的,我为你创建一个用户管理 API... [自动生成 OpenAPI 规范] [自动调用 import_openapi 工具] ✅ OpenAPI 规范导入完成! 📋 接口导入统计: - 创建: 4 - 更新: 0 - 失败: 0 - 忽略: 0 🎉 成功导入 4 个项! ``` ## 🔧 可用工具 ### 1. `import_openapi` - API 导入(推荐) 使用 Apifox Open API 批量导入 OpenAPI/Swagger 规范。**稳定可靠,推荐使用。** **参数**: - `spec` (必需): OpenAPI/Swagger 规范对象(必须包含 `openapi`/`swagger`、`info`、`paths` 字段) - `options` (可选): 导入选项 - `endpointOverwriteBehavior`: 接口覆盖行为 - `OVERWRITE_EXISTING` (默认): 覆盖现有接口 - `AUTO_MERGE`: 自动合并 - `KEEP_EXISTING`: 保留现有 - `CREATE_NEW`: 创建新接口 - `schemaOverwriteBehavior`: 数据模型覆盖行为(同上) - `markDeprecatedEndpoints`: 自动标记废弃接口(**v1.2.1 新增**) - `true`: 启用智能废弃标记(**强烈推荐**) - `false`: 不标记(默认) - **工作原理**: 1. 导出现有接口 2. 智能检测导入范围(如只导入 `/api/marketing` 模块) 3. 只对比该范围内的接口 4. 标记已删除的接口为 `deprecated` - **支持部分模块导入**,不会误标记其他模块 - `updateFolderOfChangedEndpoint`: 是否更新修改接口的目录(默认:`false`) - `prependBasePath`: 是否添加 `basePath` 前缀到路径(默认:`false`) - `targetBranchId`: 目标分支 ID(可选,用于多分支项目) **示例 1:基础导入** ```json { "spec": { "openapi": "3.0.0", "info": { "title": "用户管理 API", "version": "1.0.0" }, "paths": { "/users": { "get": { "summary": "获取用户列表", "tags": ["用户管理"], "responses": { "200": { "description": "成功" } } } } } }, "options": { "endpointOverwriteBehavior": "OVERWRITE_EXISTING" } } ``` **示例 2:启用智能废弃标记(推荐)** ```json { "spec": { "openapi": "3.0.0", "info": { "title": "营销模块 API", "version": "2.0.0" }, "paths": { "/api/marketing/campaigns": { "get": { "summary": "获取营销活动列表", "tags": ["营销活动"], "responses": { "200": { "description": "成功" } } } } } }, "options": { "endpointOverwriteBehavior": "OVERWRITE_EXISTING", "markDeprecatedEndpoints": true } } ``` **说明**: - 导入时会自动检测范围为 `/api/marketing` - 只标记该范围内已删除的接口为废弃 - 不会影响 `/api/users`、`/api/products` 等其他模块 **返回结果**: ``` ✅ OpenAPI 规范导入完成! 📋 接口导入统计: - 创建: 4 - 更新: 0 - 失败: 0 - 忽略: 0 📦 数据模型导入统计: - 创建: 2 - 更新: 0 - 失败: 0 - 忽略: 0 🎉 成功导入 6 个项! ``` ### 2. `export_openapi` - API 导出 从 Apifox 项目导出 OpenAPI/Swagger 规范。**AI 可以使用此工具查看现有接口,避免重复创建或参考现有风格。** **参数**: - `mode` (可选): 导出模式 - `summary`: 仅导出目录结构和接口列表(**推荐,节省上下文**) - `full`: 导出完整的 OpenAPI 规范(默认) - `oasVersion` (可选): OpenAPI/Swagger 版本(仅 `full` 模式有效) - `2.0`: Swagger 2.0 - `3.0`: OpenAPI 3.0(默认) - `3.1`: OpenAPI 3.1 - `exportFormat` (可选): 导出格式(仅 `full` 模式有效) - `JSON`: JSON 格式(默认) - `YAML`: YAML 格式 - `pathFilter` (可选): 路径过滤器,只导出匹配的接口路径(支持前缀匹配) - 示例:`"/api/user"` 只导出用户相关接口 **示例 1:Summary 模式(推荐)** ```json { "mode": "summary" } ``` **返回结果**: ``` ✅ 接口文档概览(Summary 模式) 📊 统计信息: - 项目标题: 我的 API 项目 - 总接口数: 26 📁 目录结构和接口列表: 📂 用户管理 └─ [GET] /api/users 获取用户列表 └─ [POST] /api/users 创建用户 📂 商品管理 └─ [GET] /api/products 获取商品列表 💡 提示: - 导入新接口时,请参考上述目录结构 - 将相关接口放入对应的目录(使用 tags 字段) ``` **示例 2:Full 模式 + 路径过滤** ```json { "mode": "full", "oasVersion": "3.0", "exportFormat": "JSON", "pathFilter": "/api/user" } ``` **返回结果**: ``` ✅ OpenAPI 规范导出成功(Full 模式) 📊 导出统计: - OpenAPI 版本: 3.0.1 - 项目标题: 我的 API 项目 - 接口数量: 2(已按 pathFilter 过滤) - 数据模型数量: 1 📋 接口列表: - /api/user [GET, POST] - /api/user/{id} [GET, PUT, DELETE] 📄 完整 OpenAPI 规范: { "openapi": "3.0.1", "info": { "title": "我的 API 项目", "version": "1.0.0" }, "paths": { "/api/user": {...}, "/api/user/{id}": {...} }, "components": { "schemas": { "User": {...} } } } ``` ## 💡 使用场景 ### 场景 1:首次创建 API 文档 ``` 你: 帮我创建一个用户管理 API,包括 CRUD 操作 AI: [生成 OpenAPI 规范] [调用 import_openapi] ✅ 成功创建 4 个接口 ``` ### 场景 2:更新部分模块 + 自动标记废弃接口 ``` 你: 更新营销模块 API,移除优惠券接口,改用积分系统 AI: [先调用 export_openapi mode=summary 查看现有结构] [生成新的营销模块规范] [调用 import_openapi 并启用 markDeprecatedEndpoints] 🔍 检测到导入范围: /api/marketing 🔖 标记了 1 个废弃接口路径(优惠券相关) ✅ 其他模块(用户、商品)保持不变 ``` ### 场景 3:查看现有接口避免重复 ``` 你: 帮我添加商品搜索功能 AI: [先调用 export_openapi mode=summary] 发现项目中已有 /api/products/search 接口 我可以参考现有的接口风格来设计新功能... ``` ## 📊 API 响应格式 导入成功后会返回详细的统计信息: ```json { "data": { "counters": { "endpointCreated": 4, // 创建的接口数 "endpointUpdated": 0, // 更新的接口数 "endpointFailed": 0, // 失败的接口数 "endpointIgnored": 0, // 忽略的接口数 "schemaCreated": 2, // 创建的数据模型数 "schemaUpdated": 0, // 更新的数据模型数 "schemaFailed": 0, // 失败的数据模型数 "schemaIgnored": 0 // 忽略的数据模型数 // ... 其他计数 }, "errors": [] // 错误信息(如果有) } } ``` ## ⚙️ 命令行使用 你也可以直接从命令行运行 MCP 服务器: ```bash # 方式 1: 使用命令行参数 node dist/index.js --token "YOUR_TOKEN" --project-id "YOUR_PROJECT_ID" # 方式 2: 使用环境变量 export APIFOX_TOKEN="YOUR_TOKEN" export APIFOX_PROJECT_ID="YOUR_PROJECT_ID" node dist/index.js # 可选参数 node dist/index.js \ --token "YOUR_TOKEN" \ --project-id "YOUR_PROJECT_ID" \ --base-url "https://api.apifox.com" ``` ## 🛠 技术栈 - **TypeScript** - 类型安全的开发 - **MCP SDK** - Model Context Protocol 实现 - **Apifox Open API** - 官方 API 接口 - **Axios** - HTTP 客户端 ## 🔗 关于 Apifox Open API 本项目使用 [Apifox Open API](https://apifox-openapi.apifox.cn/) 官方接口,经过充分测试,以下功能稳定可用: | 功能 | API 端点 | 状态 | 说明 | |-----|---------|------|------| | 导入 OpenAPI | `POST /v1/projects/{projectId}/import-openapi` | ✅ 稳定 | 支持批量导入、覆盖策略、废弃标记 | | 导出 OpenAPI | `POST /v1/projects/{projectId}/export-openapi` | ✅ 稳定 | 支持多版本、过滤、格式选择 | **版本支持**: - OpenAPI 3.0.x ✅ - OpenAPI 3.1.x ✅ - Swagger 2.0 ✅ ## 📝 开发 ```bash # 安装依赖 npm install # 开发模式(自动重新编译) npm run watch # 构建 npm run build # 清理构建产物 npm run clean ``` ## 🐛 故障排除 ### 问题:Claude Desktop 看不到工具 **解决方案**: 1. 检查配置文件路径和格式是否正确 2. 确保使用绝对路径 3. 完全退出并重启 Claude Desktop(不是最小化) ### 问题:导入失败 **可能原因**: 1. Token 或项目 ID 不正确 2. OpenAPI 规范格式不完整 3. 网络连接问题 **解决方案**: - 检查 Token 和项目 ID 是否正确 - 验证 OpenAPI 规范是否包含必需字段(openapi/swagger, info, paths) - 查看错误信息了解具体原因 ### 问题:导入后没有创建任何内容 **可能原因**: - 项目中已存在相同的 API(被设置为忽略) **解决方案**: - 修改 API 的路径或名称 - 使用 `endpointOverwriteBehavior: "OVERWRITE_EXISTING"` 选项覆盖现有接口 - 在 Apifox Web 界面检查导入结果 ### 问题:导出失败或返回空数据 **可能原因**: - 项目中没有接口 - Token 权限不足 **解决方案**: - 检查项目中是否有接口 - 确认 Token 有读取权限 ## 📚 相关文档 - [Apifox Open API 文档](https://apifox-openapi.apifox.cn/) - [导入 OpenAPI 文档](https://apifox-openapi.apifox.cn/api-173409873) - [导出 OpenAPI 文档](https://apifox-openapi.apifox.cn/api-173411997) - [Model Context Protocol](https://modelcontextprotocol.io) ## 📄 许可证 MIT License ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! 如果你发现了更多可用的 Apifox Open API 端点,欢迎分享。 --- **Made with ❤️ for the Apifox community**

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Warren-W/apifox-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server