[特殊字符]颠覆MCP!Open WebUI新技术mcpo横空出世!支持ollama!轻松支持各种MCP Server!Cline+Claude3.7轻松开发论文检索MCP Server!

[特殊字符]颠覆MCP!Open WebUI新技术mcpo横空出世!支持ollama!轻松支持各种MCP Server!Cline+Claude3.7轻松开发论文检索MCP Server!

🔥🔥🔥本篇笔记所对应的视频:🚀颠覆MCP!Open WebUI新技术mcpo横空出世!支持ollama!轻松支持各种MCP Server!Cline+Claude3.7轻松开发MCP服务_哔哩哔哩_bilibili

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

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


什么是 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 服务器,例如: 或通过 Python:

uvx mcpo --port 8000 -- your_mcp_server_command 
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),确保高性能和长久支持。

社区反馈与未来发展

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

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


🚀安装ollama

Ollama

🚀在ollama中安装模型

ollama run gemma3 

🚀安装mcpo

# 安装mcpo pip install mcpo mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_command # 启动时间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) 

Read more

机器人算法十年演进

机器人算法十年演进(2015-2025):从模型驱动的几何计算到具身智能的认知决策范式革命 2015-2025年,机器人算法完成了从「几何与物理模型驱动的专用任务执行」到「数据与大模型驱动的通用具身智能决策」的根本性范式跃迁。作为机器人系统的“大脑与神经中枢”,机器人算法是覆盖感知理解、定位建图、规划控制、标定补偿、决策学习五大核心板块的完整技术体系,直接决定了机器人的环境适应性、作业精度、自主决策能力与智能化水平,是连接硬件本体与场景应用的核心桥梁。 这十年,机器人算法的演进始终与机器人产业从「单机工业自动化→柔性场景规模化→通用具身智能化」的发展节奏完全同频,与硬件本体、软件架构、平台化技术的迭代深度耦合,完整见证了机器人从“只能在静态产线执行固定程序”到“可在全场景自主完成复杂任务”的能力跨越,同时实现了中国机器人算法从完全技术跟随、海外垄断,到全栈自主可控、部分领域全球领跑的产业格局巨变。 本文与此前机器人系统、软件架构、规控、感知、定位等系列内容形成完整闭环,聚焦算法的范式迭代、工程化落地、能力边界与产业价值,完整还原机器人算法十年间的四次代际跃迁。 一、核心演进四

By Ne0inhk
动态规划 —— 子数组系列-乘积为正数的最长子数组长度

动态规划 —— 子数组系列-乘积为正数的最长子数组长度

江河入海,知识涌动,这是我参与江海计划的第4篇。 1. 乘积为正数的最长子数组长度 题目链接: 1567. 乘积为正数的最长子数组长度 - 力扣(LeetCode)https://leetcode.cn/problems/maximum-length-of-subarray-with-positive-product/description/ 2. 算法原理 状态表示:以某一个位置为结尾或者以某一个位置为起点    f[i]表示:以i位置为结尾的所有子树中的乘积为正数的最长长度    g[i]表示:以i位置为结尾的所有子树中的乘积为负数的最长长度 2. 状态转移方程    f[i](正数)分为两种情况:求正数的最长长度     1. 长度为1分为两种情况:    a. nums[i] > 0        1                                                  b. nums[i] < 0        0

By Ne0inhk
【算法通关指南:算法基础篇 】模拟算法专题:1. 铺地毯 2. 回文日期 3. 扫雷

【算法通关指南:算法基础篇 】模拟算法专题:1. 铺地毯 2. 回文日期 3. 扫雷

🔥小龙报:个人主页 🎬作者简介:C++研发,嵌入式,机器人方向学习者 ❄️个人专栏:《算法通关指南》 ✨ 永远相信美好的事情即将发生 文章目录 * 前言 * 一、模拟算法 * 二、模拟的经典算法题 * 2.1 铺地毯 * 2.1.1题目 * 2.1.2 算法原理 * 2.1.3代码 * 2.2 回文日期 * 2.2.1题目 * 2.2.2 算法原理 * 2.2.3代码 * 2.2.3.1 枚举月 + 日 * 2.2.

By Ne0inhk
【LeetCode_160】相交链表

【LeetCode_160】相交链表

刷爆LeetCode系列 * LeetCode第160题: * github地址 * 前言 * 题目描述 * 题目与思路分析 * 思路一:暴力解法 * 思路二:快慢指针 * 代码实现 * 思路一:暴力解法 * 思路二:快慢指针 * 算法代码优化 LeetCode第160题: github地址 有梦想的电信狗 前言 本文用C++实现LeetCode第160题 题目描述 题目链接:https://leetcode.cn/problems/intersection-of-two-linked-lists/description/ 题目与思路分析 目标分析: 1. 给定两个单链表的头节点 headA 和 headB ,找出并返回两个单链表相交的起始节点。 2. 如果两个链表不存在相交节点,返回 nullptr 3. 提高要求:时间复杂度为O(m + n),空间复杂度为O(1),其中m和n分别为两个链表的长度

By Ne0inhk