Open WebUI 的 MCPo 项目(Model Context Protocol-to-OpenAPI Proxy Server)是一个旨在解决 AI 工具集成标准化难题的创新方案。随着大模型应用的发展,开发者常面临如何将复杂的 MCP 协议工具安全、高效地暴露为通用 HTTP 接口的挑战。MCPo 通过代理模式,将任何基于 MCP 的工具转换为兼容 OpenAPI 的 RESTful API,让 LLM 代理和应用程序能无缝调用。
核心优势
MCPo 的设计重点在于降低集成门槛并提升安全性:
- 即插即用:支持现有的 OpenAPI 工具、SDK 和用户界面,无需额外配置即可运行。
- 标准化传输:采用 HTTPS 协议,支持 JWT 和 API 密钥认证,保障通信安全。
- 文档自动化:内置 Swagger UI,自动生成交互式文档,方便调试与查看。
- 纯 HTTP 支持:摒弃复杂的套接字逻辑,简化开发流程。
工作原理
MCPo 的核心是动态发现 MCP 工具并生成对应的 REST 端点。启动后,它会自动提供 OpenAPI 文档,通常位于 http://localhost:8000/docs。用户可以直接通过 HTTP 客户端调用这些端点,或者在 Open WebUI 中直接集成使用。
环境搭建
要体验 MCPo,建议先准备好基础环境。如果你本地部署了 Ollama,可以先拉取一个模型,例如:
ollama run gemma3
接下来安装 MCPo 服务。推荐使用 uvx 或 pip 进行部署。注意区分安装命令与启动命令:
# 安装依赖
pip install mcpo
# 启动服务(指定端口和密钥)
uvx mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_command
对于需要管理多个工具的复杂场景,可以通过配置文件来定义路由。例如同时启用内存服务和时间服务:
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
},
"time": {
"command": "uvx",
"args": ["mcp-server-time", "--local-timezone=America/New_York"]
}
}
}
启动时只需传入配置文件路径:
mcpo --config /path/to/config.json
最后,配合 Open WebUI 使用。你可以直接通过 pip 升级安装,或者从源码构建:
pip install -U open-webui
open-webui serve
实战示例
为了验证 MCPo 是否正常工作,我们可以编写一个简单的 Python 脚本调用 Fetch Server。这个例子展示了如何向 MCPo 发起 POST 请求并处理返回内容:
import requests
import json
def fetch_webpage(url, max_length=10000, start_index=0, raw=False):
"""使用 MCP Fetch server 获取网页内容。
Args:
url (str): 目标 URL
max_length (int): 最大返回字符数
start_index (int): 起始索引
raw (bool): 是否获取原始 HTML
Returns:
dict: 服务器响应内容
"""
try:
# 向 MCPo 生成的端点发送请求
response = requests.post(
"http://localhost:8000/fetch",
json={
"url": url,
"max_length": max_length,
"start_index": start_index,
"raw": raw
}
)
response.raise_for_status()
return response.json()
except Exception as e:
return {"error": str(e)}
if __name__ == "__main__":
target_url = "https://www.aivi.fyi/aiagents/RooCode-Gemini2.5Pro-OpenAIAgentsSDK"
result = fetch_webpage(target_url)
print(result)
这段代码会尝试抓取指定链接的内容。如果 MCPo 服务正常且 Fetch Server 已注册,你将看到解析后的数据。在实际开发中,记得根据实际需求调整 max_length 参数,避免一次性加载过大内容影响性能。
总结
MCPo 的出现填补了 MCP 协议与标准 Web 接口之间的空白。它不仅支持图像内容处理和灵活的跨域控制,还通过成熟的 FastAPI 框架保证了稳定性。对于希望快速构建本地 AI 应用或扩展现有工具链的开发者来说,这是一个值得尝试的中间件方案。

