Source Code
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_idfrom URL path (e.g.,/project/123/...โ project_id=123) - Extract
api_idfrom URL path (e.g.,.../api/456โ api_id=456) - Use
yapi --path /api/interface/get --query id=<api_id>to fetch details
- Extract
Example URL patterns:
https://yapi.example.com/project/123/interface/api/456โ project=123, api=456https://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:
- YApi base URL (e.g., https://yapi.example.com)
- Password
Config is saved to ~/.yapi/config.toml.
Workflow
- If user provides a YApi URL, check if it matches configured
base_urlin~/.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, runyapi 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 withyapi docs-sync. - Default syncs only changed files; use
--forceto 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(usejsonif unsure) and provideres_body(prefer JSON Schema). Empty values can make/api/interface/addfail. - Keep request/response structures in
req_*/res_bodyinstead of stuffing them intodescormarkdown.