---
title: "OpenAPI 集成"
description: "从 MCP 工具生成 OpenAPI 规范,与 OpenWebUI 和其他系统无缝集成"
---
# OpenWebUI 集成的 OpenAPI 生成
MCPHub 现在支持从 MCP 工具生成 OpenAPI 3.0.3 规范,实现与 OpenWebUI 和其他 OpenAPI 兼容系统的无缝集成,无需 MCPO 作为中间代理。
## 功能特性
- ✅ **自动 OpenAPI 生成**:将 MCP 工具转换为 OpenAPI 3.0.3 规范
- ✅ **OpenWebUI 兼容**:无需 MCPO 代理的直接集成
- ✅ **实时工具发现**:动态包含已连接 MCP 服务器的工具
- ✅ **双参数支持**:支持 GET(查询参数)和 POST(JSON 正文)进行工具执行
- ✅ **无需身份验证**:OpenAPI 端点公开,便于集成
- ✅ **完整元数据**:具有适当模式和文档的完整 OpenAPI 规范
## API 端点
### OpenAPI 规范
```bash GET /api/openapi.json
curl "http://localhost:3000/api/openapi.json"
```
```bash 带参数
curl "http://localhost:3000/api/openapi.json?title=我的 MCP API&version=2.0.0"
```
生成并返回所有已连接 MCP 工具的完整 OpenAPI 3.0.3 规范。
**查询参数:**
自定义 API 标题
自定义 API 描述
自定义 API 版本
自定义服务器 URL
包含禁用的工具
要包含的服务器名称列表(逗号分隔)
### 可用服务器
```bash GET /api/openapi/servers
curl "http://localhost:3000/api/openapi/servers"
```
返回已连接的 MCP 服务器名称列表。
```json 示例响应
{
"success": true,
"data": ["amap", "playwright", "slack"]
}
```
### 工具统计
```bash GET /api/openapi/stats
curl "http://localhost:3000/api/openapi/stats"
```
返回有关可用工具和服务器的统计信息。
```json 示例响应
{
"success": true,
"data": {
"totalServers": 3,
"totalTools": 41,
"serverBreakdown": [
{"name": "amap", "toolCount": 12, "status": "connected"},
{"name": "playwright", "toolCount": 21, "status": "connected"},
{"name": "slack", "toolCount": 8, "status": "connected"}
]
}
}
```
### 工具执行
```bash GET /api/tools/{serverName}/{toolName}
curl "http://localhost:3000/api/tools/amap/amap-maps_weather?city=Beijing"
```
```bash POST /api/tools/{serverName}/{toolName}
curl -X POST "http://localhost:3000/api/tools/playwright/playwright-browser_navigate" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
```
通过 OpenAPI 兼容端点执行 MCP 工具。
**路径参数:**
MCP 服务器的名称
要执行的工具名称
## OpenWebUI 集成
要将 MCPHub 与 OpenWebUI 集成:
确保 MCPHub 正在运行,并且已配置 MCP 服务器
```bash
curl http://localhost:3000/api/openapi.json > mcphub-api.json
```
在 OpenWebUI 中导入 OpenAPI 规范文件或直接指向 URL
### 配置示例
在 OpenWebUI 中,您可以通过以下方式将 MCPHub 添加为 OpenAPI 工具:
`http://localhost:3000/api/openapi.json`
`http://localhost:3000/api`
## 生成的 OpenAPI 结构
生成的 OpenAPI 规范包括:
### 工具转换逻辑
- **简单工具**(≤10 个原始参数)→ 带查询参数的 GET 端点
- **复杂工具**(对象、数组或 >10 个参数)→ 带 JSON 请求正文的 POST 端点
- **所有工具**都包含完整的响应模式和错误处理
### 生成操作示例
```yaml
/tools/amap/amap-maps_weather:
get:
summary: "根据城市名称或者标准adcode查询指定城市的天气"
operationId: "amap_amap-maps_weather"
tags: ["amap"]
parameters:
- name: city
in: query
required: true
description: "城市名称或者adcode"
schema:
type: string
responses:
'200':
description: "Successful tool execution"
content:
application/json:
schema:
$ref: '#/components/schemas/ToolResponse'
```
### 安全性
- 定义了 Bearer 身份验证但不对工具执行端点强制执行
- 支持与各种 OpenAPI 兼容系统的灵活集成
## 相比 MCPO 的优势
无需中间代理
OpenAPI 规范随着 MCP 服务器连接/断开自动更新
直接工具执行,无代理开销
减少一个需要管理的组件
## 故障排除
确保 MCP 服务器已连接。检查 `/api/openapi/stats` 查看服务器状态。
验证工具名称和参数是否与 OpenAPI 规范匹配。检查服务器日志以获取详细信息。
确保 MCPHub 可从 OpenWebUI 访问,并且 OpenAPI URL 正确。
检查您的 MCP 服务器配置中是否启用了工具。使用 `includeDisabled=true` 查看所有工具。