MCP API Translator

io.github.krishgokv0.4.1更新于 Oct 11, 2026

Turn OpenAPI / Postman specs into runnable MCP servers, or serve any API as live MCP tools.

已验证STDIO仅桌面Developer ToolsAI & ML

概览

AI 生成的概览

将 OpenAPI 或 Postman 接口定义转换为可运行的 MCP 服务器项目,或直接把 API 作为实时 MCP 工具提供。

功能
解析 OpenAPI 3.0/3.1 或 Postman v2.1 规范,并为该 API 生成完整的 TypeScript 或 Python MCP 服务器项目。其工具可在写入前预览将要生成的工具列表(analyze_spec)、生成项目(generate_mcp_server)、把另一个规范的接口追加到已有项目(extend_mcp_server),以及报告支持的格式、认证方式和限制(list_supported_features)。还可运行运行时代理,无需生成代码即可把一个或多个 API 暴露为 MCP 工具。
适用场景
当你希望助手通过 MCP 调用某个 REST API,并且想自己拥有生成的服务器代码、筛选哪些接口成为工具,或把多个 API 合并到一个服务器时,适合使用。也适合通过 serve 模式快速临时暴露一个 API。
运行要求
通过 npx 以 stdio 在本地运行,需要 Node 20+,也可用 Docker 镜像。规范可内联提供或使用本地路径。生成的服务器和 serve 代理需要通过环境变量提供 API 基础地址和凭据(按 API 加命名空间,具体名称见生成的 .env.example);转换器本身未声明需要凭据。
安装前请注意
生成的服务器和 serve 代理会从 _API_KEY、 _API_BASE_URL 等环境变量读取 API 凭据,这些密钥会出现在生成项目的运行环境中。生成的工具可能调用目标 API 的写入、发送或删除操作,建议筛选接口而不是暴露整个规范。规范与 API 响应会经过本地进程,README 也说明不支持交互式 OAuth 授权流程。

安装

在 SourceWeft 中

  1. 打开 控制台中的 MCP API Translator,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

mcp-api-translator

[npm] [CI] [License: AGPL-3.0] [Commercial license available] [MCP]

An MCP server that generates MCP servers. Give it an API definition — OpenAPI 3.0/3.1 or a Postman collection — and it scaffolds a complete, runnable, ownable TypeScript or Python MCP server for that API.

[Curate a spec, aggregate a second one, run the generated server, and let an agent call it]

Above: curating Firecrawl's 20 operations down to 6, appending the Gmail API to the same server, then an agent calling the self-hosted result. Counts, tool names and paths come from real runs against the published Firecrawl and Gmail descriptions; the API responses are illustrative — the recording runs against a local stub, not live Firecrawl or Gmail accounts.

Why this and not a 1:1 generator

Turning an OpenAPI spec into MCP "tool stubs" is not novel — FastMCP's from_openapi, Speakeasy/Gram, and several openapi-mcp-generator projects already do the mechanical part. A naive endpoint→tool generator has no real advantage. This project focuses on the parts those tools skip:

1. Curation, not just generation. A 200-endpoint API naively becomes 200 tools, which wrecks a model's tool-selection accuracy and blows out context. analyze_spec previews the tool list before anything is written, every command takes includeTags / methods / pathGlob / excludeOperations, and you get a warning when a server grows past 40 tools.

2. Aggregation via append. extend_mcp_server adds another API's tools to an existing project, so you can build one MCP server spanning Firecrawl + Gmail + your internal API. Credentials stay separate: each API also reads namespaced env vars derived from its title.

3. An artifact you own. Output is a normal project, not a hosted black box — readable per-tool files, env-based auth, a Dockerfile, and a server.json plus client snippets for publishing to the official MCP Registry.

If you only need throwaway, in-memory exposure of one API and don't care about owning the code, FastMCP's runtime mode may suit you better — that's a deliberate non-goal here.

Install

No install step. npx fetches and runs the latest published version — cross-platform, Node 20+.

Claude Code

Claude Code does not read claude_desktop_config.json — it keeps its own MCP config:

bash
claude mcp add api-translator -- npx -y mcp-api-translator

That registers it at local scope. Use -s user for all your projects, or commit a project-scoped .mcp.json to share it. Verify with claude mcp list.

Claude Desktop

Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json):

json
{  "mcpServers": {    "api-translator": {      "command": "npx",      "args": ["-y", "mcp-api-translator"]    }  }}
Cursor, Cline, Continue.dev, Docker

Cursor — ~/.cursor/mcp.json (or project-scoped .cursor/mcp.json), same mcpServers shape as Claude Desktop above.

Cline (VS Code) — sidebar → MCP Servers → Configure, same shape plus "disabled": false.

Continue.dev — ~/.continue/config.json, under experimental.modelContextProtocolServers, as a { transport: { type: "stdio", command, args } } entry.

Docker (no Node required):

json
{  "mcpServers": {    "api-translator": {      "command": "docker",      "args": ["run", "--rm", "-i", "ghcr.io/krishgok/mcp-api-translator:latest"]    }  }}

To read specs from disk or write projects to a host path, mount the directory with -v ${PWD}:/workspace and pass /workspace/... as specPath / outputDir.

MCP config is read at startup, so restart your client — quit and reopen Claude Desktop, Cursor, …, or start a new session in Claude Code.

The four tools

ToolWhat it does
analyze_specParse a spec and preview the tools that would be generated — no files written.
generate_mcp_serverGenerate a complete MCP-server project into outputDir.
extend_mcp_serverAppend another spec's tools to an existing project (idempotent).
list_supported_featuresReport supported formats, auth schemes, transports, and limits.

All spec inputs accept inline text (spec) or a local path (specPath), JSON or YAML.

Usage

You don't call the tools by hand — you ask your agent, and it drives them.

1. Preview, then curate. See what a spec becomes before writing anything:

"Analyze ./petstore.yaml and show me the proposed tools." "Only the GET endpoints under /pets."

js
analyze_spec({ specPath: "./petstore.yaml" });// → proposed tool list, auth scheme, and the env vars the server will need
analyze_spec({ specPath: "./petstore.yaml", methods: ["GET"], pathGlob: "/pets/**" });// also: includeTags: ["pets"], excludeOperations: ["deletePet"]

2. Generate, with the same filters plus an output directory:

js
generate_mcp_server({ specPath: "./petstore.yaml", outputDir: "./petstore-mcp" });// options: language: "python", transport: "http", auth: {...}, force: true

3. Aggregate — add more APIs to the same server:

js
// any second API — the sources don't have to share a format or a vendorextend_mcp_server({  projectDir: "./petstore-mcp",  specPath: "./billing.postman.json",  includeTags: ["invoices"],});// idempotent; hand-edited tool files are preserved

Aggregated APIs don't share credentials: each also reads namespaced env vars (<NAMESPACE>_API_BASE_URL, <NAMESPACE>_API_KEY, … — namespace derived from the API title) before falling back to the bare ones. The extend summary and .env.example list the exact names.

4. Run it. The output is a normal project you own:

bash
cd petstore-mcp && npm install && npm run buildcp .env.example .env   # set API_BASE_URL + credentials (never embedded in code)npm start

Register it with your client using the generated client-config.md, and your agent can call the APIs directly.

Full walkthrough with sample outputs and troubleshooting: docs/usage-workflow.md.

Generate, or serve

  • Generate ownable code when you want a project you can hand-edit, self-host, and own — in TypeScript (default) or Python (language: "python").

  • Serve a live runtime proxy when you just want an API exposed to an agent now, with no generated files to build or maintain:

    bash
    mcp-api-translator serve --spec ./api.yamlmcp-api-translator serve --spec ./a.yaml --spec ./b.yaml --methods GET,POST   # aggregate

serve runs the same request plan and env-based auth the generator emits, so behavior matches generated output exactly — it just skips the codegen step. It speaks stdio by default, or stateless Streamable HTTP with --transport http --port 3000. Logs are structured JSON lines on stderr in containers, readable text on a TTY (LOG_LEVEL, LOG_FORMAT).

Documentation

DocWhat's in it
usage-workflow.mdEnd-to-end walkthrough, curation loop, auth setup, troubleshooting.
design.mdTech stack, generated project layout, limitations, security model.
deploy-serve.mdDocker/compose recipes for serve, logging and observability.
serve-api-proposal.mdDesign of the runtime proxy and the roadmap.
market-analysis.mdWhy both generate and serve models exist.
CONTRIBUTING.mdDev setup, PR conventions, DCO sign-off.

Known limits at a glance: OpenAPI 3.0/3.1 and Postman v2.1 (Swagger 2.0 best-effort), no GraphQL/gRPC; no interactive OAuth consent flows; no upstream streaming or auto-pagination; output quality tracks spec quality. Details and the security model: docs/design.md.

Development

bash
npm installnpm test          # unit + integration (parsers, curation, emit, append)npm run typechecknpm run buildnpm run e2e       # generate a sample project from the fixtures into build/e2e-out

Contributions welcome — see CONTRIBUTING.md. All commits must be signed off under the Developer Certificate of Origin (git commit -s).

License

mcp-api-translator is dual-licensed — © 2026 krishgok. Full details in LICENSING.md.

  • Open source: GNU AGPL-3.0-or-later. Running a modified version as a network service requires offering that version's complete source to its users.
  • Commercial: a separate license is available for embedding in proprietary products without AGPL obligations.
  • Your generated output is yours. Projects produced by this tool are covered by a generated-output exception and are not subject to the AGPL.

Redistributions must retain LICENSE and NOTICE. The licenses do not grant the right to use the "mcp-api-translator" name to endorse or promote forked or derivative works without prior written permission.

来源:README.md,提交 f117273

工具

0
工具元数据尚未被收录。

版本历史

1
  1. v0.4.1最新Oct 11, 2026