← Back to directory
M

mcpo

Official
Expose MCP tools as OpenAPI services instantly.
GitHub source repository ↗
★ 4.3k Stars Category · Dev Tools Very popular
53FMRS · D
Reliability
8/20
Security and permissions
8/20
Maintenance
11/20
Documentation
13/20
Setup experience
13/20

mcpo converts MCP tools into OpenAPI-compatible HTTP services and supports stdio, SSE, and Streamable HTTP. It also provides generated documentation, multi-server configuration, hot reload, and OAuth 2.1 support for Streamable HTTP servers.

Read the FMRS scoring method →

mcpo is a simple, secure MCP-to-OpenAPI proxy server. It accepts an MCP server command or an SSE or Streamable HTTP endpoint, exposes its tools over standard RESTful HTTP, and automatically generates an OpenAPI schema with interactive documentation.

Tools

The tool list has not been reviewed yet.

Setup

With uvx, run: uvx mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_command. Alternatively, install with pip install mcpo and run mcpo, or use the Docker image ghcr.io/open-webui/mcpo:main. After startup, visit http://localhost:8000/docs. Multiple servers can be run from a Claude Desktop-format configuration file with mcpo --config /path/to/config.json; add --hot-reload when needed.

Fit and risk

Best for

  • LLM applications and developers that need MCP tools over HTTP
  • Teams using OpenAPI tools, SDKs, or UIs
  • Deployments requiring multi-server configuration, hot reload, or OAuth 2.1

Not for

  • Clients that only need direct native MCP stdio communication
  • Deployments unwilling to manage API keys, network ports, or proxy security
  • Other protocols or integrations not documented in the source

Required permissions

  • It must execute the specified MCP server command or connect to the specified SSE or Streamable HTTP endpoint
  • It must listen on the configured HTTP port
  • OAuth 2.1 may require browser authorization, a callback port, and, with file storage, write access to ~/.mcpo/tokens/

Risks and side effects

  • The exposed HTTP service should use an API key; the README demonstrates API keys as startup arguments
  • The proxy makes MCP tools available to callers that can reach the HTTP service, so port and reverse-proxy settings require care
  • OAuth tokens may be stored under ~/.mcpo/tokens/; protect that directory in deployment
  • Commands, endpoints, and headers in the configuration affect proxy targets and credentials

Troubleshooting

  1. Verify that Python 3.8 or newer is available
  2. Verify that the MCP server command is executable and the port is available
  3. For SSE, use --server-type sse and check the endpoint and headers
  4. For Streamable HTTP, use --server-type streamable-http and check the endpoint
  5. Inspect the generated documentation at /docs or /<tool>/docs
  6. When serving under a subpath, set the matching --root-path
  7. For OAuth failures, check server_url, the callback port, and support for dynamic client registration

Use cases

Expose stdio-based MCP tools as standard HTTP/OpenAPI services
Provide MCP tools to OpenAPI tools, SDKs, and user interfaces
Proxy SSE or Streamable HTTP MCP servers
Serve multiple MCP tools with separate routes and interactive documentation

Supported clients

Open WebUIFull support