Free · No signup · Processed in memory
Turn your REST API into an MCP server.
Upload your OpenAPI spec — auth included, no code. Claude, Cursor, and any MCP client can call your service directly, with your keys never touching the model.
- Auth is the feature, not an afterthought. securitySchemes are read from your spec and mapped to environment templates automatically.
- Keys never touch the model. Credentials are injected by your MCP client at runtime — they live in .env, never in code.
- Read-only by default. Only GET endpoints are exposed; write operations stay hidden until you explicitly allow them.
Works with Claude Desktop
Claude Code
Cursor Codex any MCP client
OpenAPI → MCP converter
OpenAPI 3 ·
Swagger 2.0 · JSON / YAML
No spec handy? Load a trimmed copy of the canonical Swagger Petstore (OpenAPI 3.0) — 13 endpoints, an API-key scheme, and an OAuth flow to see how each is handled.
- GET 7 read endpoints — exposed by default
- POSTPUTDEL 6 write endpoints — hidden in read-only mode
- api_key header scheme, auto-mapped to .env
Parsing happens in memory. Your spec is never stored or retained.
Spec
0 of 0 exposed · read-only onno authReview what gets exposed
Every endpoint becomes one MCP tool. Uncheck anything you don’t want the model to see.Authentication, mapped automatically
Detected in your spec’s securitySchemes and mapped to environment variables. Keys are never entered here — set them in the generated project’s .env after download.Supported: http bearer · apiKey (header / query) · basic · no-auth. OAuth 2.1 flows arrive in v1.2.
Generate & connect
A readable TypeScript project you own. Regenerate whenever the API changes.Generated project
0 toolsConnect your client
- 1Unzip the project somewhere stable, then run
npm install. - 2Copy
.env.exampleto.envand fill in your real key. - 3Use the snippet on the left — paste it into your client’s config file, or run it as a terminal command — replacing
__ABS_PATH__with the folder’s absolute path. - 4Restart the client — your endpoints appear as tools.
Your spec is the source of truth
No tool definitions to hand-write, no auth to rewire, no second interface to keep in sync. When the API changes, regenerate.
01
Upload your spec
Drop in an OpenAPI 3 or Swagger 2 document — JSON or simple YAML. It is processed in memory; nothing is stored anywhere.
02
Review what’s exposed
Every endpoint becomes an MCP tool with its parameters and description. Read-only mode is on by default; write operations stay hidden until you allow them.
03
Connect your client
Download the TypeScript project, paste the ready-made config into Claude Desktop or Cursor, and your API is a set of tools the model can call.
How to use with Claude, Cursor & Codex
Two minutes from zip file to working tools. The snippets below use the Petstore sample.
Claude Desktop
Config lives at ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows).
- Unzip the generated project and note its absolute path.
- Run
npm install, thencp .env.example .envand add your key. - Merge the JSON below into your config file.
- Fully quit and restart Claude Desktop; the server appears under available tools.
{
"mcpServers": {
"petstore": {
"command": "npm",
"args": [
"--prefix",
"/absolute/path/to/openapi2mcp-petstore",
"start"
]
}
}
}
Cursor
Config lives at ~/.cursor/mcp.json. The shape is the same mcpServers map.
- Unzip the project and run
npm installinside it. - Create
~/.cursor/mcp.jsonwith the JSON below. - Replace the path with your project’s absolute path and add your key.
- Open Cursor’s agent panel — your endpoints are now callable tools.
{
"mcpServers": {
"petstore": {
"command": "npm",
"args": [
"--prefix",
"/absolute/path/to/openapi2mcp-petstore",
"start"
]
}
}
}
Claude Code
One command registers the server at user scope — available in every project, no config file editing.
- Unzip the generated project and note its absolute path.
- Run
npm install, thencp .env.example .envand add your key. - Run the command below with your real path.
- Restart Claude Code — the endpoints appear as tools.
claude mcp add petstore -s user -- npm --prefix /absolute/path/to/openapi2mcp-petstore startCodex
Register with one command, or edit ~/.codex/config.toml directly.
- Unzip the generated project and note its absolute path.
- Run
npm install, thencp .env.example .envand add your key. - Run the command below with your real path.
- Start Codex — the endpoints appear as tools.
codex mcp add petstore -- npm --prefix /absolute/path/to/openapi2mcp-petstore startSecurity isn’t a feature. It’s the architecture.
MCP replaces “the AI logs in like a human” with something simpler: you configure credentials once, the model only initiates calls, and keys never pass through the model.
“Your token never touches our database.”The hosting promise — credentials are injected by your MCP client and exist only in runtime memory.
Client-injected credentials
You add tokens in the Claude/Cursor MCP config. They travel as environment variables straight into the server process — the platform never stores them.
Memory-only at runtime
Tokens live in process memory for the duration of a call. No database row, no disk write, no backup to leak.
Scrubbed logs
Authorization and API-key headers are stripped before anything reaches logs or error monitoring.
Read-only by default
Only GET endpoints are exposed unless you whitelist write operations — and those still require human confirmation inside the MCP client.
Audit trail
See exactly which endpoints the AI called, and when. Response bodies are never recorded.
Abuse limits
Rate limiting and anomalous-call detection blunt the damage a prompt-injected burst of dangerous calls could do.
Honest limits — what we don’t claim
- On the hosted tier, tokens do pass through the server process at runtime. Zero storage and log scrubbing mitigate this; it is not magic.
- Request and response bodies flow through the hosting layer. High-sensitivity teams should use one-click Deploy-to-Vercel or self-host instead.
- Prompt injection is an AI-side risk that authentication cannot solve. Read-only defaults plus human confirmation are the backstop.
- Your API’s spec can misstate its own auth. Directus documents an apiKey header but only accepts Bearer tokens — if calls come back 401, set the full value (Bearer your-token) in the generated .env.
- Permission-scoped specs list only the endpoints your token can see, so your tool count can come out lower than the API’s public docs.