借助mcpo在open-webui中使用mcp

open-webui前几天发布了0.6版本,我立即进行了升级。新版本中一个重要功能是通过mcpo方式支持了mcp server。本文将介绍mcpo是什么,以及如何在open-webui中使用它。同时,我也会分享几个在接入过程中遇到的问题及解决方案。

首先来介绍mcpo,这是open-webui最新开源的项目。它能将任何MCP工具转换为OpenAPI兼容的HTTP服务器。作为open-webui的子项目,mcpo成功打通了当前火热的mcp生态,让open-webui能够使用各种现有的mcp server。接下来,让我们看看具体使用方法。

安装

使用也很简单,有两种方式,一种是直接通过uvx启动,另外一种是使用pip安装mcpo的命令行工具,然后直接启动。

先说第一种方法,也是官方推荐的方法,直接通过下面的命令就可以将指定的mcp服务在8000端口启动起来。这种方式的好处是不需要额外安装其他工具,直接通过uvx就可以完成启动。

bash 复制代码
uvx mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_command

接下来看看第二种启动方式,先安装mcpo命令行工具,然后直接用命令行工具启动:

bash 复制代码
pip install mcpo
mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_command

两种启动方式参数都是一样的,需要注意的是,这里的api-key参数不是必须的,它用于后续open-webui访问mcpo服务时的认证,这里推荐填写,防止其他人未经授权访问服务。当然如果是在内网环境,也可以不设置api-key。 另外一个your_mcp_server_command是指mcp具体的指令,我们拿一个mcp官方时间转换的工具为例,其启动配置如下:

bash 复制代码
uvx mcpo --port 8000 --api-key "top-secret" -- uvx mcp-server-time --local-timezone=Asia/Shanghai

最后提醒下大家,不管使用哪种方式,uvx都是必须要安装的,因为大量的mcp server都是使用uvx启动的,不安装uvx就无法使用大部分mcp server。

配置

当需要启动多个mcp服务时,使用命令行拼接参数的方式比较繁琐且容易出错。好在mcpo支持使用配置文件来启动多个服务。你可以将所有配置信息集中在一个json文件中(使用通用mcp json格式),这样更清晰也更容易管理。让我们来看看如何使用配置文件来启动mcpo服务。

启动方式很简单,只需要通过---config参数指定json文件路径即可,这里我拿我服务上的配置为例,首先我服务器上安装了两个mcp server,分别是抓取网页的fetch和时间转换的time,具体配置如下:

bash 复制代码
{
	"mcpServers": {
		"fetch": {
			"command": "uvx",
			"args": ["mcp-server-fetch"]
		},
		"time": {
			"command": "uvx",
			"args": ["mcp-server-time", "--local-timezone=Asia/Shanghai"]
		}
	}
}

这部分内容被我放在~/.mcp/config.json下,所以整体的启动命令就是:

bash 复制代码
 uvx mcpo --port 8000 --api-key "top-secret" --config .mcp/config.json 

如需添加新的 mcp server,只需修改上述 json 文件并重启 mcpo。这个 mcp.json 是一个通用格式,可以在所有支持 mcp 的软件中使用,但请注意区分 Windows 和非 Windows 环境的配置差异。

使用

mcpo启动后,可以直接访问8000端口来测试是否启动成功,不同的mcp服务有不同的path,这里我拿time为例, 访问http://localhost:8000/time 如果看到如下界面,说明mcpo是正常工作的。

在这个页面中,可以看到这个mcp server提供了两个方法,这里也可以对其做简单测试。

由于我们使用mcpo的目的是在open-webui中使用,因此只需要在open-webui的settings/tools中配置http://localhost:8000/time(请根据实际情况更换域名和端口)即可。密码部分需要填写启动服务时指定的api-key。

配置成功后我们就可以对话窗口看到这两个工具。

我们来测试下这两个工具好不好用。

踩坑

遇到了几个坑,也和大家分享下,大家提前规避。

  1. open-webui的bug,请求工具时没有将api-key带过去,所以导致401。 所以这里暂时mcpo不能设置api-key,只能通过无key的方式在open-webui中使用。不过官方也早已发现了这个bug,承诺会在0.6.1版本中修复。 https://github.com/open-webui/open-webui/issues/12379
  2. 工具调用是端侧发起,所以要求接口请求支持cors,其实mcpo本身是支持的,但我开始没调通,发现是因为open-webui页面用的是https,而mcpo我随便开了个http接口,这导致浏览器出于安全考虑阻止了请求。解决方案也很简单,将mcpo服务配置成https,完美解决了这个问题。

结语

总的来说,mcpo提供了一种简单方便的方式来将mcp工具转换为OpenAPI兼容的HTTP服务器,让其融入open-webui中使用。虽然目前还存在一些小问题,但这些都不影响其在open-webui中的使用。随着open-webui的持续更新和完善,相信这些问题很快就会得到解决,让我们能够更好地利用mcp生态中的各种工具。

相关推荐
Johny_Zhao1 小时前
华为MAAS、阿里云PAI、亚马逊AWS SageMaker、微软Azure ML各大模型深度分析对比
linux·人工智能·ai·信息安全·云计算·系统运维
武子康1 小时前
大数据-277 Spark MLib - 基础介绍 机器学习算法 Gradient Boosting GBDT算法原理 高效实现
大数据·人工智能·算法·机器学习·ai·spark-ml·boosting
陈阿土i11 小时前
SpringAI 1.0.0 正式版——利用Redis存储会话(ChatMemory)
java·redis·ai·springai
Baihai IDP11 小时前
“一代更比一代强”:现代 RAG 架构的演进之路
ai·llm·rag·genai·白海科技·检索增强生成
豌豆花下猫13 小时前
Python 潮流周刊#105:Dify突破10万星、2025全栈开发的最佳实践
后端·python·ai
阿部多瑞 ABU16 小时前
# 从底层架构到应用实践:为何部分大模型在越狱攻击下失守?
gpt·安全·ai·自然语言处理
市象17 小时前
联想困局,破于AI?
人工智能·ai·联想
阿部多瑞 ABU20 小时前
大模型安全测试报告:千问、GPT 全系列、豆包、Claude 表现优异,DeepSeek、Grok-3 与 Kimi 存在安全隐患
gpt·安全·ai
Juicedata1 天前
JuiceFS v1.3-Beta2:集成 Apache Ranger,实现更精细化的权限控制
运维·人工智能·ai
FrankHuang8882 天前
使用高斯朴素贝叶斯算法对鸢尾花数据集进行分类
算法·机器学习·ai·分类