Track MCP LogoTrack MCP
Track MCP LogoTrack MCP

The world's largest repository of Model Context Protocol servers. Discover, explore, and submit MCP tools.

Product

  • Categories
  • Top MCP
  • New & Updated

Company

  • About

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy

© 2025 TrackMCP. All rights reserved.

Built with ❤️ by Krishna Goyal

    Openapi Mcp Generator

    A tool that converts OpenAPI specifications to MCP server TypeScript-based implementation.

    438 stars
    TypeScript
    Updated Nov 3, 2025

    Documentation

    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

    bash
    npm install -g openapi-mcp-generator

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

    ---

    🛠 Usage

    bash
    # 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:

    javascript
    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:

    code
    /
    ├── .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_
    BearerBEARER_TOKEN_
    Basic AuthBASIC_USERNAME_, BASIC_PASSWORD_
    OAuth2OAUTH_CLIENT_ID_, OAUTH_CLIENT_SECRET_, OAUTH_SCOPES_

    ---

    🔎 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:

    yaml
    # 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

    bash
    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:

    3. Use the test client to interact with your MCP server

    ---

    ⚠️ Requirements

    • Node.js v20 or later

    ---

    Star History

    🤝 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.

    Similar MCP

    Based on tags & features

    • VS

      Vscode Mcp Server

      TypeScript·
      260
    • MC

      Mcp Wave

      TypeScript00
    • GL

      Glm Mcp Server

      TypeScript·
      3
    • OP

      Openai Gpt Image Mcp

      TypeScript·
      75

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k
    View All MCP Servers

    Similar MCP

    Based on tags & features

    • VS

      Vscode Mcp Server

      TypeScript·
      260
    • MC

      Mcp Wave

      TypeScript00
    • GL

      Glm Mcp Server

      TypeScript·
      3
    • OP

      Openai Gpt Image Mcp

      TypeScript·
      75

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k