MCPHub LabRegistryopenapi-mcp-generator
harsha-iiiv

openapi mcp generator

Built by harsha-iiiv β€’ 548 stars

What is openapi mcp generator?

A tool that converts OpenAPI specifications to MCP server

How to use openapi mcp generator?

1. Install a compatible MCP client (like Claude Desktop). 2. Open your configuration settings. 3. Add openapi mcp generator using the following command: npx @modelcontextprotocol/openapi-mcp-generator 4. Restart the client and verify the new tools are active.
πŸ›‘οΈ Scoped (Restricted)
npx @modelcontextprotocol/openapi-mcp-generator --scope restricted
πŸ”“ Unrestricted Access
npx @modelcontextprotocol/openapi-mcp-generator

Key Features

Native MCP Protocol Support
Real-time Tool Activation & Execution
Verified High-performance Implementation
Secure Resource & Context Handling

Optimized Use Cases

Extending AI models with custom local capabilities
Automating system workflows via natural language
Connecting external data sources to LLM context windows

openapi mcp generator FAQ

Q

Is openapi mcp generator safe?

Yes, openapi mcp generator follows the standardized Model Context Protocol security patterns and only executes tools with explicit user-granted permissions.

Q

Is openapi mcp generator up to date?

openapi mcp generator is currently active in the registry with 548 stars on GitHub, indicating its reliability and community support.

Q

Are there any limits for openapi mcp generator?

Usage limits depend on the specific implementation of the MCP server and your system resources. Refer to the official documentation below for technical details.

Official Documentation

View on GitHub

OpenAPI to MCP Generator (openapi-mcp-generator)

npm version License: MIT GitHub repository

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.


✨ Features

  • πŸ”§ OpenAPI 3.0 Support: Converts any OpenAPI 3.0+ spec into an MCP-compatible server.
  • πŸ” Proxy Behavior: Proxies calls to your original REST API while validating request structure and security.
  • πŸ” Authentication Support: API keys, Bearer tokens, Basic auth, and OAuth2 supported via environment variables.
  • πŸ§ͺ Zod Validation: Automatically generates Zod schemas from OpenAPI definitions for runtime input validation.
  • βš™οΈ Typed Server: Fully typed, maintainable TypeScript code output.
  • πŸ”Œ Multiple Transports: Communicate over stdio, SSE via Hono, or StreamableHTTP.
  • 🧰 Project Scaffold: Generates a complete Node.js project with tsconfig.json, package.json, and entry point.
  • πŸ§ͺ Built-in HTML Test Clients: Test API interactions visually in your browser (for web-based transports).

πŸš€ Installation

npm install -g openapi-mcp-generator

You can also use yarn global add openapi-mcp-generator or pnpm add -g openapi-mcp-generator


πŸ›  Usage

# 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

CLI Options

OptionAliasDescriptionDefault
--input-iPath or URL to OpenAPI specification (YAML or JSON)Required
--output-oDirectory to output the generated MCP projectRequired
--server-name-nName of the MCP server (package.json:name)OpenAPI title or mcp-api-server
--server-version-vVersion of the MCP server (package.json:version)OpenAPI version or 1.0.0
--base-url-bBase URL for API requests. Required if OpenAPI servers missing or ambiguous.Auto-detected if possible
--transport-tTransport mode: "stdio" (default), "web", or "streamable-http""stdio"
--port-pPort for web-based transports3000
--default-includeDefault behavior for x-mcp filtering. Accepts true or false (case-insensitive). true = include by default, false = exclude by default.true
--forceOverwrite existing files in the output directory without confirmationfalse

πŸ“¦ Programmatic API

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.


🧱 Project Structure

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 implementation
  • axios - HTTP client for API requests
  • zod - Runtime validation
  • json-schema-to-zod - Convert JSON Schema to Zod
  • Transport-specific deps (Hono, uuid, etc.)

πŸ“‘ Transport Modes

Stdio (Default)

Communicates with MCP clients via standard input/output. Ideal for local development or integration with LLM tools.

Web Server with SSE

Launches a fully functional HTTP server with:

  • Server-Sent Events (SSE) for bidirectional messaging
  • REST endpoint for client β†’ server communication
  • In-browser test client UI
  • Multi-connection support
  • Built with lightweight Hono framework

StreamableHTTP

Implements the MCP StreamableHTTP transport which offers:

  • Stateful JSON-RPC over HTTP POST requests
  • Session management using HTTP headers
  • Proper HTTP response status codes
  • Built-in error handling
  • Compatibility with MCP StreamableHTTPClientTransport
  • In-browser test client UI
  • Built with lightweight Hono framework

Transport Comparison

Featurestdioweb (SSE)streamable-http
ProtocolJSON-RPC over stdioJSON-RPC over SSEJSON-RPC over HTTP
ConnectionPersistentPersistentRequest/response
BidirectionalYesYesYes (stateful)
Multiple clientsNoYesYes
Browser compatibleNoYesYes
Firewall friendlyNoYesYes
Load balancingNoLimitedYes
Status codesNoLimitedFull HTTP codes
HeadersNoLimitedFull HTTP headers
Test clientNoYesYes

πŸ” Environment Variables for Authentication

Configure auth credentials in your environment:

Auth TypeVariable Format
API KeyAPI_KEY_<SCHEME_NAME>
BearerBEARER_TOKEN_<SCHEME_NAME>
Basic AuthBASIC_USERNAME_<SCHEME_NAME>, BASIC_PASSWORD_<SCHEME_NAME>
OAuth2OAUTH_CLIENT_ID_<SCHEME_NAME>, OAUTH_CLIENT_SECRET_<SCHEME_NAME>, OAUTH_SCOPES_<SCHEME_NAME>

πŸ”Ž Filtering Endpoints with OpenAPI Extensions

You can control which operations are exposed as MCP tools using a vendor extension flag x-mcp. This extension is supported at the root, path, and operation levels. By default, endpoints are included unless explicitly excluded.

  • Extension: x-mcp: true | false
  • Default: true (include by default)
  • Precedence: operation > path > root (first non-undefined wins)
  • CLI option: --default-include false to change default to exclude by default

Examples:

# Optional root-level default
x-mcp: true

paths:
  /pets:
    x-mcp: false # exclude all ops under /pets
    get:
      x-mcp: true # include this operation anyway

  /users/{id}:
    get:
      # no x-mcp -> included by default

This uses standard OpenAPI extensions (x-… fields). See the OpenAPI Extensions guide for details.

Note: x-mcp must be a boolean or the strings "true"/"false" (case-insensitive). Other values are ignored in favor of higher-precedence or default behavior.


▢️ Running the Generated Server

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

Testing Web-Based Servers

For web and StreamableHTTP transports, a browser-based test client is automatically generated:

  1. Start the server using the appropriate command
  2. Open your browser to http://localhost:<port>
  3. Use the test client to interact with your MCP server

⚠️ Requirements

  • Node.js v20 or later

Star History

<a href="https://www.star-history.com/#harsha-iiiv/openapi-mcp-generator&Date"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=harsha-iiiv/openapi-mcp-generator&type=Date&theme=dark" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=harsha-iiiv/openapi-mcp-generator&type=Date" /> <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=harsha-iiiv/openapi-mcp-generator&type=Date" /> </picture> </a>

🀝 Contributing

Contributions are welcome!

  1. Fork the repo
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Run npm run format.write to format your code
  4. Commit your changes: git commit -m "Add amazing feature"
  5. Push and open a PR

πŸ“Œ Repository: github.com/harsha-iiiv/openapi-mcp-generator


πŸ“„ License

MIT License β€” see LICENSE for full details.

Global Ranking

-
Trust ScoreMCPHub Index

Based on codebase health & activity.

Manual Config

{ "mcpServers": { "openapi-mcp-generator": { "command": "npx", "args": ["openapi-mcp-generator"] } } }