open-webui

mcpo: Turn MCP Tools into OpenAPI Services

mcpo proxies MCP servers as standard HTTP APIs with generated OpenAPI schemas and interactive docs. It is useful when agents, apps, or teams need to use MCP tools through familiar REST interfaces.

View on GitHub Compare
Stars
4.4k
Forks
497
Stars, last 30 days
+25

Our take

Health score

33/100

How it is scored
Activity
35
Community
55
Issues
21
Pull requests
20

+25 stars in the last 30 days

Project history

Daily GitHub snapshots since Oct 7, 2026. History covers stars and forks; health signals are not tracked historically.

Selected snapshot

Stars

4,428

Forks

511

Change since Nov 14, 2026: +1 stars·0 forks

Overview

mcpo is a Python proxy that exposes tools from MCP servers through HTTP endpoints described by OpenAPI. It addresses the compatibility gap between MCP servers, which commonly communicate over stdio, and clients that work with REST APIs and OpenAPI schemas.

Use it when you want to connect MCP tools to an OpenAPI-based application or UI without writing a custom adapter. It supports command-launched servers as well as SSE and Streamable HTTP connections, and can serve multiple configured tools from one process.

Key Features

  • Wraps MCP tools as HTTP endpoints with generated OpenAPI schemas and interactive documentation.
  • Supports MCP servers launched as local commands.
  • Connects to SSE and Streamable HTTP MCP servers.
  • Provides API-key protection for the proxy.
  • Serves multiple servers from a config file, with optional hot reload.
  • Supports OAuth 2.1 for Streamable HTTP servers.
  • Can be mounted under a reverse-proxy subpath using a root path.

Use Cases

  • An AI application developer can expose an existing MCP tool to a client that accepts OpenAPI APIs.
  • A team integrating MCP tools with Open WebUI can use HTTP endpoints and generated docs instead of building a protocol adapter.
  • An operator can consolidate several configured MCP servers behind one proxy for easier access.
  • A developer can inspect and test tool endpoints through generated interactive documentation.

Getting Started

Install and launch a command-based MCP server with uvx:

uvx mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_command

The proxy serves generated documentation at http://localhost:8000/docs. See the README for installation options, server configuration, and authentication details.

Alternatives

  • mcp-gateway: It unifies MCP servers and REST APIs behind one gateway with on-demand tool discovery, rather than exposing MCP tools as generated REST APIs with OpenAPI docs.
  • magictunnel: It offers a single natural-language tool for discovering and invoking MCP tools, rather than generating REST endpoints and OpenAPI documentation.
ProjectLanguageLicenseStarsStatus
mcpoPythonMIT4.4kNot checked yet
mcp-gatewayRustOther78Active
magictunnelRust–259Inactive

Considerations

  • mcpo is a proxy layer, not an MCP server or a replacement for the tools themselves. You must provide or configure an MCP server.
  • Python 3.8 or newer is required; uv is optional.
  • OAuth support is documented for Streamable HTTP servers, so do not assume it applies to every connection type.
  • Exposing tools over HTTP changes how they are accessed. Configure authentication and network access appropriately for your deployment.

Found this useful?

Share it with someone who would like mcpo.

Comparisons