mirror of
https://github.com/open-webui/docs
synced 2025-06-16 11:28:36 +00:00
200 lines
9.1 KiB
Plaintext
200 lines
9.1 KiB
Plaintext
---
|
||
sidebar_position: 3
|
||
title: "🛰️ MCP Support"
|
||
---
|
||
|
||
This documentation explains how to easily set up and deploy the [**MCP (Model Context Protocol)-to-OpenAPI proxy server** (mcpo)](https://github.com/open-webui/mcpo) provided by Open WebUI. Learn how you can effortlessly expose MCP-based tool servers using standard, familiar OpenAPI endpoints suitable for end-users and developers.
|
||
|
||
### 📌 What is the MCP Proxy Server?
|
||
|
||
The MCP-to-OpenAPI proxy server lets you use tool servers implemented with MCP (Model Context Protocol) directly via standard REST/OpenAPI APIs—no need to manage unfamiliar or complicated custom protocols. If you're an end-user or application developer, this means you can interact easily with powerful MCP-based tooling directly through familiar REST-like endpoints.
|
||
|
||
### 💡 Why Use mcpo?
|
||
|
||
While MCP tool servers are powerful and flexible, they commonly communicate via standard input/output (stdio)—often running on your local machine where they can easily access your filesystem, environment, and other native system capabilities.
|
||
|
||
That’s a strength—but also a limitation.
|
||
|
||
If you want to deploy your main interface (like Open WebUI) on the cloud, you quickly run into a problem: your cloud instance can’t speak directly to an MCP server running locally on your machine via stdio.
|
||
|
||
[That’s where mcpo comes in with a game-changing solution.](https://github.com/open-webui/mcpo)
|
||
|
||
MCP servers typically rely on raw stdio communication, which is:
|
||
|
||
- 🔓 Inherently insecure across environments
|
||
- ❌ Incompatible with most modern tools, UIs, or platforms
|
||
- 🧩 Lacking critical features like authentication, documentation, and error handling
|
||
|
||
The mcpo proxy eliminates those issues—automatically:
|
||
|
||
- ✅ Instantly compatible with existing OpenAPI tools, SDKs, and clients
|
||
- 🛡 Wraps your tools with secure, scalable, and standards-based HTTP endpoints
|
||
- 🧠 Auto-generates interactive OpenAPI documentation for every tool, entirely config-free
|
||
- 🔌 Uses plain HTTP—no socket setup, daemon juggling, or platform-specific glue code
|
||
|
||
So even though adding mcpo might at first seem like "just one more layer"—in reality, it simplifies everything while giving you:
|
||
|
||
- Better integration ✅
|
||
- Better security ✅
|
||
- Better scalability ✅
|
||
- Happier developers & users ✅
|
||
|
||
✨ With mcpo, your local-only AI tools become cloud-ready, UI-friendly, and instantly interoperable—without changing a single line of tool server code.
|
||
|
||
### ✅ Quickstart: Running the Proxy Locally
|
||
|
||
Here's how simple it is to launch the MCP-to-OpenAPI proxy server using the lightweight, easy-to-use tool **mcpo** ([GitHub Repository](https://github.com/open-webui/mcpo)):
|
||
|
||
1. **Prerequisites**
|
||
- **Python 3.8+** with `pip` installed.
|
||
- MCP-compatible application (for example: `mcp-server-time`)
|
||
- (Optional but recommended) `uv` installed for faster startup and zero-config convenience.
|
||
|
||
2. **Install mcpo**
|
||
|
||
Using **uv** (recommended):
|
||
|
||
```bash
|
||
uvx mcpo --port 8000 -- your_mcp_server_command
|
||
```
|
||
|
||
Or using `pip`:
|
||
|
||
```bash
|
||
pip install mcpo
|
||
mcpo --port 8000 -- your_mcp_server_command
|
||
```
|
||
|
||
3. 🚀 **Run the Proxy Server**
|
||
|
||
To start your MCP-to-OpenAPI proxy server, you need an MCP-compatible tool server. If you don't have one yet, the MCP community provides various ready-to-use MCP server implementations.
|
||
|
||
✨ **Where to find MCP Servers?**
|
||
|
||
You can discover officially supported MCP servers at the following repository example:
|
||
|
||
- [modelcontextprotocol/servers on GitHub](https://github.com/modelcontextprotocol/servers)
|
||
|
||
For instance, the popular **Time MCP Server** is documented [here](https://github.com/modelcontextprotocol/servers/blob/main/src/time/README.md), and is typically referenced clearly in the README, inside the provided MCP configuration. Specifically, the README states:
|
||
|
||
> Add to your Claude settings:
|
||
>
|
||
> ```json
|
||
> "mcpServers": {
|
||
> "time": {
|
||
> "command": "uvx",
|
||
> "args": ["mcp-server-time", "--local-timezone=America/New_York"]
|
||
> }
|
||
> }
|
||
> ```
|
||
|
||
🔑 **Translating this MCP setup to a quick local proxy command**:
|
||
|
||
You can easily run the recommended MCP server (`mcp-server-time`) directly through the **MCP-to-OpenAPI proxy** (`mcpo`) like this:
|
||
|
||
```bash
|
||
uvx mcpo --port 8000 -- uvx mcp-server-time --local-timezone=America/New_York
|
||
```
|
||
|
||
That's it! You're now running the MCP-to-OpenAPI Proxy locally and exposing the powerful **MCP Time Server** through standard OpenAPI endpoints accessible at:
|
||
|
||
- 📖 **Interactive OpenAPI Documentation:** [`http://localhost:8000/docs`](http://localhost:8000/docs)
|
||
|
||
Feel free to replace `uvx mcp-server-time --local-timezone=America/New_York` with your preferred MCP Server command from other available MCP implementations found in the official repository.
|
||
|
||
🤝 **To integrate with Open WebUI after launching the server, check our [docs](https://docs.openwebui.com/openapi-servers/open-webui/).**
|
||
|
||
### 🚀 Accessing the Generated APIs
|
||
|
||
As soon as it starts, the MCP Proxy (`mcpo`) automatically:
|
||
|
||
- Discovers MCP tools dynamically and generates REST endpoints.
|
||
- Creates interactive, human-readable OpenAPI documentation accessible at:
|
||
- `http://localhost:8000/docs`
|
||
|
||
Simply call the auto-generated API endpoints directly via HTTP clients, AI agents, or other OpenAPI tools of your preference.
|
||
|
||
### 📖 Example Workflow for End-Users
|
||
|
||
Assuming you started the above server command (`uvx mcp-server-time`):
|
||
|
||
- Visit your local API documentation at `http://localhost:8000/docs`.
|
||
- Select a generated endpoint (e.g. `/get_current_time`) and use the provided interactive form.
|
||
- Click "**Execute**" and instantly receive your response.
|
||
|
||
No setup complexity—just instant REST APIs.
|
||
|
||
|
||
## 🚀 Deploying in Production (Example)
|
||
|
||
Deploying your MCP-to-OpenAPI proxy (powered by mcpo) is straightforward. Here's how to easily Dockerize and deploy it to cloud or VPS solutions:
|
||
|
||
### 🐳 Dockerize your Proxy Server using mcpo
|
||
|
||
1. **Dockerfile Example**
|
||
|
||
Create the following `Dockerfile` inside your deployment directory:
|
||
|
||
```dockerfile
|
||
FROM python:3.11-slim
|
||
WORKDIR /app
|
||
RUN pip install mcpo uv
|
||
# Replace with your MCP server command; example: uvx mcp-server-time
|
||
CMD ["uvx", "mcpo", "--host", "0.0.0.0", "--port", "8000", "--", "uvx", "mcp-server-time", "--local-timezone=America/New_York"]
|
||
```
|
||
|
||
2. **Build & Run the Container Locally**
|
||
|
||
```bash
|
||
docker build -t mcp-proxy-server .
|
||
docker run -d -p 8000:8000 mcp-proxy-server
|
||
```
|
||
|
||
3. **Deploying Your Container**
|
||
|
||
Push to DockerHub or another registry:
|
||
|
||
```bash
|
||
docker tag mcp-proxy-server yourdockerusername/mcp-proxy-server:latest
|
||
docker push yourdockerusername/mcp-proxy-server:latest
|
||
```
|
||
|
||
Deploy using Docker Compose, Kubernetes YAML manifests, or your favorite cloud container services (AWS ECS, Azure Container Instances, Render.com, or Heroku).
|
||
|
||
✔️ Your production MCP servers are now effortlessly available via REST APIs!
|
||
|
||
## 🧑💻 Technical Details and Background
|
||
|
||
### 🍃 How It Works (Technical Summary)
|
||
|
||
- **Dynamic Schema Discovery & Endpoints:** At server startup, the proxy connects to the MCP server to query available tools. It automatically builds FastAPI endpoints based on the MCP tool schemas, creating concise and clear REST endpoints.
|
||
|
||
- **OpenAPI Auto-documentation:** Endpoints generated are seamlessly documented and available via FastAPI's built-in Swagger UI (`/docs`). No extra doc writing required.
|
||
|
||
- **Asynchronous & Performant**: Built on robust asynchronous libraries, ensuring speed and reliability for concurrent users.
|
||
|
||
### 📚 Under the Hood:
|
||
|
||
- FastAPI (Automatic routing & docs generation)
|
||
- MCP Client (Standard MCP integration & schema discovery)
|
||
- Standard JSON over HTTP (Easy integration)
|
||
|
||
## ⚡️ Why is the MCP-to-OpenAPI Proxy Superior?
|
||
|
||
Here's why leveraging MCP servers through OpenAPI via the proxy approach is significantly better and why Open WebUI enthusiastically supports it:
|
||
|
||
- **User-friendly & Familiar Interface**: No custom clients; just HTTP REST endpoints you already know.
|
||
- **Instant Integration**: Immediately compatible with thousands of existing REST/OpenAPI tools, SDKs, and services.
|
||
- **Powerful & Automatic Docs**: Built-in Swagger UI documentation is automatically generated, always accurate, and maintained.
|
||
- **No New Protocol overhead**: Eliminates the necessity to directly handle MCP-specific protocol complexities and socket communication issues.
|
||
- **Battle-Tested Security & Stability**: Inherits well-established HTTPS transport, standard auth methods (JWT, API keys), solid async libraries, and FastAPI’s proven robustness.
|
||
- **Future-Proof**: MCP proxy uses existing, stable, standard REST/OpenAPI formats guaranteed long-term community support and evolution.
|
||
|
||
🌟 **Bottom line:** MCP-to-OpenAPI makes your powerful MCP-based AI tools broadly accessible through intuitive, reliable, and scalable REST endpoints. Open WebUI proudly supports and recommends this best-in-class approach.
|
||
|
||
|
||
## 📢 Community & Support
|
||
|
||
- For questions, suggestions, or feature requests, please use our [GitHub Issue tracker](https://github.com/open-webui/openapi-servers/issues) or join our [Community Discussions](https://github.com/open-webui/openapi-servers/discussions).
|
||
|
||
Happy integrations! 🌟🚀 |