API转换MCP服务器工具

APIFold是一个将任何REST API转换为MCP服务器的工具,无需编写代码,适用于AI代理与MCP兼容客户端的快速连接。

  • by Work90210
  • TypeScript
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 Work90210/APIFold

使用说明




Turn any REST API into an MCP server. No code required.

APIFold读取OpenAPI 3.x或Swagger 2.x规范,并生成一个实时的、生产就绪的 主控程序 服务器端点。AI代理——Claude、Cursor、Copilot或任何兼容MCP的客户端——都可以立即连接。工具调用使用安全存储的凭据执行对真实上游API的真实HTTP请求。没有存根,没有模拟,没有胶水代码。

快速开始

CLI(最快)

npx apifold serve ./your-openapi-spec.yaml --base-url https://api.example.com

一个命令。您的规范将成为一个运行中的MCP服务器,其上有SSE传输 localhost:3000.立即连接Claude或Cursor。

来自API注册表

npx apifold serve --registry stripe --base-url https://api.stripe.com

附带8种预先配置的API规格:Stripe、GitHub、Slack、HubSpot、Twilio、OpenAI、Notion和Petstore。

托管平台

  1. 注册地址: apifold.dev
  2. 导入规范(URL、文件上传或浏览注册表)
  3. 将连接片段复制到Claude Desktop或Cursor中
  4. 您的MCP服务器使用唯一的端点URL运行

特性

  • OpenAPI 3.x+Swagger 2.0 --自动透明地转换Swagger 2.0规格
  • CLI工具 — npx apifold serve 用于零配置本地MCP服务器
  • API注册表 -从8种精心策划的API规格中一键部署
  • OAuth 2.0 --授权码(PKCE)、客户端凭据、8个提供者预设、自动令牌刷新
  • 访问配置文件 --工具级权限(只读/读写/完全访问)
  • 分析 --呼叫量、延迟百分比、错误细分、使用配额
  • 自定义域名 --使用 mcp.yourcompany.com 通过DNS验证
  • 唯一端点ID --每台服务器的加密、不可访问的URL
  • SSE+流式HTTP --支持两种MCP传输模式
  • 保险库加密 --AES-256-GCM用于所有存储的凭据
  • SSRF保护 --DNS固定、重定向阻止、私有IP拒绝

命令行界面

npm install -g @apifold/cli
命令 描述
apifold serve <spec> 从OpenAPI规范启动MCP服务器
apifold serve --registry stripe 从注册表规范开始
apifold transform <spec> 将MCP工具定义输出为JSON
apifold validate <spec> 仅解析带有警告的验证
apifold init [spec] 生成一个 apifold.config.yaml 模板

配置文件

# apifold.config.yaml
spec: ./openapi/stripe.yaml
port: 3001
transport: sse
baseUrl: https://api.stripe.com
auth:
  type: bearer
  token: ${STRIPE_API_KEY}
filters:
  tags: [payments, customers]
  methods: [get, post]

自我寄宿

发展

git clone https://github.com/Work90210/APIFold.git
cd APIFold
pnpm install
cp .env.example .env
docker compose -f infra/docker-compose.dev.yml up -d
pnpm dev

打开 http://localhost:3000 访问仪表板。

生产

cp .env.example .env
# Edit .env with your production values
docker compose -f infra/docker-compose.yml up -d

使用Transformer库

核心转换逻辑是一个独立的 麻省理工学院许可 npm包:

npm install @apifold/transformer
import { parseSpec, transformSpec, autoConvert } from "@apifold/transformer";

// Auto-convert Swagger 2.0 if needed
const { spec } = await autoConvert(rawSpec);

// Parse and transform
const parsed = parseSpec({ spec });
const { tools } = transformSpec({ spec: parsed.spec });
// tools = MCPToolDefinition[] ready for any MCP server

建筑

graph LR
    Spec["OpenAPI / Swagger\nSpec"] --> Transformer

    subgraph MT["APIFold"]
        Transformer["Transformer\n(MIT lib)"]
        Transformer --> Runtime["Runtime\nExpress + SSE"]
        Web["Web App\nNext.js"] --> DB["Postgres 16\nRedis 7"]
        Runtime --> DB
        CLI["CLI Tool\nnpx apifold"]
        Registry["API Registry\n8 specs"]
    end

    Runtime --> Upstream["Upstream API\n(Stripe, GitHub, etc.)"]
    Agent["AI Agent\nClaude, Cursor,\nCopilot, etc."] -- "MCP / SSE" --> Runtime
组件 路径 描述
变压器 packages/transformer OpenAPI到MCP的转换。纯粹的功能。 麻省理工学院许可。
运行时 apps/runtime 使用SSE/HTTP、OAuth令牌刷新和访问配置文件来表示MCP服务器。
网页应用 apps/web Next.js仪表板。导入规格、管理凭据、分析、自定义域。
命令行界面 apps/cli 独立CLI工具。 npx apifold serve 用于本地MCP服务器。
注册表 packages/registry 通过一键部署,编制了8个经验证的API规范的目录。
类型 packages/types 共享TypeScript类型定义。
用户界面 packages/ui 设计系统和组件库。

可用命令

命令 描述
pnpm dev 通过热重新加载启动所有服务
pnpm build 构建所有包
pnpm test 运行测试
pnpm lint 轻敲所有包裹
pnpm typecheck 对所有包裹进行类型检查
pnpm format 使用Prettier格式化所有文件
pnpm db:migrate 运行数据库迁移
pnpm db:studio 开放式Drizzle工作室

贡献

所有代码贡献都必须经过拉取请求,并在合并前获得批准。看 贡献指南.

要将API添加到注册表中吗?看 packages/registry/CONTRIBUTING.md.

安全

有关安全问题,请参阅我们的 安全策略.不要将安全漏洞作为公共GitHub问题发布。

许可证