跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI

Open WebUI MCPo 项目解析:将 MCP 工具转换为 OpenAPI 接口

MCPo 是将 Model Context Protocol 工具转换为兼容 OpenAPI 的 HTTP 服务器的代理解决方案。它支持即时兼容性、安全性认证及自动生成 Swagger 文档,无需额外配置即可与大语言模型交互。文章介绍了 MCPo 的核心功能、工作原理及最新特性如图像内容支持和 CLI API 密钥认证。提供了基于 Ollama 和 Open WebUI 的安装步骤,以及使用 Python 调用 MCP Fetch server 的代码示例,帮助开发者快速集成 MCP 服务到标准化接口中。

邪神洛基发布于 2026/3/17更新于 2026/8/1744 浏览
Open WebUI MCPo 项目解析:将 MCP 工具转换为 OpenAPI 接口

Open WebUI 的 MCPo 项目:将 MCP 工具无缝集成到 OpenAPI 的创新解决方案

随着人工智能工具和模型的快速发展,如何高效、安全地将这些工具集成到标准化的 API 接口中成为了开发者面临的重要挑战。Open WebUI 的 MCPo 项目(Model Context Protocol-to-OpenAPI Proxy Server)正是为了解决这一问题而设计的。

什么是 MCPo?

MCPo 是一个简单、可靠的代理服务器,能够将任何基于 MCP 协议的工具转换为兼容 OpenAPI 的 HTTP 服务器。它通过标准化 RESTful API 接口,让复杂的工具变得易于使用,并支持与大语言模型(LLM)代理和应用程序的无缝交互。

核心功能

  • 即时兼容性:支持 OpenAPI 工具、SDK 和用户界面,无需额外配置。
  • 安全性与稳定性:采用标准化的 HTTPS 传输协议,支持 JWT 和 API 密钥认证。
  • 自动生成文档:无需手动配置,自动生成交互式 Swagger UI 文档。
  • 纯 HTTP 支持:无需额外的套接字或胶合代码,简化开发流程。

MCPo 的工作原理

MCPo 的核心在于其代理功能,它能够动态发现 MCP 工具并生成 REST API 端点,同时提供人性化的 OpenAPI 文档。以下是其典型工作流程:

  1. 自动生成 API 文档,访问地址为 http://localhost:8000/docs。
  2. 用户可以直接调用生成的 API 端点,通过 HTTP 客户端或其他工具进行交互。

启动 MCPo 服务器,例如:

uvx mcpo --port 8000 -- your_mcp_server_command

或通过 Python:

pip install mcpo
mcpo --port 8000 -- your_mcp_server_command

此外,MCPo 支持通过配置文件管理多个 MCP 工具,使不同工具可以通过唯一路由访问。例如:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    },
    "time": {
      "command": "uvx",
      "args": ["mcp-server-time", "--local-timezone=America/New_York"]
    }
  }
}

最新功能更新

根据项目最新发布的更新日志,MCPo 引入了以下新特性:

  • 图像内容支持:现在可以直接处理 MCP 工具生成的图像内容,并以二进制格式返回给用户,用于动态图表、AI 艺术等场景。
  • CLI API 密钥认证:通过 -api-key 参数轻松保护端点,适用于公共或多代理部署。
  • 灵活的跨域访问控制(CORS):新增 -cors-allow-origins 参数,为前端应用和远程 UI 集成提供支持,同时保持安全性。

为什么选择 MCPo?

相比原生 MCP 协议,MCPo 提供了显著优势:

  • 用户友好的接口:不需要学习新的协议,仅需熟悉 HTTP REST 接口即可操作。
  • 即插即用的集成能力:兼容数千种现有工具和服务。
  • 强大的文档支持:自动维护准确且易用的文档。
  • 安全与稳定性保障:基于成熟框架(如 FastAPI),确保高性能和长久支持。

安装 Ollama

Ollama

在 Ollama 中安装模型

ollama run gemma3

安装 MCPo

# 安装 mcpo
pip install mcpo

# 启动时间 mcp server
uvx mcpo --port 8000 --api-key "top-secret" -- uvx mcp-server-time --local-timezone=America/New_York

# 启动 fetch mcp server
uvx mcpo --port 8000 -- uvx mcp-server-fetch

# 查看文档
http://localhost:8000/docs
http://localhost:8000/openapi.json

# 使用配置文件启动
mcpo --config /path/to/config.json

配置文件示例:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    },
    "time": {
      "command": "uvx",
      "args": ["mcp-server-time", "--local-timezone=America/New_York"]
    }
  }
}

安装 Open WebUI

# pip 安装
pip install -U open-webui
open-webui serve

# 源代码安装
git clone -b v0.6.0 https://github.com/open-webui/open-webui.git
cd open-webui/
cp -RPp .env.example .env
npm i
npm run build
cd ./backend
pip install -r requirements.txt -U

# 启动
bash start.sh

测试通过 MCPO 调用 MCP Fetch server

import requests
import json

def fetch_webpage(url, max_length=10000, start_index=0, raw=False):
    """
    Fetch content from a URL using the MCP Fetch server.
    Args:
        url (str): The URL to fetch
        max_length (int): Maximum number of characters to return
        start_index (int): Start content from this character index
        raw (bool): Get raw HTML content without markdown conversion
    Returns:
        dict: The response from the server containing the fetched content
    """
    try:
        # Make a POST request to the fetch endpoint
        response = requests.post(
            "http://localhost:8000/fetch",
            json={
                "url": url,
                "max_length": max_length,
                "start_index": start_index,
                "raw": raw
            }
        )
        # Ensure the request was successful
        response.raise_for_status()
        # Parse the response
        return response.json()
    except Exception as e:
        return {"error": str(e)}

# Example usage
if __name__ == "__main__":
    # Fetch the specific URL you requested
    target_url = "https://www.aivi.fyi/aiagents/RooCode-Gemini2.5Pro-OpenAIAgentsSDK"
    result = fetch_webpage(target_url)
    print(result)

社区反馈与未来发展

MCPo 项目已在 GitHub 和 Reddit 社区中引发广泛讨论。开发者对其易用性和强大的功能表示认可,同时也提出了改进建议,例如增加 SSL 支持和更灵活的配置选项。

随着人工智能工具需求的增长,MCPo 有望成为连接 AI 工具与标准化接口的重要桥梁,为开发者提供更高效、更安全的解决方案。

目录

  1. Open WebUI 的 MCPo 项目:将 MCP 工具无缝集成到 OpenAPI 的创新解决方案
  2. 什么是 MCPo?
  3. 核心功能
  4. MCPo 的工作原理
  5. 最新功能更新
  6. 为什么选择 MCPo?
  7. 安装 Ollama
  8. 在 Ollama 中安装模型
  9. 安装 MCPo
  10. 安装 mcpo
  11. 启动时间 mcp server
  12. 启动 fetch mcp server
  13. 查看文档
  14. 使用配置文件启动
  15. 安装 Open WebUI
  16. pip 安装
  17. 源代码安装
  18. 启动
  19. 测试通过 MCPO 调用 MCP Fetch server
  20. Example usage
  21. 社区反馈与未来发展
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 云原生发展趋势及 Kubernetes 核心面试题汇总
  • 力扣 Hot 100 普通数组题解 Python 版
  • AI 写作避坑指南:Qwen3-4B-Instruct 部署与优化
  • 6款免费AI写作软件测评:AI写网文工具对比与去重技巧
  • AI 大模型通信机制:流式传输与数据封装逻辑详解
  • 前端文件上传进阶:告别原生 input 的局限
  • 前端微前端架构实践:告别巨石应用
  • Self-Instruct:基于 LLM 的指令数据集自动生成策略
  • Spring Boot 4.0 虚拟线程时代:WebFlux 与 WebMVC 选型指南
  • 基于 ESP32-S3 芯片的 Wi-Fi 智能机器人系统设计
  • Flutter BIP340 适配鸿蒙 HarmonyOS 实战:Schnorr 签名应用
  • Python 操作符 == 与 is 的深度解析与使用场景
  • 2026 年 3 月中旬 AI 产业动态:算力、智能体与生态
  • Flutter eip55 库在鸿蒙系统的以太坊地址校验适配指南
  • 基于 Web-Check 与内网穿透的远程网站安全检测方案
  • C++ 红黑树实现详解:规则、结构与核心操作
  • Python 调用 Ollama 本地大模型 API 完全指南
  • AI 绘画报错:模型文件缺失与配置修复
  • 机器人力位混合控制算法:原理与实战解析
  • C++ 继承中同名成员的隐藏规则解析

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online