Skip to content

功能建议:添加 MCP (Model Context Protocol) 支持 #21

Description

@goushuai888

功能建议:为 Apiflow 添加 MCP(Model Context Protocol)支持

概述

建议为 Apiflow 添加 MCP(Model Context Protocol)服务器支持,使其能够作为 MCP 服务器运行,让 AI 助手(如 Claude、ChatGPT 等)能够直接访问和操作 API 集合、执行测试、生成文档等。

背景

MCP 是 Anthropic 推出的开放协议,用于标准化应用程序如何向 LLM 提供上下文和工具。目前已有多个开发工具(如 IDE、数据库客户端)通过 MCP 实现了与 AI 的深度集成。

Apiflow 已经内置了 AI 代理功能,但添加 MCP 支持可以:

  • 让外部 AI 工具(Claude Desktop、Claude Code CLI、Cursor 等)直接访问 Apiflow 的数据
  • 实现更灵活的 AI 工作流
  • 与其他 MCP 工具形成生态协同

功能设计

1. MCP 服务器实现

创建一个 MCP 服务器模块,提供以下工具(Tools):

API 管理工具

  • list-apis - 列出所有 API 集合和请求
  • get-api-details - 获取特定 API 的详细信息(URL、方法、参数、响应示例等)
  • create-api - 创建新的 API 请求
  • update-api - 更新现有 API 请求
  • delete-api - 删除 API 请求

API 测试工具

  • execute-request - 执行 API 请求并返回结果
  • run-test-suite - 运行测试套件
  • validate-response - 验证 API 响应是否符合预期

文档生成工具

  • generate-api-docs - 基于 API 集合生成文档
  • export-openapi - 导出 OpenAPI 3.0 规范
  • import-openapi - 导入 OpenAPI 规范

环境管理工具

  • list-environments - 列出所有环境配置
  • get-environment - 获取特定环境的变量
  • set-environment-variable - 设置环境变量

2. MCP 资源(Resources)

提供以下资源供 AI 读取:

  • apiflow://collections - API 集合列表
  • apiflow://collection/{id} - 特定集合的完整数据
  • apiflow://request/{id} - 特定请求的详细信息
  • apiflow://history - 请求历史记录
  • apiflow://environments - 环境配置

3. 使用场景示例

场景 1:AI 辅助 API 调试

用户:这个登录接口返回 401,帮我看看是什么问题
AI:[通过 MCP 读取 API 配置] → [执行请求] → [分析响应] →
    "发现 Authorization header 格式不正确,应该是 'Bearer {token}',
     而不是 'Token {token}'"

场景 2:自动生成测试用例

用户:为我的用户管理 API 生成完整的测试套件
AI:[读取 API 集合] → [分析端点] → [创建测试用例] →
    "已创建 15 个测试用例,覆盖 CRUD 操作、权限验证、边界条件等"

场景 3:API 文档生成

用户:根据我的 API 集合生成一份完整的技术文档
AI:[读取所有 API] → [分析结构] → [生成 Markdown 文档] →
    包含接口说明、参数描述、响应示例、错误码说明等

技术实现建议

架构设计

apiflow-mcp-server/
├── src/
│   ├── index.ts           # MCP 服务器入口
│   ├── tools/             # 工具实现
│   │   ├── api-tools.ts
│   │   ├── test-tools.ts
│   │   └── doc-tools.ts
│   ├── resources/         # 资源提供者
│   │   └── api-resources.ts
│   └── db/                # 数据库连接
│       └── mongodb.ts
├── package.json
└── README.md

依赖包

{
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.0.0",
    "mongodb": "^6.0.0"
  }
}

核心代码示例

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new Server(
  {
    name: "apiflow-mcp-server",
    version: "1.0.0",
  },
  {
    capabilities: {
      tools: {},
      resources: {},
    },
  }
);

// 注册工具
server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [
    {
      name: "execute-request",
      description: "执行 API 请求并返回结果",
      inputSchema: {
        type: "object",
        properties: {
          requestId: { type: "string" },
          environment: { type: "string" },
        },
        required: ["requestId"],
      },
    },
    // ... 其他工具
  ],
}));

// 实现工具逻辑
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name === "execute-request") {
    // 从数据库读取 API 配置
    // 执行请求
    // 返回结果
  }
});

配置方式

用户可以通过以下方式配置 MCP 服务器:

Claude Desktop 配置

{
  "mcpServers": {
    "apiflow": {
      "command": "node",
      "args": ["/path/to/apiflow-mcp-server/dist/index.js"],
      "env": {
        "MONGODB_URI": "mongodb://localhost:27017/apiflow"
      }
    }
  }
}

Claude Code CLI 配置

# 在 ~/.config/claude-code/config.json 中添加
{
  "mcpServers": {
    "apiflow": {
      "command": "node",
      "args": ["/path/to/apiflow-mcp-server/dist/index.js"]
    }
  }
}

实现路线图

Phase 1:基础功能(MVP)

  • 实现基本的 MCP 服务器框架
  • 提供 list-apisget-api-details 工具
  • 提供 execute-request 工具
  • 支持读取本地 MongoDB 数据

Phase 2:增强功能

  • 添加 API 创建/更新/删除工具
  • 实现环境变量管理
  • 添加测试套件执行功能
  • 支持 WebSocket 和 SSE 请求

Phase 3:高级功能

  • 文档自动生成
  • OpenAPI 导入/导出
  • 请求历史分析
  • AI 驱动的 API 测试建议

预期收益

  1. 提升用户体验

    • 用户可以用自然语言与 API 集合交互
    • 减少手动操作,提高效率
  2. 扩展生态系统

    • 与其他 MCP 工具协同工作
    • 吸引更多开发者使用 Apiflow
  3. 差异化竞争优势

    • Postman、Insomnia 尚未支持 MCP
    • 成为首个支持 MCP 的 API 开发工具
  4. AI 能力增强

    • 现有 AI 代理功能可以与外部 AI 工具互补
    • 用户可以选择自己喜欢的 AI 助手

参考资源

讨论

欢迎社区讨论:

  • 哪些工具和资源最有价值?
  • 是否需要支持远程 Apiflow 实例(通过 API)?
  • 安全性考虑(如何保护敏感数据)?
  • 是否应该作为独立包发布还是集成到主项目?

提议人:[@shuai]
日期:2026-02-04

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions