Skip to main content
Glama
README.md
# YAPI MCP Server

English | [中文](./README_zh.md)

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server for [YAPI](https://github.com/YMFE/yapi) - enabling AI assistants to manage API documentation.

## Features

| Tool | Description | YAPI API |
|------|-------------|----------|
| `yapi_list_projects` | List all configured projects | - |
| `yapi_run_auto_test` | Run automated tests | `/api/open/run_auto_test` |
| `yapi_import_data` | Import API data | `/api/open/import_data` |
| `yapi_interface_add` | Add new interface | `/api/interface/add` |
| `yapi_interface_save` | Save interface | `/api/interface/save` |
| `yapi_interface_up` | Update interface | `/api/interface/up` |
| `yapi_interface_get` | Get interface details | `/api/interface/get` |
| `yapi_interface_list` | List interfaces | `/api/interface/list` |
| `yapi_interface_list_menu` | Get interface menu | `/api/interface/list_menu` |
| `yapi_interface_add_cat` | Add interface category | `/api/interface/add_cat` |
| `yapi_interface_get_cat_menu` | Get all categories | `/api/interface/getCatMenu` |

## Installation

Clone the repository, then install dependencies and build in the project directory:

```bash
git clone <repo-url>
cd yapi-mcp
npm install
npm run build
```

## Configuration

### Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `YAPI_BASE_URL` | Yes | YAPI server URL, e.g., `https://yapi.example.com` |
| `YAPI_PROJECTS` | Yes | Project configuration in format: `projectId1:token1,projectId2:token2` |

### YAPI_PROJECTS Format

```
projectId1:token1,projectId2:token2
```

Example:

```
123:abc123token,456:def456token
```

You can get the project token from YAPI project settings page.

## Usage with Cursor

Add to your Cursor MCP configuration file:

### macOS/Linux

Edit `~/.cursor/mcp.json` and replace `/path/to/yapi-mcp` with your actual project path:

```json
{
  "mcpServers": {
    "yapi": {
      "command": "node",
      "args": ["/path/to/yapi-mcp/dist/index.js"],
      "env": {
        "YAPI_BASE_URL": "https://your-yapi-server.com",
        "YAPI_PROJECTS": "123:your-token-here,456:another-token"
      }
    }
  }
}
```

### Windows

Edit `%APPDATA%\Cursor\mcp.json` and use your actual project path (e.g. `C:\\Users\\YourName\\yapi-mcp\\dist\\index.js`):

```json
{
  "mcpServers": {
    "yapi": {
      "command": "node",
      "args": ["C:\\path\\to\\yapi-mcp\\dist\\index.js"],
      "env": {
        "YAPI_BASE_URL": "https://your-yapi-server.com",
        "YAPI_PROJECTS": "123:your-token-here"
      }
    }
  }
}
```

## Usage with Claude Desktop

Add to your Claude Desktop configuration:

### macOS

Edit `~/Library/Application Support/Claude/claude_desktop_config.json` and replace `/path/to/yapi-mcp` with your actual project path:

```json
{
  "mcpServers": {
    "yapi": {
      "command": "node",
      "args": ["/path/to/yapi-mcp/dist/index.js"],
      "env": {
        "YAPI_BASE_URL": "https://your-yapi-server.com",
        "YAPI_PROJECTS": "123:your-token-here"
      }
    }
  }
}
```

### Windows

Edit `%APPDATA%\Claude\claude_desktop_config.json` with the same configuration, using your actual project path.

## Tool Examples

### List All Projects

```json
{
  "name": "yapi_list_projects",
  "arguments": {}
}
```

### Get Interface List (Default Project)

```json
{
  "name": "yapi_interface_list",
  "arguments": {
    "page": 1,
    "limit": 20
  }
}
```

### Get Interface List (Specific Project)

```json
{
  "name": "yapi_interface_list",
  "arguments": {
    "project": 456,
    "page": 1,
    "limit": 20
  }
}
```

### Add New Interface

```json
{
  "name": "yapi_interface_add",
  "arguments": {
    "catid": 456,
    "title": "Get User Info",
    "path": "/api/user/info",
    "method": "GET",
    "desc": "Get user details by ID"
  }
}
```

### Get Interface Details

```json
{
  "name": "yapi_interface_get",
  "arguments": {
    "id": 789
  }
}
```

### Run Automated Tests

```json
{
  "name": "yapi_run_auto_test",
  "arguments": {
    "project": 456,
    "env_name": "dev"
  }
}
```

## Development

```bash
# Clone the repository
cd yapi-mcp

# Install dependencies
npm install

# Development mode
npm run dev

# Build
npm run build

# Run
npm start
```

## Security

- Never commit your YAPI tokens to version control
- Use environment variables to store sensitive configuration
- Consider using a secrets manager for production deployments

## License

MIT

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

TDQS

C2.8/5.0

Scored across 11 tools

Disambiguation3/5

The tools have clear distinctions for core operations like add, get, list, and save, but there is significant overlap between yapi_interface_add and yapi_interface_save (which handles both add and update), and between yapi_interface_list and yapi_interface_list_menu (both list interfaces with slight variations). This overlap could cause confusion for agents when selecting the appropriate tool.

Naming Consistency4/5

Most tools follow a consistent yapi_verb_noun pattern (e.g., yapi_interface_add, yapi_interface_get), with clear prefixes and snake_case throughout. However, there are minor deviations like yapi_interface_up instead of yapi_interface_update, and yapi_run_auto_test uses 'run' while others use verbs like 'add' or 'get', slightly breaking the pattern.

Tool Count5/5

With 11 tools, this server is well-scoped for managing YAPI interfaces and projects. The count aligns with the domain's needs, covering operations for projects, interfaces, categories, and testing without being overwhelming or too sparse.

Completeness4/5

The toolset provides strong coverage for YAPI management, including CRUD operations for interfaces and categories, project listing, and automated testing. A minor gap is the lack of explicit tools for deleting interfaces or categories, which might require workarounds, but core workflows are well-supported.

Maintenance

ActivityInactive
ResponsivenessNo issues