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

相关推荐
带刺的坐椅1 天前
Solon v3.4.6, v3.5.4, v3.6.0-M1 发布。正式开始 LTS 计划
java·spring·ai·web·solon·mcp
守城小轩1 天前
从零开始学习n8n-一文读懂n8n
ai·n8n
Learn Beyond Limits1 天前
Choosing the Number of Clusters|选择聚类的个数
人工智能·深度学习·神经网络·机器学习·ai·聚类·吴恩达
科技峰行者1 天前
阿里云无影发布首个Agentic Computer形态的个人计算产品
人工智能·阿里云·ai·agent
Elastic 中国社区官方博客1 天前
使用 Elasticsearch 构建 AI Agentic 工作流
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Nukepayload22 天前
基于洞察的智能编程法——从直觉到代码的原型炼成术
ai·提示词工程
万俟淋曦2 天前
【ROS2】通讯机制 Topic 常用命令行
人工智能·ai·机器人·ros·topic·ros2·具身智能
CoderJia程序员甲2 天前
GitHub 热榜项目 - 日榜(2025-09-24)
ai·开源·大模型·github·ai教程
AiTop1002 天前
阿里云推出全球首个全模态AI模型Qwen3-Omni,实现文本、图像、音视频端到端处理
人工智能·阿里云·ai·aigc·音视频
CoderJia程序员甲2 天前
GitHub 热榜项目 - 日榜(2025-09-18)
ai·开源·大模型·github·ai教程