YApi interface docs
URL Detection
When user provides a URL, check if it matches the configured YApi instance:
- Read config to get base_url:
cat ~/.yapi/config.toml | grep base_url
If the URL's origin matches base_url, use yapi CLI to operate:
- Extract
project_id from URL path (e.g., /project/123/... → project_id=123)
- Extract
api_id from URL path (e.g., .../api/456 → api_id=456)
- Use
yapi --path /api/interface/get --query id=<api_id> to fetch details
Example URL patterns:
https://yapi.example.com/project/123/interface/api/456 → project=123, api=456
https://yapi.example.com/project/123/interface/api/cat_789 → project=123, category=789
Prerequisites
Check if yapi CLI is installed
yapi --version
If not installed, ask user to install globally
npm install -g @leeguoo/yapi-mcp
# or
pnpm add -g @leeguoo/yapi-mcp
Check login status
yapi whoami
If not logged in, login interactively
yapi login
This will prompt for:
Config is saved to ~/.yapi/config.toml.
Workflow
- If user provides a YApi URL, check if it matches configured
base_url in ~/.yapi/config.toml.
- Ensure yapi CLI is installed (prompt user to install globally if missing).
- Check login status with
yapi whoami; if not logged in, run yapi login.
- Load config from
~/.yapi/config.toml (base_url, auth_mode, email/password or token, optional project_id).
- Identify the target interface by id, URL, or keyword; ask for project/category ids if needed.
- Call YApi endpoints with the CLI (see examples below) to fetch raw JSON.
- Summarize method, path, headers, query/body schema, response schema, and examples.
CLI Usage
- Config location:
~/.yapi/config.toml
- Auth cache:
~/.yapi-mcp/auth-*.json
Common commands
# Check version
yapi --version
# Show help
yapi -h
# Check current user
yapi whoami
# Login (interactive)
yapi login
# Search interfaces
yapi search --q keyword
# Get interface by ID
yapi --path /api/interface/get --query id=123
# List interfaces in category
yapi --path /api/interface/list_cat --query catid=123
Docs sync
- Bind local docs to YApi category with
yapi docs-sync bind add --name <binding> --dir <path> --project-id <id> --catid <id> (stored in .yapi/docs-sync.json).
- Sync with
yapi docs-sync --binding <binding> or run all bindings with yapi docs-sync.
- Default syncs only changed files; use
--force to sync everything.
- Mermaid rendering depends on
mmdc (auto-installed if possible; failures do not block sync).
- For full Markdown render, install
pandoc (manual install required).
- Extra mappings (generated after docs-sync run in binding mode):
.yapi/docs-sync.links.json: local docs to YApi doc URLs.
.yapi/docs-sync.projects.json: cached project metadata/envs.
.yapi/docs-sync.deployments.json: local docs to deployed URLs.
Interface creation tips
- When adding interfaces, always set
req_body_type (use json if unsure) and provide res_body (prefer JSON Schema). Empty values can make /api/interface/add fail.
- Keep request/response structures in
req_* / res_body instead of stuffing them into desc or markdown.
1---2name: yapi3description: Query and sync YApi interface documentation. Use when user mentions "yapi 接口文档", YAPI docs, asks for request/response details, or needs docs sync. Also triggers when user pastes a YApi URL that matches the configured base_url.4---56# YApi interface docs78## URL Detection910When user provides a URL, check if it matches the configured YApi instance:11121. Read config to get base_url:13```bash14cat ~/.yapi/config.toml | grep base_url15```16172. If the URL's origin matches `base_url`, use yapi CLI to operate:18 - Extract `project_id` from URL path (e.g., `/project/123/...` → project_id=123)19 - Extract `api_id` from URL path (e.g., `.../api/456` → api_id=456)20 - Use `yapi --path /api/interface/get --query id=<api_id>` to fetch details21223. Example URL patterns:23 - `https://yapi.example.com/project/123/interface/api/456` → project=123, api=45624 - `https://yapi.example.com/project/123/interface/api/cat_789` → project=123, category=7892526## Prerequisites2728### Check if yapi CLI is installed29```bash30yapi --version31```3233### If not installed, ask user to install globally34```bash35npm install -g @leeguoo/yapi-mcp36# or37pnpm add -g @leeguoo/yapi-mcp38```3940### Check login status41```bash42yapi whoami43```4445### If not logged in, login interactively46```bash47yapi login48```49This will prompt for:50- YApi base URL (e.g., https://yapi.example.com)51- Email52- Password5354Config is saved to `~/.yapi/config.toml`.5556## Workflow571. If user provides a YApi URL, check if it matches configured `base_url` in `~/.yapi/config.toml`.582. Ensure yapi CLI is installed (prompt user to install globally if missing).593. Check login status with `yapi whoami`; if not logged in, run `yapi login`.604. Load config from `~/.yapi/config.toml` (base_url, auth_mode, email/password or token, optional project_id).615. Identify the target interface by id, URL, or keyword; ask for project/category ids if needed.626. Call YApi endpoints with the CLI (see examples below) to fetch raw JSON.637. Summarize method, path, headers, query/body schema, response schema, and examples.6465## CLI Usage66- Config location: `~/.yapi/config.toml`67- Auth cache: `~/.yapi-mcp/auth-*.json`6869### Common commands70```bash71# Check version72yapi --version7374# Show help75yapi -h7677# Check current user78yapi whoami7980# Login (interactive)81yapi login8283# Search interfaces84yapi search --q keyword8586# Get interface by ID87yapi --path /api/interface/get --query id=1238889# List interfaces in category90yapi --path /api/interface/list_cat --query catid=12391```9293## Docs sync94- Bind local docs to YApi category with `yapi docs-sync bind add --name <binding> --dir <path> --project-id <id> --catid <id>` (stored in `.yapi/docs-sync.json`).95- Sync with `yapi docs-sync --binding <binding>` or run all bindings with `yapi docs-sync`.96- Default syncs only changed files; use `--force` to sync everything.97- Mermaid rendering depends on `mmdc` (auto-installed if possible; failures do not block sync).98- For full Markdown render, install `pandoc` (manual install required).99- Extra mappings (generated after docs-sync run in binding mode):100 - `.yapi/docs-sync.links.json`: local docs to YApi doc URLs.101 - `.yapi/docs-sync.projects.json`: cached project metadata/envs.102 - `.yapi/docs-sync.deployments.json`: local docs to deployed URLs.103104## Interface creation tips105- When adding interfaces, always set `req_body_type` (use `json` if unsure) and provide `res_body` (prefer JSON Schema). Empty values can make `/api/interface/add` fail.106- Keep request/response structures in `req_*` / `res_body` instead of stuffing them into `desc` or `markdown`.