A tool that converts OpenAPI specifications to MCP server
Generate Model Context Protocol (MCP) servers from OpenAPI specifications.
This CLI tool automates the generation of MCP-compatible servers that proxy requests to existing REST APIsโenabling AI agents and other MCP clients to seamlessly interact with your APIs using your choice of transport methods.
tsconfig.json
, package.json
, and entry point.npm install -g openapi-mcp-generator
You can also use
yarn global add openapi-mcp-generator
orpnpm add -g openapi-mcp-generator
# Generate an MCP server (stdio)
openapi-mcp-generator --input path/to/openapi.json --output path/to/output/dir
# Generate an MCP web server with SSE
openapi-mcp-generator --input path/to/openapi.json --output path/to/output/dir --transport=web --port=3000
# Generate an MCP StreamableHTTP server
openapi-mcp-generator --input path/to/openapi.json --output path/to/output/dir --transport=streamable-http --port=3000
Option | Alias | Description | Default |
---|---|---|---|
--input | -i | Path or URL to OpenAPI specification (YAML or JSON) | Required |
--output | -o | Directory to output the generated MCP project | Required |
--server-name | -n | Name of the MCP server (package.json:name ) | OpenAPI title or mcp-api-server |
--server-version | -v | Version of the MCP server (package.json:version ) | OpenAPI version or 1.0.0 |
--base-url | -b | Base URL for API requests. Required if OpenAPI servers missing or ambiguous. | Auto-detected if possible |
--transport | -t | Transport mode: "stdio" (default), "web" , or "streamable-http" | "stdio" |
--port | -p | Port for web-based transports | 3000 |
--force | Overwrite existing files in the output directory without confirmation | false |
You can also use this package programmatically in your Node.js applications:
import { getToolsFromOpenApi } from 'openapi-mcp-generator';
// Extract MCP tool definitions from an OpenAPI spec
const tools = await getToolsFromOpenApi('./petstore.json');
// With options
const filteredTools = await getToolsFromOpenApi('https://example.com/api-spec.json', {
baseUrl: 'https://api.example.com',
dereference: true,
excludeOperationIds: ['deletePet'],
filterFn: (tool) => tool.method.toLowerCase() === 'get',
});
For full documentation of the programmatic API, see PROGRAMMATIC_API.md.
The generated project includes:
<output_directory>/
โโโ .gitignore
โโโ package.json
โโโ tsconfig.json
โโโ .env.example
โโโ src/
โ โโโ index.ts
โ โโโ [transport-specific-files]
โโโ public/ # For web-based transports
โโโ index.html # Test client
Core dependencies:
@modelcontextprotocol/sdk
- MCP protocol implementationaxios
- HTTP client for API requestszod
- Runtime validationjson-schema-to-zod
- Convert JSON Schema to ZodCommunicates with MCP clients via standard input/output. Ideal for local development or integration with LLM tools.
Launches a fully functional HTTP server with:
Implements the MCP StreamableHTTP transport which offers:
Feature | stdio | web (SSE) | streamable-http |
---|---|---|---|
Protocol | JSON-RPC over stdio | JSON-RPC over SSE | JSON-RPC over HTTP |
Connection | Persistent | Persistent | Request/response |
Bidirectional | Yes | Yes | Yes (stateful) |
Multiple clients | No | Yes | Yes |
Browser compatible | No | Yes | Yes |
Firewall friendly | No | Yes | Yes |
Load balancing | No | Limited | Yes |
Status codes | No | Limited | Full HTTP codes |
Headers | No | Limited | Full HTTP headers |
Test client | No | Yes | Yes |
Configure auth credentials in your environment:
Auth Type | Variable Format |
---|---|
API Key | API_KEY_<SCHEME_NAME> |
Bearer | BEARER_TOKEN_<SCHEME_NAME> |
Basic Auth | BASIC_USERNAME_<SCHEME_NAME> , BASIC_PASSWORD_<SCHEME_NAME> |
OAuth2 | OAUTH_CLIENT_ID_<SCHEME_NAME> , OAUTH_CLIENT_SECRET_<SCHEME_NAME> , OAUTH_SCOPES_<SCHEME_NAME> |
cd path/to/output/dir
npm install
# Run in stdio mode
npm start
# Run in web server mode
npm run start:web
# Run in StreamableHTTP mode
npm run start:http
For web and StreamableHTTP transports, a browser-based test client is automatically generated:
http://localhost:<port>
Contributions are welcome!
git checkout -b feature/amazing-feature
npm run format.write
to format your codegit commit -m "Add amazing feature"
๐ Repository: github.com/harsha-iiiv/openapi-mcp-generator
MIT License โ see LICENSE for full details.
{ "mcpServers": { "openapi-mcp-generator": { "command": "openapi-mcp-generator", "args": [ "--input", "path/to/openapi.json", "--output", "path/to/output/dir" ] } } }
Related projects feature coming soon
Will recommend related projects based on sub-categories