事先吐槽并叠甲
本人也是个小白菜逼,下面分享的是昨天一晚上倒腾出来的经验分享,有很大的时效性限制(说不定openwebui官方就更新了),另外可能有些疏漏,另外这个经验分享极度话痨,请多担待。然后我先说一个暴论:这次v0.6.0更新的mcp是个半成品,官方的推荐方式极其不适合小白
MCP的基本概念
这方面L站的很多大佬都有过科普了,下面列举几个,我就不赘述了
- 探索MCP-我的学习与实践笔记 - 开发调优 - LINUX DO
- 面向新手的MCP使用教程:在Cherry Studio中配置和使用模型上下文协议 - 文档共建 - LINUX DO
- vscode+cline 配置自己的MCP-Server - 开发调优 - LINUX DO
MCP市场推荐
我个人使用的是这2个
言归正传
这次更新我个人最关心的就是mcp功能的官方支持
毕竟大家可能都在cursor,claude desktop,cline等上面用过了,肯定也想在openwebui上面用,首先是要跑起来一个最基础的demo
可以参考官方的
1.
2.open-webui/mcpo: A simple, secure MCP-to-OpenAPI proxy server
搭建方式有3种
- 使用uvx跑
- 使用python跑
- 使用docker跑
这里我要吐槽的第一点就是官方推荐使用
uvx mcpo --port 8000 -- uvx mcp-server-time --local-timezone=America/New_York
这个方式暴露MCP服务器,可是对于我这种使用1penel面板的小白来说面临2个问题,一个是安装uv和mcpo面临的是否需要额外的anaconda虚拟环境的问题(我懒的配),还有一点是这种方式不方便管理,时间长了谁记得到开放了啥端口,还得去用Linux命令查,小白哪记得住,每次都得翻手册命令,我嫌麻烦,我目前推荐 docker跑,主要是1panel面板看得到任务状态,能看任务日志,以及能清晰的看到暴露的端口,比前2种方法适合小白。
docker 跑的demo可以参看刚才说的
MCP 支持 | 开放 WebUI —
MCP Support | Open WebUI这里的 Dockerize your Proxy Server using mcpo 章节构建容器并开跑。
20250405 更新
如果真要玩这个,推荐使用 @zgccrui 大佬的 cr-zhichen/mcpo-proxy 仓库来配置 MCPO Proxy 代理服务,拉取下来后只需要修改config.json即可完成一键部署
多mcp服务器怎么编写Dockerfile
可以参考我目前的思路
Dockerfile:
FROM python:3.11-slim
WORKDIR /app
# ---------------------------
# 1) 安装必要的系统依赖 + Node.js (自带 npx)
# ---------------------------
RUN apt-get update && \
apt-get install -y curl unzip && \
curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
apt-get install -y nodejs && \
apt-get clean
# ---------------------------
# 2) 安装 bun (bunx)
# ---------------------------
RUN curl -fsSL https://bun.sh/install | bash
# bun 默认安装到 /root/.bun
ENV BUN_INSTALL="/root/.bun"
ENV PATH="${BUN_INSTALL}/bin:${PATH}"
# ---------------------------
# 3) 安装 Python 依赖
# ---------------------------
RUN pip install --no-cache-dir mcpo uv
# ---------------------------
# 4) 拷贝 config.json 到容器中
# ---------------------------
COPY config.json /app/config.json
# ---------------------------
# 5) 启动 mcpo,加载该 config.json
# ---------------------------
CMD ["mcpo", "--config", "/app/config.json"]
也就是把多个mcp写到一个config.json里面,docker一起跑,这样就可以在只开启一个docker服务的前提下跑多个mcp了,这个 config.json 的写法基本上每个mcp服务器都有,各位就按需写就OK
怎么应用到openwebui
这是我觉得openwebui这次更新最傻逼的地方,首先是高贵的官方手册完全没说搭完以后怎么使用,我被他的【 Future-Proof : MCP proxy uses existing, stable, standard REST/OpenAPI formats guaranteed long-term community support and evolution.】这句话误导了好久,我还以为是添加外部连接模型,搞了好久都没出来,后面才发现是 点击左下角的头像,点设置,点工具,添加工具服务器,
20250417 更新
感谢 @xixia 大佬的评论指引,现在openwebui 已经更新文档了https://docs.openwebui.com/openapi-servers/open-webui ,可以参照这个搭建
然后是第二个坑,在你的openwebui配置了反代时不能用http://filesystem-server:8000这种docker内部网络连接,因为…
这个有多整人我给大家演示一下,首先是我使用我https的反代网址想添加这个 http://filesystem-server:8000
所以咋解决呢?问题的根源是
也就是说当你使用反代的https网址时,http的本地网址就用不了了,因为工具服务器直接从浏览器发出请求,而不是从后端发出,所以要么给这个docker也设置个反代,要么就直接使用 http://你的服务器地址:openwebui端口 + http://你的服务器地址:docker端口 这种才能正常访问。
怎么填写这里的工具服务器网址
单个mcp的可以直接写,但是如果各位是按照前面我说的写在config.json的话,就要写分支了,比如现在你的docker任务的反代网址是 https://mcp.server.com ,然后config.json里面有3个mcp服务
{
"mcpServers": {
"server_1": {
...
},
"server_2": {
...
},
"server_3": {
...
}
}
}
那么这里的管理工具服务器就可以添加3个网址,分别是
https://mcp.server.com/server_1
https://mcp.server.com/server_2
https://mcp.server.com/server_3
这样就可以正常连接了,成功应该只弹绿框
当你看到右下角有个这个标志的时候就说明可以正常使用了
为啥说他是个半成品
原因很简单,有些mcp服务器用不了,比如说我使用了 mcp-server-time 这个是能正常工作的,但是 Firecrawl MCP Server 这个就不行,同样的配置,cherry studio 又是正常的,各位可以尝试不同的mcp服务的效果
总结
现阶段不是很建议用openwebui跑mcp,体验不好不说,官方的引导做的还差。(不说了睡觉去了,通宵都在整这个遭不住了)










