内容
[](https://mseep.ai/app/nyudenkov-openapi-mcp-proxy)
# OpenAPI MCP 服务器
一款提供工具的 MCP 服务器,用于在无需将整个 OpenAPI 模式加载到 LLM 上下文的情况下,探索大型 OpenAPI 模式。非常适合高效地发现和分析端点、数据模型和 API 结构。
## 功能特点
- **API 配置管理**:保存和管理多个 API 配置,如有需要,可包含身份验证头
- **模式缓存**:自动缓存 OpenAPI 模式,以避免重复下载
- **端点发现**:列出和搜索 API 端点
- **分页支持**:通过可配置的页面大小,高效处理大型 API
- **详细模式探索**:获取有关端点和数据模型的综合信息
- **高效上下文使用**:在不压倒 LLM 上下文窗口的情况下,探索大型 API
<div align="center">

</div>
## 先决条件
- **Python 3.13+**:服务器需要 Python 3.13 或更高版本
- **uv**:快速的 Python 包安装程序和解析器([安装指南](https://docs.astral.sh/uv/getting-started/installation/))
- **MCP 兼容客户端**:Claude Desktop、Claude Code CLI、Cursor 或其他 MCP 客户端
### 安装 uv
**macOS/Linux:**
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
**使用 pip:**
```bash
pip install uv
```
## 安装
1. **克隆仓库:**
```bash
git clone https://github.com/nyudenkov/openapi-mcp-proxy.git
cd openapi-mcp-proxy
```
2. **安装依赖项:**
```bash
uv sync
```
3. **验证安装:**
```bash
# 测试服务器是否正确启动
uv run python main.py
```
服务器应无错误启动。
## 使用方法
### 运行服务器
```bash
uv run python main.py
```
服务器使用标准输入/输出运行,并与 MCP 兼容的 LLM 客户端集成。
### 可用工具
#### API 管理
- **`add_api`**:添加新的 API 配置,包含名称、URL 和可选描述
- `name`(必填):API 的简称
- `url`(必填):OpenAPI 模式的 URL(yaml/json)
- `description`(可选):可选描述
- `headers`(可选):用于身份验证的可选 HTTP 头(例如,{'Authorization': 'Bearer token', 'X-API-Key': 'key'})
- **`list_saved_apis`**:列出所有已保存的 API 配置
- **`remove_api`**:删除已保存的 API 配置
#### API 探索
- **`get_api_info`**:获取有关 API 的常规信息
- **`list_endpoints`**:列出 API 中的所有端点,支持分页和筛选
- **`search_endpoints`**:通过查询搜索端点,支持分页和筛选
- **`get_endpoint_details`**:获取有关特定端点的详细信息
- **`list_models`**:列出 API 中的所有数据模型,支持分页和筛选
- **`get_model_schema`**:获取特定模型的详细模式
### 工具功能
#### 分页
所有列出工具(`list_endpoints`、`search_endpoints`、`list_models`)都支持分页,以高效处理大型 API:
- 默认页面大小:50 项
- 响应包含导航信息(当前页面、总页数、是否有下一页/上一页)
#### 高级筛选
工具能够筛选结果,以找到您需要的内容:
**端点筛选:**
- HTTP 方法(GET、POST、PUT、DELETE 等)
- 标签(包含/排除特定标签)
- 身份验证要求
- 弃用状态
**模型筛选:**
- 模型类型(对象、数组、字符串等)
- 属性数量(最小/最大属性数量)
- 必需字段存在
- 标签(包含/排除特定标签)
## 配置
API 配置自动保存到工作目录中的 `api_configs.json`。文件结构:
```json
{
"apis": {
"api-name": {
"name": "some-project-local-backend",
"url": "http://127.0.0.1:8000/openapi.json",
"description": "Optional description for some cool project local backend scheme"
},
"api-name": {
"name": "stripe-yaml",
"url": "https://raw.githubusercontent.com/stripe/openapi/refs/heads/master/openapi/spec3.yaml",
"description": "Stripe YAML OpenAPI scheme"
}
}
}
```