借助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生态中的各种工具。

相关推荐
zhz521411 小时前
Zapier MCP:重塑跨应用自动化协作的技术实践
运维·人工智能·ai·自动化·ai编程·ai agent·智能体
在线打码12 小时前
Dify + Stable Diffusion实现文生图工作流【两种方式】
ai·ai作画·stable diffusion·aigc·dify
曲幽13 小时前
Python本地部署Stable Diffusion实现在纯CPU环境下的实现
python·ai·stable diffusion·cpu·openvino·lcm
xcLeigh1 天前
计算机视觉图像处理基础系列:滤波、边缘检测与形态学操作
图像处理·人工智能·计算机视觉·ai
weixin_457885821 天前
虎跃办公AI赋能的实时协同开发范式与神经符号系统突破
人工智能·搜索引擎·ai·deepseek
終不似少年遊*1 天前
操作系统、虚拟化技术与云原生及云原生AI简述
docker·ai·云原生·容器·华为云·云计算·k8s
带你去吃小豆花1 天前
在亚马逊云科技上使用n8n快速构建个人AI NEWS助理
人工智能·科技·ai·云原生·aws
顽疲2 天前
从零用java实现 小红书 springboot vue uniapp (11)集成AI聊天机器人
java·vue.js·spring boot·ai
XINVRY-FPGA2 天前
Xilinx FPGA XCVC1902-2MSEVSVA2197 Versal AI Core系列芯片的详细介绍
人工智能·嵌入式硬件·5g·ai·fpga开发·云计算·fpga