NLP(一百一十九)在Open_WebUI中玩转MCP!从入门到实战全指南

本文将会介绍如何在Open WebUI中使用MCP.

前言

在文章NLP(一百零三)大模型应用利器之Open WebUI入门中,笔者介绍了大模型应用利器Open WebUI的基本信息,及其重要特性,包括单/多模型回复、文档问答、Web Search问答、Function Calling、多模态问答等。

最新版本的Open WebUI已支持MCP,本文将予以详细介绍。

Open WebUI开放了mcpo代理服务器(全称为MCP-to-OpenAPI proxy server),该协议允许你通过标准的 REST/OpenAPI 接口,直接使用基于 MCP(Model Context Protocol,模型上下文协议)实现的工具服务器——无需处理陌生或复杂的自定义协议。

如果你是终端用户或应用开发者,这意味着你可以通过熟悉的 REST 风格接口,轻松地与强大的 MCP 工具进行交互。

下面将介绍如何通过mcpoOpen WebUI中使用MCP.

官方示例

在本地安装uv工具,运行mcp-server-time(网址为: https://github.com/modelcontextprotocol/servers/blob/main/src/time/README.md),该MCP Server可获取现在时间和提供时区转换能力,启动命令及输出如下:

1
2
3
4
5
6
$ uvx mcpo --port 8000 -- uvx mcp-server-time --local-timezone=America/New_York
Starting MCP OpenAPI Proxy on 0.0.0.0:8000 with command: uvx mcp-server-time --local-timezone=America/New_York
INFO: Started server process [5752]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

接下来,需要在Open WebUI配置工具(Tools),安装及启动命令如下:

1
2
$ pip3 install open-webui==0.6.5
$ open-webui serve --port 8090

在浏览器中输入http://localhost:8090并注册账号。在Settings -> Tools中进行配置,如下图:

在配置好大模型(选择gpt-4o模型)后,在聊天框中会出现工具图标,点击该图标,显示如下:

这表明我们基于MCP的工具服务已连接成功。

Open WebUI进行对话,如下:

从上述的对话中可以看到,大模型调用了基于MCP的gut_current_time工具,并给出了正确回复。

项目实战

在文章NLP(一百一十七)使用Openai Agents SDK构建MCP中,笔者在官方SSE例子章节使用openai-agents官网的SSE例子,这里修改如下(文件名为openai_agents_local_mcp_server.py):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import random

import requests
from mcp.server.fastmcp import FastMCP

# Create server
mcp = FastMCP("Echo Server")


@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
print(f"[debug-server] add({a}, {b})")
return str(a + b)


@mcp.tool()
def get_secret_word() -> str:
print("[debug-server] get_secret_word()")
return random.choice(["apple", "banana", "cherry"])


@mcp.tool()
def get_current_weather(city: str) -> str:
print(f"[debug-server] get_current_weather({city})")

endpoint = "https://wttr.in"
response = requests.get(f"{endpoint}/{city}")
return response.text


if __name__ == "__main__":
mcp.run(transport="stdio")

注意,最后一行的transport参数有sse改为stdio. 运行命令及输出如下:

1
2
3
4
5
6
7
8
$ uvx mcpo --port 8000 -- uv run openai_agents_local_mcp_server.py             
Starting MCP OpenAPI Proxy on 0.0.0.0:8000 with command: uv run openai_agents_local_mcp_server.py
INFO: Started server process [10196]
INFO: Waiting for application startup.
[04/21/25 22:06:03] INFO Processing request of type server.py:534
ListToolsRequest
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

Open WebUI中的工具配置使用上述同样的配置,不做修改,只需重新加载即可。

此时,在Chat页面聊天,回复如下:

从上面的回复可知,我们自己部署的MCP服务,通过mcpo代理服务器,能够在Open WebUI成功使用!

总结

通过本文,我们了解了如何在 Open WebUI 中使用 MCP(Model Context Protocol)协议,借助官方提供的 mcpo 代理,将本地的 MCP 工具服务以 REST/OpenAPI 接口的形式无缝接入大模型对话界面。这种方式极大简化了自定义工具的接入流程,让终端用户和开发者可以像调用 API 一样便捷地扩展大模型能力。

我们从官方的时间服务示例入手,演示了如何安装、配置并通过 Open WebUI 成功调用 MCP 工具。随后,基于 openai-agents 提供的示例,构建了一个包含多个功能(如加法、获取天气、获取随机单词)的本地 MCP 工具服务,验证了定制工具与大模型的对接效果。

参考网站

  1. MCP Support: https://docs.openwebui.com/openapi-servers/mcp/
  2. Time MCP Server: https://github.com/modelcontextprotocol/servers/blob/main/src/time/README.md
  3. NLP(一百零三)大模型应用利器之Open WebUI入门: https://mp.weixin.qq.com/s/jfIT3VdIifTmOiSNbSZd-Q
  4. NLP(一百一十七)使用Openai Agents SDK构建MCP: https://mp.weixin.qq.com/s/TjPiBl9JeOWdfNLV3jQ8Eg

欢迎关注我的公众号NLP奇幻之旅,原创技术文章第一时间推送。

欢迎关注我的知识星球“自然语言处理奇幻之旅”,笔者正在努力构建自己的技术社区。


NLP(一百一十九)在Open_WebUI中玩转MCP!从入门到实战全指南
https://percent4.github.io/NLP(一百一十九)在Open-WebUI中玩转MCP!从入门到实战全指南/
作者
Jclian91
发布于
2025年4月27日
许可协议