yapi-mcp
A Model Context Protocol server for YApi that enables developers to search, view, create, and update API definitions directly from MCP-compatible IDEs.
README
YApi MCP Server
基于 YApi 1.12.0 接口管理平台的 Model Context Protocol (MCP) 服务器。
使开发者能够在支持 MCP 的 IDE 和编辑器(Claude Code、Cursor 等)中直接搜索、查看、创建和更新 YApi 接口定义,无需离开开发环境。
功能特性
- 🔍 搜索接口: 通过标题、路径或描述查找 API 端点
- 📖 查看定义: 获取完整的接口规范,包括请求/响应结构
- ➕ 创建接口: 向 YApi 项目添加新的 API 定义
- ✏️ 更新接口: 增量更新现有接口配置(先读后写,仅修改传入字段)
- 🔐 Cookie 认证: 基于会话的安全认证
- ⚡ 异步性能: 基于 httpx 实现高效的并发操作
- 🛡️ 启动验证: 服务启动时自动校验 Cookie 有效性,失效时立即报错退出
- 📝 Markdown 支持: 接口描述支持 Markdown 格式,自动转换为 HTML
MCP 工具
yapi_search_interfaces — 搜索接口
在指定项目中通过关键词搜索接口(匹配标题/路径/描述)。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
project_id |
int | ✅ | YApi 项目 ID |
keyword |
str | ✅ | 搜索关键词 |
返回: 接口摘要数组 JSON(_id, title, path, method)
yapi_get_interface — 获取接口详情
获取单个接口的完整定义,包括请求/响应结构、描述等。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
interface_id |
int | ✅ | 接口 ID |
返回: 完整接口对象 JSON
yapi_create_interface — 创建接口
在 YApi 项目中创建新接口。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
project_id |
int | ✅ | 项目 ID |
catid |
int | ✅ | 分类 ID |
title |
str | ✅ | 接口标题 |
path |
str | ✅ | 接口路径(以 / 开头) |
method |
str | ✅ | HTTP 方法(GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS) |
req_body |
str | — | 请求体(JSON Schema 字符串) |
req_body_type |
str | — | 请求体类型(form/json/raw/file) |
req_body_is_json_schema |
bool | — | 请求体是否为 JSON Schema 格式 |
req_body_form |
str | — | 表单字段(JSON 数组),示例: [{"name":"x","type":"text","required":"1","desc":"说明"}] |
req_query |
str | — | Query 参数(JSON 数组),示例: [{"name":"page","required":"1","desc":"页码"}] |
req_headers |
str | — | 请求头(JSON 数组),示例: [{"name":"Authorization","value":"Bearer token","required":"1"}] |
req_params |
str | — | 路径参数(JSON 数组),示例: [{"name":"id","example":"123","desc":"用户ID"}] |
res_body |
str | — | 响应体(JSON Schema 字符串) |
res_body_type |
str | — | 响应体类型(json/raw) |
res_body_is_json_schema |
bool | — | 响应体是否为 JSON Schema 格式 |
markdown |
str | — | 接口描述(Markdown 格式,自动转 HTML) |
status |
str | — | 接口状态(undone/done) |
tag |
str | — | 标签(JSON 数组) |
api_opened |
bool | — | 是否公开 API |
返回: {"action": "created", "interface_id": <id>}
yapi_update_interface — 更新接口
增量更新接口定义。仅需传入要修改的字段,其余字段自动保留原值(先读后写)。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
interface_id |
int | ✅ | 接口 ID |
title |
str | — | 新标题 |
path |
str | — | 新路径(以 / 开头) |
method |
str | — | 新 HTTP 方法 |
catid |
int | — | 新分类 ID |
req_body |
str | — | 请求体(JSON Schema) |
req_body_type |
str | — | 请求体类型 |
req_body_is_json_schema |
bool | — | 请求体是否为 JSON Schema 格式 |
req_body_form |
str | — | 表单字段(JSON 数组),示例: [{"name":"x","type":"text","required":"1","desc":"说明"}] |
req_query |
str | — | Query 参数(JSON 数组),示例: [{"name":"page","required":"1","desc":"页码"}] |
req_headers |
str | — | 请求头(JSON 数组),示例: [{"name":"Authorization","value":"Bearer token","required":"1"}] |
req_params |
str | — | 路径参数(JSON 数组),示例: [{"name":"id","example":"123","desc":"用户ID"}] |
res_body |
str | — | 响应体(JSON Schema) |
res_body_type |
str | — | 响应体类型 |
res_body_is_json_schema |
bool | — | 响应体是否为 JSON Schema 格式 |
markdown |
str | — | 接口描述(Markdown 格式) |
status |
str | — | 接口状态 |
tag |
str | — | 标签(JSON 数组) |
api_opened |
bool | — | 是否公开 API |
switch_notice |
bool | — | 是否通知团队成员 |
message |
str | — | 变更说明 |
返回: {"action": "updated", "interface_id": <id>}
环境要求
- Python 3.11 或更高版本
- YApi 1.12.0 实例(可通过 HTTP/HTTPS 访问)
- 有效的 YApi 认证 cookies
配置
1. 获取 YApi Cookies
- 在浏览器中登录 YApi 实例
- 打开开发者工具(F12)
- 导航到 Application → Cookies(Chrome) 或 Storage → Cookies(Firefox)
- 复制以下 cookie 值:
_yapi_token(必需)_yapi_uid(必需)ZYBIPSCAS(可选,仅某些自定义部署需要)
2. 配置 MCP
推荐直接在 MCP 配置的 env 中传入所需环境变量:
{
"mcpServers": {
"yapi": {
"command": "uvx",
"args": ["yapi-mcp"],
"env": {
"YAPI_SERVER_URL": "https://your-yapi-instance.com",
"YAPI_TOKEN": "your_token",
"YAPI_UID": "your_uid"
}
}
}
}
注意: 如果你的 YApi 部署需要额外的 CAS 认证,添加
"YAPI_CAS": "your_cas_value"到env中。
如果你希望从文件加载配置,可以先参考 .env.example 创建一个专用 .env 文件,然后显式设置 YAPI_ENV_FILE:
{
"mcpServers": {
"yapi": {
"command": "uvx",
"args": ["yapi-mcp"],
"env": {
"YAPI_ENV_FILE": "/absolute/path/to/yapi.env"
}
}
}
}
- 未配置
YAPI_ENV_FILE时,程序不会自动读取当前目录下的.env。 .env.example只是模板文件,不会被自动加载。YAPI_ENV_FILE必须由外部环境传入;不要把它写在目标.env文件里指望自举生效。
开发
运行测试
# 安装开发依赖
pip install -e ".[dev]"
# 运行所有测试
pytest
# 运行并显示覆盖率
pytest --cov=src --cov-report=term-missing
# 运行特定测试文件
pytest tests/test_config.py
代码质量
# 格式化代码
ruff format
# 代码检查
ruff check
# 自动修复检查问题
ruff check --fix
项目结构
yapi-mcp/
├── src/
│ └── yapi_mcp/ # Python 包
│ ├── server.py # MCP 服务器入口 + 工具定义
│ ├── config.py # 配置模型
│ └── yapi/
│ ├── client.py # YApi API 客户端
│ ├── models.py # Pydantic 数据模型
│ └── errors.py # 错误映射
├── tests/ # 测试套件
├── pyproject.toml # 项目配置
├── .env.example # 环境变量模板
└── README.md # 本文件
贡献
欢迎贡献! 我们非常感谢各种形式的贡献,包括但不限于:
- 🐛 报告 Bug
- ✨ 建议新功能
- 📝 改进文档
- 💻 提交代码
在开始贡献之前,请阅读我们的贡献指南。
快速开始
- Fork 本仓库
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'feat: 添加惊人的功能') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
代码质量要求
- ✅ 所有测试通过:
pytest - ✅ 代码已格式化:
ruff format - ✅ 无检查错误:
ruff check - ✅ 新功能包含测试
详细信息请参阅 CONTRIBUTING.md。
许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
相关项目
- YApi - API 管理平台
- fastmcp - Python MCP 框架
- Model Context Protocol - MCP 规范
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。