API转MCP服务器工具

build-mcp是一个将任何API规范转换为生产就绪的MCP服务器的工具,支持OpenAPI、Postman、HAR和GraphQL格式,提供语义搜索、预调用验证和智能响应修剪功能。

  • by bisratttt
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 bisratttt/mcpify

使用说明

构建mcp

你的API规格走了进来,一个MCP服务器走了出来。

构建mcp 将任何API规范转化为生产准备 主控程序 服务器在一个命令中。将其指向OpenAPI文件、Postman集合、HAR捕获或GraphQL模式,并获得一个具有语义搜索、调用前验证和智能响应修剪功能的完全工作的MCP服务器。

没有样板。无复制粘贴。没有意外收费。只是工具。

npx build-mcp convert ./stripe-openapi.yaml -o ./stripe-mcp
cd stripe-mcp && npm install && npm start

就是这样。您的代理现在可以搜索并调用整个Stripe API。


天真的API问题→ MCP转换

显而易见的方法——每个端点一个MCP工具——很快就会崩溃。

将代理连接到API,该API具有200个端点和200个工具模式,在代理请求任何内容之前登录到上下文中。将它连接到10个API,你就建立了一个上下文篝火。Cursor有一个40个工具的硬帽。一个繁忙的MCP服务器可以在您的代理打招呼之前吃掉您70%以上的上下文窗口。

build-mcp只生成2个工具,无论API大小:

工具 它做什么
search_docs 对所有端点进行语义搜索——按需返回ID、安全徽章、参数类型和正文字段
call_api 验证参数,然后按ID执行任何端点——返回修剪后的、代理可读的输出

代理首先搜索,得到它需要的东西,然后调用。无论API有10个端点还是10000个端点,上下文都保持干净。由于每个生成的服务器都有相同的两个工具名称,MCP客户端的名称空间是按服务器命名的——所以 stripe-api › search_docs 和 jira › search_docs 永远不要碰撞。


特性

语义搜索——在不知道端点名称的情况下找到正确的端点

每个端点都嵌入了 Qwen3-嵌入-0.6B 在转换时,将其存储在本地SQLite索引中。在运行时, search_docs 向量相似性搜索——所以“向客户收费”会找到 POST /v1/charges 即使代理不知道确切的端点名称。

不需要API密钥。完全在您的机器上运行。

安全分类——特工知道他们要做什么

每个端点都会在搜索结果中自动分类和标记:

徽章 含义
(无) 安全阅读——获取/头部/选项
[WRITE] 状态突变——POST/PUT/PATCH
⚠️ DESTRUCTIVE 不可逆--删除、取消、撤销、清除、存档
💸 BILLABLE 花费金钱或产生副作用——费用、付款、短信/电子邮件发送

特工在决定打什么电话之前会看到这些徽章。充电端点看起来永远不会与列表端点相同。

预调用验证-在错误到达API之前捕获错误

在任何HTTP请求离开机器之前, call_api 根据规范验证代理的参数:

  • 缺少必需的参数→ 由于一个明显的英语错误而被拒绝
  • 枚举值错误→ 列出有效选项
  • 类型错误(预期为整数的字符串等)→ 立即抓住

没有浪费的API调用。没有神秘的400个调试响应。

智能响应修剪——大响应不会破坏上下文

API的反应可能是巨大的。生成的服务器会自动汇总:

  • 分页列表 ({ data: [...], has_more })--计数,第一项+最后一项,分页提示
  • 顶级阵列 --计数和第一项,记录隐藏的数量
  • 大型任意对象 --顶级密钥的结构摘要
  • 8KB以下的任何内容 --原封不动地返回

适用于所有规范格式

格式 注释
OpenAPI 3.x(JSON或YAML) 完整的$ref解引用,处理条纹级规范
Swagger 2.x(JSON或YAML) 完全支持v2
Postman Collection v2.1 任何文件扩展名,包括 .txt
HAR(HTTP存档) 捕获的流量→ MCP服务器
GraphQL Schema 查询和突变成为工具

快速开始

# Install globally
npm install -g build-mcp

# Or just run with npx
npx build-mcp convert ./openapi.yaml -o ./my-api-mcp
# Preview what build-mcp sees before converting
build-mcp inspect ./openapi.yaml

# Convert with local embeddings (default — no API key needed)
build-mcp convert ./openapi.yaml -o ./my-api-mcp

# Convert from a remote spec URL
build-mcp convert https://petstore3.swagger.io/api/v3/openapi.json -o ./petstore-mcp

# Use OpenAI embeddings
build-mcp convert ./openapi.yaml -o ./my-api-mcp --embedding-provider openai

# Use Ollama
build-mcp convert ./openapi.yaml -o ./my-api-mcp --embedding-provider ollama

运行生成的服务器

cd my-api-mcp
npm install
cp .env.example .env   # fill in your API credentials
npm start

将其添加到克劳德桌面

{
  "mcpServers": {
    "stripe-api": {
      "command": "node",
      "args": ["/path/to/stripe-mcp/node_modules/.bin/tsx", "/path/to/stripe-mcp/src/server.ts"]
    }
  }
}

让您的代理直接运行build mcp

build-mcp本身就是一个mcp服务器,因此AI代理可以转换规范而无需放到shell中。

{
  "mcpServers": {
    "build-mcp": {
      "command": "npx",
      "args": ["build-mcp", "mcp"]
    }
  }
}

暴露于代理的工具:

  • inspect_spec --解析规范并返回端点、身份验证和格式的摘要
  • convert_spec --完全转换:解析→ 嵌入→ 索引→ generate,返回输出路径和所需的环境变量

用作图书馆

import { parseSpec, generateMcpServer } from 'build-mcp';

const spec = await parseSpec('./openapi.yaml');
const result = await generateMcpServer(spec, {
  outputDir: './my-api-mcp',
  // embeddingProvider: 'local' is the default — no API key needed
});

console.log(`Indexed ${result.endpointsIndexed} endpoints`);
console.log('Set these env vars:', result.envVars.map(v => v.name));

生成什么

my-api-mcp/
├── src/
│   └── server.ts        # 2-tool MCP server (search_docs + call_api)
├── db/
│   └── api.sqlite       # Pre-built semantic search index
├── .env.example         # Required auth credentials
├── WORKFLOWS.md         # Detected CRUD / paginated-list / search-act patterns
├── package.json
├── tsconfig.json
└── README.md

嵌入提供者

搜索是由向量相似性驱动的。三个提供者——默认情况下不需要安装任何东西。

本地--Qwen3-Embedded-0.6B(默认)

没有API密钥。没有外部服务。首次使用时下载约614MB,缓存到 ~/.cache/huggingface/。后续运行是即时的。

build-mcp convert ./spec.yaml -o ./output
# that's it — embeddings run locally

用途 onnx-community/Qwen3-Embedding-0.6B-ONNX 通过 @huggingface/transformers.1024 dim,q8量化,最后一个令牌池。

开放人工智能

export OPENAI_API_KEY=sk-...
build-mcp convert ./spec.yaml -o ./output --embedding-provider openai

奥拉玛

ollama pull nomic-embed-text
build-mcp convert ./spec.yaml -o ./output --embedding-provider ollama

贡献

早期——拉取请求、问题和想法都是受欢迎的。检查 问题 为了烹饪什么。

许可证

麻省理工学院