mcpo
mcpo 是一款轻量级代理服务器,旨在将基于模型上下文协议(MCP)的工具瞬间转换为标准的 OpenAPI HTTP 服务。它主要解决了原生 MCP 服务通常依赖不安全的标准输入输出(stdio)通信、缺乏文档与身份验证机制、且难以被主流应用直接集成的痛点。通过 mcpo,开发者无需编写任何胶水代码或自定义协议,即可让 AI 工具具备 RESTful 接口,自动生成交互式 API 文档,并支持 API 密钥认证,从而显著提升安全性与互操作性。
这款工具特别适合 AI 应用开发者、后端工程师以及希望将本地 MCP 工具快速接入大语言模型代理或 Web 界面的技术人员。其技术亮点在于“零配置”启动,支持多种后端类型(包括命令行、SSE 及 Streamable HTTP),并提供热重载功能,允许通过单一配置文件同时管理多个 MCP 服务。无论是通过 Python、uv 快速运行,还是利用 Docker 部署,mcpo 都能以纯 HTTP 方式打通工具链,让 AI 能力更稳定、安全地融入现有开发生态。
使用场景
某 AI 初创团队正在构建一个智能客服系统,需要让大模型代理(Agent)实时调用内部的时间查询和记忆存储工具来回答用户问题。
没有 mcpo 时
- 协议隔离严重:内部的 MCP 工具仅支持原始 stdio 通信,主流 Agent 框架和 API 网关无法直接识别,团队被迫编写大量复杂的“胶水代码”进行协议转换。
- 安全隐患突出:直接暴露 stdio 接口缺乏标准的身份验证机制,任何能访问进程的用户均可随意调用工具,极易造成数据泄露。
- 文档维护困难:每次更新工具参数都需要手动编写和同步 API 文档,开发效率低下且容易出现文档与实际代码不一致的情况。
- 集成测试繁琐:由于缺少标准的 HTTP 接口,测试人员无法使用 Postman 或 Swagger UI 等通用工具进行快速调试和自动化测试。
使用 mcpo 后
- 即插即用集成:mcpo 一键将 MCP 命令转换为标准的 OpenAPI HTTP 服务,Agent 无需修改任何逻辑即可通过 RESTful 接口直接调用时间查询和记忆工具。
- 企业级安全防护:通过
--api-key参数轻松添加密钥认证,利用成熟的 Web 标准保障了工具调用的安全性,杜绝未授权访问。 - 文档自动生成:启动服务后,mcpo 自动在
/docs路径生成可交互的 Swagger 界面,开发人员可实时查看参数定义并在线测试,零配置成本。 - 生态无缝兼容:纯 HTTP 架构使得现有监控、日志和负载均衡中间件可直接复用,大幅降低了运维复杂度和系统扩展门槛。
mcpo 通过消除协议壁垒,让原本孤立的 MCP 工具瞬间变为安全、标准且易于集成的 Web 服务,极大加速了 AI 应用的落地进程。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
⚡️ mcpo
将任何 MCP 工具暴露为兼容 OpenAPI 的 HTTP 服务器——即时完成。
mcpo 是一个极其简单的代理,它接收 MCP 服务器命令,并通过标准的 RESTful OpenAPI 将其公开,从而使您的工具能够与期望 OpenAPI 服务器的 LLM 代理和应用程序无缝协作。
无需自定义协议,无需胶水代码,零 hassle。
🤔 为什么使用 mcpo 而不是原生 MCP?
MCP 服务器通常通过原始的 stdio 进行通信,这种方式:
- 🔓 天然不安全
- ❌ 与大多数工具不兼容
- 🧩 缺乏文档、认证、错误处理等标准功能
mcpo 能够轻松解决这些问题,且无需额外工作:
- ✅ 可立即与 OpenAPI 工具、SDK 和 UI 配合使用
- 🛡 使用成熟的 Web 标准增强安全性、稳定性和可扩展性
- 🧠 自动为每个工具生成交互式文档,无需任何配置
- 🔌 完全基于 HTTP——无需套接字、无需胶水代码、没有任何意外
看似多了一步的操作,实际上却减少了步骤并带来了更好的结果。
mcpo 让您的 AI 工具即刻变得可用、安全且具备互操作性——现在就行动吧,完全无需麻烦。
🚀 快速使用
我们推荐使用 uv,以实现闪电般的启动速度和零配置。
uvx mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_command
或者,如果您使用的是 Python:
pip install mcpo
mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_command
要使用 SSE 兼容的 MCP 服务器,只需指定服务器类型和端点:
mcpo --port 8000 --api-key "top-secret" --server-type "sse" -- http://127.0.0.1:8001/sse
您还可以为 SSE 连接提供头部信息:
mcpo --port 8000 --api-key "top-secret" --server-type "sse" --header '{"Authorization": "Bearer token", "X-Custom-Header": "value"}' -- http://127.0.0.1:8001/sse
要使用支持流式传输的 HTTP 兼容 MCP 服务器,指定服务器类型和端点:
mcpo --port 8000 --api-key "top-secret" --server-type "streamable-http" -- http://127.0.0.1:8002/mcp
您也可以通过 Docker 运行 mcpo,无需安装:
docker run -p 8000:8000 ghcr.io/open-webui/mcpo:main --api-key "top-secret" -- your_mcp_server_command
示例:
uvx mcpo --port 8000 --api-key "top-secret" -- uvx mcp-server-time --local-timezone=America/New_York
就是这样。您的 MCP 工具现在可通过 http://localhost:8000 访问,并附带自动生成的 OpenAPI 模式——您可以在 http://localhost:8000/docs 上实时测试。
🤝 要在启动服务器后与 Open WebUI 集成,请查看我们的[文档](https://docs.openwebui.com/openapi-servers/open-webui/)。
🌐 在子路径下提供服务(--root-path)
如果您需要在反向代理后或在子路径下(例如 /api/mcpo)提供 mcpo 服务,请使用 --root-path 参数:
mcpo --port 8000 --root-path "/api/mcpo" --api-key "top-secret" -- your_mcp_server_command
所有路由都将在此指定的根路径下提供服务,例如 http://localhost:8000/api/mcpo/memory。
🔄 使用配置文件
您可以使用遵循 Claude Desktop 格式的单个配置文件来提供多个 MCP 工具的服务。
启用热重载模式 --hot-reload,以自动监视您的配置文件更改并在不停机的情况下重新加载服务器:
通过以下方式启动:
mcpo --config /path/to/config.json
或启用热重载:
mcpo --config /path/to/config.json --hot-reload
示例 config.json:
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
},
"time": {
"command": "uvx",
"args": ["mcp-server-time", "--local-timezone=America/New_York"],
"disabledTools": ["convert_time"] // 如需可禁用特定工具
},
"mcp_sse": {
"type": "sse", // 显式定义类型
"url": "http://127.0.0.1:8001/sse",
"headers": {
"Authorization": "Bearer token",
"X-Custom-Header": "value"
}
},
"mcp_streamable_http": {
"type": "streamable-http",
"url": "http://127.0.0.1:8002/mcp"
} // 支持流式传输的 HTTP MCP 服务器
}
}
每个工具都将通过其独特的路由访问,例如:
每个工具都配有独立的 OpenAPI 模式和代理处理器。完整的模式 UI 可通过:http://localhost:8000/<tool>/docs 访问(例如 /memory/docs、/time/docs)。
🔐 OAuth 2.1 认证
mcpo 支持需要 OAuth 2.1 认证的 MCP 服务器。实现默认采用 动态客户端注册,因此大多数服务器只需进行最少的配置:
{
"mcpServers": {
"oauth-protected-server": {
"type": "streamable-http",
"url": "http://localhost:8000/mcp",
"oauth": {
"server_url": "http://localhost:8000"
}
}
}
}
OAuth 配置选项
基本选项:
server_url(必填):OAuth 服务器基础 URLstorage_type:“file”(持久存储)或“memory”(仅会话,默认为“file”)callback_port:用于 OAuth 回调的本地端口(默认为 3030)use_loopback:自动打开浏览器进行认证(默认为 true)
高级选项(很少需要): 对于不支持动态客户端注册的服务器,您可以指定静态的客户端元数据:
{
"mcpServers": {
"legacy-oauth-server": {
"type": "streamable-http",
"url": "http://api.example.com/mcp",
"oauth": {
"server_url": "http://api.example.com",
"client_metadata": {
"client_name": "My MCPO Client",
"redirect_uris": ["http://localhost:3030/callback"]
}
}
}
}
}
注意:请勿在配置中设置
scope、authorization_endpoint或token_endpoint。这些将在动态注册过程中从服务器的 OAuth 元数据中自动发现。
首次连接时,mcpo 将执行以下操作:
- 执行动态客户端注册(如果支持)
- 打开您的浏览器进行授权
- 自动捕获 OAuth 回调
- 安全存储令牌(对于文件存储,存储在
~/.mcpo/tokens/中) - 在后续的所有请求中使用这些令牌
OAuth 支持 streamable-http 类型的服务器。有关详细信息,请参阅 OAUTH_GUIDE.md 文档。
🔧 要求
- Python 3.8+
- uv(可选,但强烈推荐,以获得更好的性能和打包体验)
🛠️ 开发与测试
如需贡献代码或在本地运行测试:
设置开发环境:
# 克隆仓库 git clone https://github.com/open-webui/mcpo.git cd mcpo # 安装依赖(包括开发依赖) uv sync --dev运行测试:
uv run pytest使用本地修改内容本地运行:
若要使用特定分支(例如
my-feature-branch)中的本地修改来运行mcpo,请执行以下步骤:# 确保当前位于您的开发分支 git checkout my-feature-branch # 在 `src/mcpo` 目录或其他位置进行代码修改 # 使用 `uv` 运行 `mcpo`,它将使用您本地修改后的代码 # 此命令会在端口 8000 上启动 `mcpo`,并代理您的 `mcp_server_command` uv run mcpo --port 8000 -- your_mcp_server_command # 示例:使用一个测试的 MCP 服务器(如 `mcp-server-time`): # uv run mcpo --port 8000 -- uvx mcp-server-time --local-timezone=America/New_York这样您就可以在提交代码或创建拉取请求之前,交互式地测试您的更改。您可以通过
http://localhost:8000访问本地运行的mcpo实例,并通过http://localhost:8000/docs查看自动生成的文档。
🪪 许可证
MIT
🤝 贡献指南
我们欢迎并强烈鼓励社区贡献!
无论您是修复 bug、添加新功能、改进文档,还是仅仅分享想法——您的参与都极其宝贵,有助于让 mcpo 更加完善,惠及所有人。
开始贡献非常简单:
- 克隆仓库并创建分支
- 进行代码修改
- 提交拉取请求
如果您不确定从哪里入手,也可以随时开一个议题或提问,我们会很乐意帮助您找到适合的入门任务。
✨ 星标历史
✨ 让我们一起构建可互操作的人工智能工具生态吧!
版本历史
v0.0.92025/04/07v0.0.82025/04/03v0.0.72025/04/03v0.0.62025/04/03v0.0.202026/02/27v0.0.192025/10/14v0.0.102025/04/10v0.0.182025/10/14v0.0.172025/07/31v0.0.162025/07/02v0.0.152025/06/06v0.0.142025/05/11v0.0.132025/05/01v0.0.122025/04/14v0.0.112025/04/12常见问题
相似工具推荐
n8n
n8n 是一款面向技术团队的公平代码(fair-code)工作流自动化平台,旨在让用户在享受低代码快速构建便利的同时,保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点,帮助用户轻松连接 400 多种应用与服务,实现复杂业务流程的自动化。 n8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”:既可以通过直观的可视化界面拖拽节点搭建流程,也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外,n8n 原生集成了基于 LangChain 的 AI 能力,支持用户利用自有数据和模型构建智能体工作流。在部署方面,n8n 提供极高的自由度,支持完全自托管以保障数据隐私和控制权,也提供云端服务选项。凭借活跃的社区生态和数百个现成模板,n8n 让构建强大且可控的自动化系统变得简单高效。
AutoGPT
AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台,核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点,让用户只需设定目标,AI 即可自主规划步骤、调用工具并持续运行直至完成任务。 无论是开发者、研究人员,还是希望提升工作效率的普通用户,都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体;研究人员能基于开源架构探索多智能体协作机制;而非技术背景用户也可直接选用预置的智能体模板,立即投入实际工作场景。 AutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑,每个块负责单一动作,灵活且易于调试。同时,平台支持本地自托管与云端部署两种模式,兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本,即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛,让人人都能成为 AI 的创造者与受益者。
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。