Skip to main content

常见问题解答 (FAQ)

🌐 问:为什么我的本地 OpenAPI 工具服务器无法从 WebUI 界面访问?

答: 如果您的工具服务器在本地运行(例如 http://localhost:8000 ),由于 CORS(跨源资源共享)策略,基于浏览器的客户端可能会被限制访问。

请确保在您的 OpenAPI 服务器中明确启用 CORS 标头。例如,如果您使用的是 FastAPI,可以添加以下代码:

from fastapi.middleware.cors import CORSMiddleware

app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 或指定您的客户端来源
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)

此外,如果 Open WebUI 通过 HTTPS 提供服务(例如 https://yourdomain.com ),您的本地服务器必须满足以下条件之一:

  • 使用 HTTPS 从同一域访问(例如 https://localhost:8000 )。
  • 或者在 localhost (127.0.0.1) 上运行,以允许浏览器放宽对本地开发的安全性限制。
  • 否则,由于混合内容 (mixed-content) 规则,浏览器可能会阻止从 HTTPS 页面向 HTTP API 发起的非安全请求。

为了在生产环境中通过 HTTPS 安全运行,您的 OpenAPI 服务器也必须通过 HTTPS 提供服务。


🚀 问:我必须使用 FastAPI 来实现我的服务器吗?

答: 不需要!虽然为了清晰和易用,我们的参考实现是使用 FastAPI 编写的,但您可以使用任何能够生成有效 OpenAPI (Swagger) 规范的框架或语言。一些常见的选择包括:

  • FastAPI (Python)
  • Flask + Flask-RESTX (Python)
  • Express + Swagger UI (JavaScript/Node)
  • Spring Boot (Java)
  • 使用 Swag 或 Echo 的 Go

关键是确保您的服务器暴露一个有效的 OpenAPI 架构,并且通过 HTTP(S) 进行通信。 为所有端点设置自定义 operationId 非常重要。


🚀 问:为什么选择 OpenAPI 而不是 MCP?

答: 在大多数实际场景中,由于 OpenAPI 的简单性、工具生态系统、稳定性和开发人员友好性,它优于 MCP。原因如下:

  • 重用现有代码:如果您以前构建过 REST API,那么您大部分工作已经完成了——您不需要重写逻辑。只需定义一个符合规范的 OpenAPI 规范,并将现有代码作为工具服务器暴露即可。

    而使用 MCP,您必须在自定义协议层内重新实现工具逻辑,这导致了重复工作并增加了维护成本。

  • 💼 更少的维护和调试:OpenAPI 自然地融入现代开发工作流。您可以使用 Postman 测试端点,使用内置 API 检查日志,使用成熟的生态系统工具轻松排除故障——而且通常根本不需要修改核心应用。

    MCP 引入了新的传输层、架构解析和运行时怪癖,所有这些都必须手动调试。

  • 🌍 基于标准:OpenAPI 在科技行业被广泛采用。其定义良好的结构意味着工具、代理和服务器可以立即互操作,无需特殊的桥接或转换。

  • 🧰 更好的工具支持:支持 OpenAPI 的工具非常丰富——自动客户端/服务器生成、文档、验证、模拟、测试,甚至安全审计工具。

  • 🔐 一流的安全支持:OpenAPI 原生支持 OAuth2、JWT、API 密钥和 HTTPS——这使得使用常用库和标准构建安全端点变得更加容易。

  • 🧠 更多开发者已经了解它:使用 OpenAPI 意味着您正在使用后端团队、前端开发人员、DevOps 和产品工程师已经熟悉的语言。无需学习曲线或昂贵的入职培训。

  • 🔄 面向未来且可扩展:OpenAPI 随着 API 标准而发展,并保持向前兼容。相比之下,MCP 是定制且实验性的——通常需要随着周围生态系统的变化而进行更改。

🧵 结论:OpenAPI 让您能够以更少的努力、更少的代码重复和更少的意外完成更多工作。它是为 LLM 工具提供动力的生产就绪、开发者友好的途径——无需从头开始重建一切。


🔐 问:我该如何保护我的 OpenAPI 工具服务器?

答: OpenAPI 支持行业标准的安全机制,如:

  • OAuth 2.0
  • API 密钥标头
  • JWT (JSON Web Token)
  • 基础认证 (Basic Auth)

在生产环境中使用 HTTPS 来加密传输中的数据,并根据需要使用适当的认证/授权方法限制端点。您可以直接在 OpenAPI 架构中使用 securitySchemes 字段合并这些机制。


❓ 问:我可以使用 OpenAPI 工具服务器构建什么样的工具?

答: 只要能通过 REST API 暴露的功能,您都可以构建。常见的工具类型包括:

  • 文件系统操作(读取/写入文件、列出目录)
  • Git 和文档库访问
  • 数据库查询或架构探索
  • 网页抓取或摘要生成
  • 外部 SaaS 集成(例如 Salesforce、Jira、Slack)
  • LLM 挂载的存储库 / RAG 组件
  • 暴露给您的代理的安全内部微服务

🔌 问:我可以同时运行多个工具服务器吗?

答: 当然可以。每个工具服务器独立运行并暴露自己的 OpenAPI 架构。您的代理配置可以指向多个工具服务器,允许您根据需要进行混合和匹配。

没有限制——只需确保每个服务器运行在自己的端口或地址上,并且可以被代理主机访问即可。


🧪 问:在将工具服务器连接到 LLM 代理之前,我该如何测试它?

答: 您可以使用以下工具测试您的 OpenAPI 工具服务器:

  • Swagger UI 或 ReDoc(FastAPI 默认内置)
  • Postman 或 Insomnia
  • 命令行中的 curl 或 httpie
  • Python 的 requests 模块
  • OpenAPI 验证器和模拟器

验证通过后,您可以将工具服务器注册到 LLM 代理或通过 Open WebUI 注册。


🛠️ 问:我可以扩展或自定义参考服务器吗?

答: 可以!servers/ 目录中的所有服务器都是作为简单模板构建的。您可以 fork 并修改它们以:

  • 添加新的端点和业务逻辑
  • 集成身份验证
  • 更改响应格式
  • 连接到新服务或内部 API
  • 通过 Docker、Kubernetes 或任何云主机部署

🌍 问:我可以在 AWS 或 GCP 等云平台上运行 OpenAPI 工具服务器吗?

答: 可以。这些服务器是普通的 HTTP 服务。您可以将它们部署为:

  • 带有 API 网关的 AWS Lambda(无服务器)
  • EC2 或 GCP Compute Engine 实例
  • GKE/EKS/AKS 中的 Kubernetes 服务
  • Cloud Run 或 App Engine
  • Render, Railway, Heroku 等

只需确保它们已安全配置,并且在代理或用户需要时可以公开访问(或通过 VPN 访问)。


🧪 问:如果我已经有一个 MCP 服务器怎么办?

答: 好消息!您可以使用我们的 MCP-to-OpenAPI 桥接工具:mcpo。现在将现有的基于 MCP 的工具暴露为兼容 OpenAPI 的 API 比以往任何时候都更容易。无需重写,没有烦恼——即插即用!🚀

如果您已经使用 MCP 协议构建了工具,mcpo 可以帮助您立即解锁与 Open WebUI 和任何基于 OpenAPI 的代理的兼容性——确保您的辛勤工作保持完全可访问并面向未来。

查看文档中可选的“桥接到 MCP”部分以获取设置说明。

快速开始:

uvx mcpo --port 8000 -- uvx mcp-server-time --local-timezone=America/New_York

✨ 就这样——您的 MCP 服务器现在已经准备好支持 OpenAPI 了!


🗂️ 问:一个 OpenAPI 服务器可以实现多个工具吗?

答: 可以。单个 OpenAPI 服务器可以在不同的端点下提供多个相关的能力。例如,一个文档服务器可以提供搜索、上传、OCR 和摘要功能——所有这些都在一个架构中。

如果您更喜欢隔离性和灵活性,也可以通过为每个工具创建一个 OpenAPI 服务器来实现完全模块化。


🙋 还有更多问题?访问 GitHub 讨论页面以获取社区的帮助和反馈: 👉 社区讨论 (Community Discussions)