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-generatororpnpm 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-featurenpm 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