About MCP Server from OpenAPI
A Python implementation that builds an MCP server from an OpenAPI specification. It supports SSE and streaming modes, with client examples for MCP and ADK agents.
Key features
- 01Generate endpoints from OpenAPI specs
- 02SSE and streaming modes
- 03MCP and ADK client examples
- 04Configure with environment variables
Use cases
- 01Expose an OpenAPI-defined API to MCP clients
- 02Test API calls through SSE or streaming
- 03Connect ADK agents to generated endpoints
MCP support
Generates an MCP server from an OpenAPI specification and exposes API operations to MCP clients. It includes SSE and streaming server and client implementations.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEMCP Server from OpenAPI
A MCP server implementation from OpenAPI specifications, supporting both SSE (Server-Sent Events) and streaming responses.
Prerequisites
- Python 3.x
- pip (Python package manager)
- Anthropic API key (for MCP clients)
- Google API key (for ADK agents)
Installation
- Create and activate a virtual environment:
python3 -m venv venv
source venv/bin/activate
- Install dependencies:
pip install -r requirements.txt
Server Setup
The server can be run in two modes:
SSE Mode
python server/mcp_server_sse.py --spec server/httpbin_openapi.yaml --name httpbin --base-url https://httpbin.org
Streaming Mode
python server/mcp_server_stream.py --spec server/httpbin_openapi.yaml --name httpbin --base-url https://httpbin.org
Client Setup
MCP Clients
- Create a
.envfile in the project root and add your Anthropic API key:
ANTHROPIC_API_KEY=your_api_key_here
- Run the client of your choice:
- For SSE client:
python client/sse_client.py- For streaming client:
python client/stream_client.py
Example usage with either MCP or streaming client:
MCP Client Started!
Type your queries or 'quit' to exit.
Query: Get Headers
I'll help you get the headers using the api_call function.
[Calling tool api_call with args {'kwargs': '{"action": "get_headers"}'}]
Here are the headers from the response:
```json
{
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "python-httpx/0.28.1",
"X-Amzn-Trace-Id": "Root=1-683fecc4-674af7e9323b027c4b9bc740"
}
ADK Agents
Prerequisites
- Install ADK:
pip install google-adk
Setup Steps
-
Important: Streaming mode workaround
- Download the latest
mcp_session_manager.pyfrom Google ADK repository - Replace the existing file in your ADK installation:
# Typical path (adjust Python version as needed) cp mcp_session_manager.py venv/lib/python3.13/site-packages/google/adk/tools/mcp_tool/
- Download the latest
-
Navigate to the Clients directory:
cd client
-
Configure the environment:
- Add the following to
.envfile in bothhttpb_sse_agentandhttpbin_stream_agentdirectories:
GOOGLE_GENAI_USE_VERTEXAI="False" GOOGLE_API_KEY="your_google_api_key_here" - Add the following to
-
Start the ADK web interface:
adk web
Features
- OpenAPI specification-based endpoint generation
- Support for both SSE and streaming responses
- Multiple client implementations (MCP and ADK)
- Easy configuration through environment variables
Troubleshooting
ADK Streaming Mode Issues
If you encounter issues with ADK agents in streaming mode:
- Verify you've replaced the
mcp_session_manager.pyfile - Check your Google API key is correctly set in the
.envfiles - Ensure you're using the latest version of ADK
License
This project is licensed under the Apache 2.0 License.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.