使用说明
YAPI Extractor MCP Server
YAPI 接口文档提取器 MCP 服务器:自动登录 YAPI,按路径搜索接口、按分组拉取接口列表、提取接口 Schema 用于生成 Mock 数据和 TypeScript 类型定义,并支持回写到 YAPI 的高级 Mock。
功能特性
- 🔐 自动登录 YAPI(LDAP),会话复用,过期自动重新登录
- 🔍 按路径搜索接口、按分组列出接口
- 📋 提取接口请求/响应 JSON Schema,输出可直接喂给 LLM 的生成提示词
- 💾 将生成的 Mock JSON / TS 类型保存到本地
- ☁️ 将 Mock 数据保存为 YAPI 高级 Mock 场景
安装与构建
npm install
npm run build # 使用 esbuild 打包为单文件 ESM,第三方依赖会被一并打包进产物
npm start # 运行 build/index.js
npm run dev # 使用 ts-node 直接运行源码
npm run clean # 清理构建产物
MCP 服务器配置
在 MCP 客户端(如 Cline)的配置中添加:
{
"mcpServers": {
"yapi-extractor": {
"command": "node",
"args": ["/path/to/yapi-mock-server/build/index.js"],
"env": {
"YAPI_BASE_URL": "http://your-yapi-server:3000",
"YAPI_EMAIL": "your-email",
"YAPI_PASSWORD": "your-password",
"SAVE_FILES": "true",
"OUTPUT_DIR": "mock"
}
}
}
}
环境变量
必需:
YAPI_BASE_URL:YAPI 服务器地址YAPI_EMAIL:登录邮箱YAPI_PASSWORD:登录密码
可选:
SAVE_FILES:是否在提示词中要求自动保存生成文件("true"/"false",默认false)OUTPUT_DIR:文件保存目录,默认mock。绝对路径直接使用;相对路径相对于 MCP 服务器的项目根目录解析
工具说明
1. search_yapi_interface
按接口路径搜索 YAPI,返回匹配的 interfaceId、projectId、title。在不知道接口 ID 时先用它定位。
参数:
path(必需):接口路径,如/app/aiCoach/saveExercisePlan
2. list_cat_interfaces
获取分组下的所有接口。支持直接传分组页面 URL(自动解析 cat_<id>),也支持直接传 catId。
参数(二选一):
catUrl:分组页面 URL,如http://host:3000/project/119/interface/api/cat_5143catId:分组 ID,如5143
3. extract_yapi_interface
获取接口详情,解析请求与响应 Schema,并返回一段构造好的 prompt 用于驱动后续 Mock/类型生成。
参数:
interfaceId(必需):YAPI 接口 ID(接口 URL 中/api/<id>的数字部分)generateType(可选):mock/types/both,默认both
返回字段(部分):
interfaceId/projectId/interfaceName/method/pathschemas.request:按参数位置分组的入参 Schema,无入参时为nullparams:路径参数(req_params,如/user/{id}),恒为必填query:URL query 参数(req_query)body:请求体,JSON 类型取自req_body_other,form类型由req_body_form转换而来(文件字段标format: "binary")- 说明:YAPI 的 query / 路径 / form 参数不记录类型,统一输出为
string,并原样带出description、example供推断真实类型
schemas.response:响应中data字段的 Schemaprompt:生成 Mock / TS 类型的完整提示词shouldSaveFiles:来自SAVE_FILES环境变量outputDir:来自OUTPUT_DIR环境变量
4. save_generated_files
将生成的 Mock 数据和类型定义写入本地,目录由 OUTPUT_DIR 决定。
参数:
interfaceId(必需):作为文件名前缀mockData(可选):Mock JSON 字符串,保存为{interfaceId}-mock.jsontypeDefinitions(可选):TS 类型字符串,保存为{interfaceId}-types.ts
5. save_advanced_mock
将 Mock 数据保存为 YAPI 高级 Mock 场景。服务器会自动包裹 { code: 200, msg: "", data: <你传入的 mockData> },并在 name 后追加时间戳避免重名。
参数:
interfaceId(必需):YAPI 接口 IDprojectId(必需):YAPI 项目 IDname(必需):场景名称(一般用接口名)mockData(必需):data部分的 JSON 字符串,不要包含code/msg
典型使用流程
search_yapi_interface用路径找到interfaceId(或用list_cat_interfaces拉一个分组)extract_yapi_interface获取 Schema 与生成提示词- LLM 根据返回的
prompt生成mockData/typeDefinitions - 调
save_generated_files落盘,或调save_advanced_mock回写到 YAPI
输出文件
- Mock:
{interfaceId}-mock.json - 类型:
{interfaceId}-types.ts
技术栈
- Node.js (ESM)、TypeScript
@modelcontextprotocol/sdkaxios- 构建:
esbuild(单文件打包,第三方依赖内联进产物)
目录结构
yapi-mock-server/
├── src/
│ └── index.ts # MCP 服务器主入口
├── build/ # esbuild 输出(单文件 ESM)
├── package.json
├── tsconfig.json
└── README.md
许可证
MIT