{"slug": "show-hn-mcpify-turn-any-rest-api-into-an-mcp-server-in-one-command", "title": "Show HN: Mcpify – Turn any REST API into an MCP server in one command", "summary": "Mcpify, a new open-source CLI tool, lets developers turn any REST API with an OpenAPI spec into an MCP server with a single command, eliminating the need for hand-written tool wrappers. The tool automatically generates MCP tools from the spec, supports auth headers, and works with AI agents like Claude, Cursor, and Windsurf. It is available via pipx and is MIT-licensed.", "body_md": "**Turn any REST API into an MCP server in one command.** Point `mcpify`\n\nat an OpenAPI\nspec and every endpoint becomes a tool your AI agent (Claude, Cursor, Windsurf, …) can\ncall — no glue code, no per-endpoint wrappers.\n\n```\nmcpify https://api.example.com/openapi.json\n```\n\nThat's it. Every operation in the spec is now a live MCP tool.\n\n[MCP](https://modelcontextprotocol.io) is how AI agents call real tools. But wiring an\nexisting API into MCP means hand-writing a tool wrapper for every endpoint — tedious and\nstale the moment the API changes. Almost every API already publishes an **OpenAPI spec**.\n`mcpify`\n\nreads that spec and generates the whole MCP server at runtime, so:\n\n**Zero per-endpoint code**— N endpoints → N tools, automatically.** Always in sync**— regenerate from the spec; no wrappers to maintain.** Auth-aware**— pass an API key / bearer token once, applied to every call.\n\n```\npipx install mcpify-cli      # or: uvx mcpify-cli ...\n```\n\nPreview the tools a spec produces (no server):\n\n```\nmcpify --list examples/petstore-mini.yaml\n```\n\nRun it as an MCP server (stdio):\n\n```\nmcpify https://petstore3.swagger.io/api/v3/openapi.json\nmcpify ./openapi.yaml --base-url https://staging.internal.api\nmcpify ./openapi.yaml --auth \"Authorization: Bearer $TOKEN\"   # or set MCPIFY_AUTH\n```\n\nAdd to your MCP client config (Claude Desktop / Claude Code `mcp.json`\n\n):\n\n```\n{\n  \"mcpServers\": {\n    \"petstore\": {\n      \"command\": \"mcpify\",\n      \"args\": [\"https://petstore3.swagger.io/api/v3/openapi.json\"]\n    }\n  }\n}\n```\n\nRestart the client and ask: *\"list the available pets\"* — Claude calls the API directly.\n\n- Load the OpenAPI 3.x document (URL or file, JSON or YAML).\n- Walk every path/method into an\n`Operation`\n\nwith a generated JSON input schema. - Serve them over MCP; each tool call is mapped to a live HTTP request (path, query, header params and JSON bodies all handled) and the response is returned to the agent.\n\n- OpenAPI 3.x, JSON or YAML, from a URL or local file\n`GET`\n\n/`POST`\n\n/`PUT`\n\n/`PATCH`\n\n/`DELETE`\n\n- Path, query, and header parameters; JSON request bodies\n- A single global auth header (API key or bearer token)\n\n- Per-operation filtering (\n`--only`\n\n,`--tag`\n\n) to expose a subset of a large API `$ref`\n\nresolution for fully-expanded body schemas- Swagger 2.0 specs\n- SSE / HTTP transport in addition to stdio\n\nPRs welcome.\n\nMIT", "url": "https://wpnews.pro/news/show-hn-mcpify-turn-any-rest-api-into-an-mcp-server-in-one-command", "canonical_source": "https://github.com/Amanbig/mcpify", "published_at": "2026-06-27 10:28:41+00:00", "updated_at": "2026-06-27 11:05:43.364382+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-tools"], "entities": ["Mcpify", "Claude", "Cursor", "Windsurf", "OpenAPI", "MCP", "Model Context Protocol"], "alternates": {"html": "https://wpnews.pro/news/show-hn-mcpify-turn-any-rest-api-into-an-mcp-server-in-one-command", "markdown": "https://wpnews.pro/news/show-hn-mcpify-turn-any-rest-api-into-an-mcp-server-in-one-command.md", "text": "https://wpnews.pro/news/show-hn-mcpify-turn-any-rest-api-into-an-mcp-server-in-one-command.txt", "jsonld": "https://wpnews.pro/news/show-hn-mcpify-turn-any-rest-api-into-an-mcp-server-in-one-command.jsonld"}}