Skip to main content

🛰️ MCP 支持

本文档说明如何轻松设置和部署由 Open WebUI 提供的 MCP (Model Context Protocol)-to-OpenAPI 代理服务器 (mcpo)。了解如何使用标准、熟悉的 OpenAPI 端点轻松公开基于 MCP 的工具服务器,适合最终用户和开发者。

📌 什么是 MCP 代理服务器?

MCP-to-OpenAPI 代理服务器让您通过标准 REST/OpenAPI API 直接使用使用 MCP (Model Context Protocol) 实现的工具服务器——无需管理不熟悉或复杂的自定义协议。如果您是最终用户或应用程序开发者,这意味着您可以通过熟悉的类似 REST 的端点轻松与强大的基于 MCP 的工具交互。

💡 为什么使用 mcpo?

虽然 MCP 工具服务器功能强大且灵活,但它们通常通过标准输入/输出 (stdio) 进行通信——通常在您的本地机器上运行,在那里它们可以轻松访问您的文件系统、环境和其他本机系统功能。

这是一个优势——但也是一个限制。

如果您想在云上部署主界面(如 Open WebUI),您很快就会遇到一个问题:您的云实例无法通过 stdio 直接与在您本地机器上运行的 MCP 服务器通信。

这就是 mcpo 提供的改变游戏规则的解决方案。

MCP 服务器通常依赖原始 stdio 通信,这是:

  • 🔓 跨环境本质上不安全
  • ❌ 与大多数现代工具、UI 或平台不兼容
  • 🧩 缺乏关键功能,如身份验证、文档和错误处理

mcpo 代理自动消除了这些问题:

  • ✅ 即时兼容现有 OpenAPI 工具、SDK 和客户端
  • 🛡 使用安全、可扩展和基于标准的 HTTP 端点包装您的工具
  • 🧠 为每个工具自动生成交互式 OpenAPI 文档,完全无需配置
  • 🔌 使用纯 HTTP——无需套接字设置、守护程序操作或平台特定的胶水代码

所以即使添加 mcpo 起初可能看起来像"只是多了一层"——实际上,它简化了一切,同时给您:

  • 更好的集成 ✅
  • 更好的安全性 ✅
  • 更好的可扩展性 ✅
  • 更快乐的开发者和用户 ✅

✨ 使用 mcpo,您的仅本地 AI 工具变得云就绪、UI 友好,并且立即可互操作——无需更改单行工具服务器代码。

✅ 快速开始:本地运行代理

使用轻量级、易于使用的工具 mcpo (GitHub 仓库) 启动 MCP-to-OpenAPI 代理服务器是多么简单:

  1. 先决条件

    • Python 3.8+ 且安装了 pip
    • MCP 兼容应用程序(例如:mcp-server-time
    • (可选但推荐)安装 uv 以获得更快的启动和零配置便利性。
  2. 安装 mcpo

使用 uv(推荐):

uvx mcpo --port 8000 -- your_mcp_server_command

或使用 pip

pip install mcpo
mcpo --port 8000 -- your_mcp_server_command
  1. 🚀 运行代理服务器

要启动您的 MCP-to-OpenAPI 代理服务器,您需要一个 MCP 兼容的工具服务器。如果您还没有,MCP 社区提供各种即用的 MCP 服务器实现。

在哪里找到 MCP 服务器?

您可以在以下仓库示例中发现官方支持的 MCP 服务器:

例如,流行的 Time MCP Server这里有文档记录,通常在提供的 MCP 配置中明确引用。具体地,README 声明:

添加到您的 Claude 设置:

"mcpServers": {   
"time": {
"command": "uvx",
"args": ["mcp-server-time", "--local-timezone=America/New_York"]
}
}

🔑 将此 MCP 设置转换为快速本地代理命令

您可以通过 MCP-to-OpenAPI 代理 (mcpo) 轻松运行推荐的 MCP 服务器 (mcp-server-time),如下所示:

uvx mcpo --port 8000 -- uvx mcp-server-time --local-timezone=America/New_York

就是这样!您现在正在本地运行 MCP-to-OpenAPI 代理,并通过标准 OpenAPI 端点公开强大的 MCP Time Server,可在以下位置访问:

随时用您从官方仓库中找到的其他可用 MCP 实现中的首选 MCP 服务器命令替换 uvx mcp-server-time --local-timezone=America/New_York

🤝 启动服务器后要与 Open WebUI 集成,请查看我们的文档

🚀 访问生成的 API

一旦启动,MCP 代理 (mcpo) 自动:

  • 动态发现 MCP 工具并生成 REST 端点。
  • 创建交互式、人类可读的 OpenAPI 文档,可在以下位置访问:
    • http://localhost:8000/docs

只需通过 HTTP 客户端、AI 代理或您偏好的其他 OpenAPI 工具直接调用自动生成的 API 端点。

📖 最终用户的示例工作流

假设您启动了上述服务器命令 (uvx mcp-server-time):

  • http://localhost:8000/docs 访问您的本地 API 文档。
  • 选择一个生成的端点(例如 /get_current_time)并使用提供的交互式表单。
  • 点击"执行"并立即收到您的响应。

无需设置复杂性——只需即时 REST API。

🚀 生产部署(示例)

部署您的 MCP-to-OpenAPI 代理(由 mcpo 提供支持)很简单。以下是如何轻松将其 Docker 化并部署到云或 VPS 解决方案:

🐳 使用 mcpo 将您的代理服务器 Docker 化

  1. Dockerfile 示例

在您的部署目录中创建以下 Dockerfile

FROM python:3.11-slim
WORKDIR /app
RUN pip install mcpo uv
# 替换为您的 MCP 服务器命令;示例:uvx mcp-server-time
CMD ["uvx", "mcpo", "--host", "0.0.0.0", "--port", "8000", "--", "uvx", "mcp-server-time", "--local-timezone=America/New_York"]
  1. 在本地构建和运行容器
docker build -t mcp-proxy-server .
docker run -d -p 8000:8000 mcp-proxy-server
  1. 部署您的容器

推送到 DockerHub 或其他注册表:

docker tag mcp-proxy-server yourdockerusername/mcp-proxy-server:latest
docker push yourdockerusername/mcp-proxy-server:latest

使用 Docker Compose、Kubernetes YAML 清单或您最喜欢的云容器服务(AWS ECS、Azure Container Instances、Render.com 或 Heroku)进行部署。

✔️ 您的生产 MCP 服务器现在可以通过 REST API 轻松使用!

🧑‍💻 技术细节和背景

🍃 工作原理(技术摘要)

  • 动态架构发现和端点: 在服务器启动时,代理连接到 MCP 服务器以查询可用工具。它基于 MCP 工具架构自动构建 FastAPI 端点,创建简洁明确的 REST 端点。

  • OpenAPI 自动文档: 生成的端点通过 FastAPI 的内置 Swagger UI (/docs) 无缝记录和可用。无需额外的文档编写。

  • 异步和高性能:基于强大的异步库构建,确保并发用户的速度和可靠性。

📚 内部机制:

  • FastAPI(自动路由和文档生成)
  • MCP 客户端(标准 MCP 集成和架构发现)
  • 通过 HTTP 的标准 JSON(易于集成)

⚡️ 为什么 MCP-to-OpenAPI 代理更优秀?

以下是通过代理方法通过 OpenAPI 利用 MCP 服务器明显更好的原因,以及为什么 Open WebUI 热情支持它:

  • 用户友好和熟悉的界面:无需自定义客户端;只需您已经了解的 HTTP REST 端点。
  • 即时集成:立即兼容数千个现有的 REST/OpenAPI 工具、SDK 和服务。
  • 强大的自动文档:内置 Swagger UI 文档自动生成,始终准确,并得到维护。
  • 无新协议开销:消除了直接处理 MCP 特定协议复杂性和套接字通信问题的必要性。
  • 经过实战验证的安全性和稳定性:继承了成熟的 HTTPS 传输、标准身份验证方法(JWT、API 密钥)、可靠的异步库和 FastAPI 经过验证的健壮性。
  • 面向未来:MCP 代理使用现有的、稳定的、标准的 REST/OpenAPI 格式,保证长期社区支持和发展。

🌟 底线: MCP-to-OpenAPI 通过直观、可靠和可扩展的 REST 端点使您强大的基于 MCP 的 AI 工具广泛可访问。Open WebUI 自豪地支持并推荐这种一流的方法。

📢 社区和支持

祝集成愉快!🌟🚀