openapi-to-mcpserver
Converts an OpenAPI specification file into an MCP server
Documentation
OpenAPI to MCP
Converts an OpenAPI specification file into an MCP server that can be used to interact with existing web APIs described by OpenAPI specifications.
This allows AI agents or other clients that understand MCP to interact with existing web APIs described by OpenAPI specifications.
Features
- Automatic conversion of OpenAPI operations to MCP tools
- Support for both modern Streamable HTTP and legacy SSE transports
- Automatic API base URL detection from OpenAPI specs
- Support for OpenAPI/Swagger 2.0 and OpenAPI 3.x
- Binary response handling
- Graceful shutdown handling
- Detailed logging for debugging
Prerequisites
- Node.js (v16 or later recommended)
Installation
1. Clone the repository (or ensure you have the `openapi-to-mcp` directory).
2. Navigate to the `openapi-to-mcp` directory:
cd openapi-to-mcp3. Install dependencies:
npm installBuild
Compile the TypeScript code to JavaScript:
npm run buildThis will create a `dist` directory with the compiled JavaScript files.
Usage
Start the server using the `start` script, providing the path to your OpenAPI specification file using the `-f` or `--file` option:
# Example using a local petstore.yaml file
npm start -- serve -f ./path/to/your/openapi.json
# Example with different port and host
npm start -- serve --file ./specs/petstore.json --port 9090 --host 0.0.0.0- Replace `./path/to/your/openapi.json` with the actual path to your OpenAPI file.
- The server will parse the file, adapt the API operations to MCP functions, and start listening.
- It will print the available endpoints for both modern and legacy MCP connections.
Connecting as an MCP Client
Modern Connection (Recommended)
The server provides a modern Streamable HTTP transport managed by the MCP SDK. This is the recommended way to connect to the server.
Legacy SSE Connection
For backwards compatibility, the server also supports SSE connections:
1. Connect to the SSE endpoint (e.g., `http://localhost:8080/sse`).
2. You will receive an `mcp-hello` event upon connection.
3. To call a function, send an MCP `function_call` message via a POST request to the `/messages` endpoint with a `sessionId` query parameter matching your SSE connection ID.
Example POST to `/messages?sessionId=`:
Headers:
Content-Type: application/jsonBody:
{
"type": "function_call",
"id": "call-123",
"function_name": "get_pets_by_status",
"parameters": {
"status": "available"
}
}4. The server will execute the corresponding API call and send back a `function_return` or `error` event over the established SSE connection.
Development
Run in development mode with auto-recompilation:
# Make sure to provide the OpenAPI file path
npm run dev -- -f ./path/to/your/openapi.yamlCurrent Limitations
- Authentication: Not implemented
- Schema Validation: While basic schema validation is in place, some complex OpenAPI schema features (discriminators, complex compositions) might not be fully supported.
- Testing: No automated tests are currently included.
- Documentation: Individual tool documentation could be improved with more examples and parameter descriptions.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Frequently asked questions
What is openapi-to-mcpserver?
openapi-to-mcpserver is Converts an OpenAPI specification file into an MCP server
How do I install openapi-to-mcpserver?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is openapi-to-mcpserver open source?
Yes — it is hosted on GitHub at https://github.com/spaceguy101/openapi-to-mcpserver and has 1 stars.
Related MCP tools
The official TypeScript SDK for Model Context Protocol servers and clients Trusted by 10500+ developers. Trusted by 10500+ developers.
Visual testing tool for MCP servers TypeScript-based implementation. Trusted by 7300+ developers. Trusted by 7300+ developers.
It's like v0 but in your Cursor/WindSurf/Cline. 21st dev Magic MCP server for working with your frontend like Magic TypeScript-based implementation.
Model Context Protocol Server for Mobile Automation and Scraping (iOS, Android, Emulators, Simulators and Real Devices) TypeScript-based implementation.
Https://github.com/user-attachments/assets/364b6705-14d4-4e6d-bea7-fb9f12664fab for the Model Context Protocol. Enhance AI assistants with powerful integrations
MCP server that provides tools and resources for interacting with n8n API TypeScript-based implementation. Trusted by 1400+ developers.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP