Skip to main content
Glama
Errorrrrr
by Errorrrrr
README.md
# Apifox MCP 服务器

这是一个 MCP(Model Context Protocol)服务器,实现了一个可以将 OpenAPI、Swgger 格式的 JSON 数据导入到 Apifox 项目中的工具。

## 功能特性

- 📡 **Apifox 导入工具**: 将 OpenAPI 3、Swagger 2 格式的 JSON 数据导入到 Apifox 项目中

## 安装依赖

```bash
pip install -r requirements.txt
```

## MCP 服务器配置

### 1. 启动服务器

有两种方式启动服务器:

**方式一:直接启动**

```bash
python main.py
```

**方式二:使用启动脚本**

```bash
./start_server.sh
```

### 2. MCP 客户端配置

#### Claude Desktop 配置

在 Claude Desktop 的配置文件中添加服务器配置:

**macOS 配置文件位置:** `~/Library/Application Support/Claude/claude_desktop_config.json`

**Windows 配置文件位置:** `%APPDATA%\Claude\claude_desktop_config.json`

**配置示例:**

```json
{
  "mcpServers": {
    "apifox-mcp-server": {
      "command": "python",
      "args": ["/path/to/your/apifox-mcp-server/main.py"],
      "env": {
        "APIFOX_TOKEN": "your-apifox-token",
        "APIFOX_PROJECT_ID": "your-project-id"
      }
    }
  }
}
```

> 💡 **提示:** 完整的配置示例和说明请参考项目中的 `mcp_config_example.json` 和 `MCP_CONFIG_README.md` 文件

#### 其他 MCP 客户端配置

对于其他支持 MCP 的客户端,请参考相应客户端的文档配置 stdio 连接:

```bash
python /path/to/apifox-mcp-server/main.py
```

### 3. 验证配置

配置完成后,重启 MCP 客户端,您应该能够看到 `import_api` 工具可用。

### 4. 环境变量配置

在 MCP 配置文件的 `env` 字段中设置以下环境变量:

| 环境变量            | 必需 | 说明                              |
| ------------------- | ---- | --------------------------------- |
| `APIFOX_TOKEN`      | 是   | Apifox API 访问令牌               |
| `APIFOX_PROJECT_ID` | 否   | 默认项目 ID(可在工具调用时覆盖) |

### 5. 项目路径配置

请确保在配置文件中使用绝对路径,例如:

- **正确:** `/Users/username/projects/apifox-mcp-server/main.py`
- **错误:** `./main.py` 或 `main.py`

## 使用方法

### 工具说明

#### `import_api`

调用工具,将 OpenAPI 3、Swagger 2 格式的 JSON 数据导入到指定的 Apifox 项目中。

**参数:**

- `project_id` (可选): Apifox 项目 ID,优先使用环境变量 `APIFOX_PROJECT_ID`
- `input` (必需): 要导入的 OpenAPI 3 或 Swagger 2 格式的 JSON 字符串数据(需要转义)
- `headers` (可选): HTTP 请求头,`Authorization` 自动从环境变量 `APIFOX_TOKEN` 添加
- `timeout` (可选): 请求超时时间,默认 30 秒

**配置环境变量后的简化使用:**

```json
{
  "input": "{\"swagger\": \"2.0\", \"info\": {\"title\": \"API文档\", \"version\": \"1.0.0\"}, \"paths\": {...}}"
}
```

**完整参数使用(覆盖环境变量):**

```json
{
  "project_id": "specific-project-id",
  "input": "{\"swagger\": \"2.0\", \"info\": {\"title\": \"API文档\", \"version\": \"1.0.0\"}, \"paths\": {...}}",
  "headers": {
    "Authorization": "Bearer specific-token"
  },
  "timeout": 60
}
```

**重要说明:**

- 优先使用环境变量配置,简化工具调用
- `Authorization` 格式为 `Bearer {token}`,从环境变量 `APIFOX_TOKEN` 自动添加
- `X-Apifox-Api-Version: 2024-03-28` 会自动添加,无需手动指定
- 支持 OpenAPI 3.0+ 和 Swagger 2.0 格式

## API Token 配置

### 获取 Apifox API Token

1. 登录 [Apifox](https://www.apifox.cn/)
2. 点击右上角头像,进入「账号设置」
3. 在左侧菜单中选择「API 访问令牌」
4. 点击「生成新令牌」按钮
5. 输入令牌名称(如:MCP Server)
6. 选择合适的过期时间
7. 点击「生成」并复制生成的 token
8. 在请求头中使用:`Authorization: Bearer {你的token}`

### 获取项目 ID

1. 打开 Apifox 并进入目标项目
2. 在项目设置页面可以找到项目 ID
3. 或者在项目 URL 中获取项目 ID

## 故障排除

### 常见问题

1. **工具不可用**

   - 检查 MCP 服务器是否正常启动
   - 确认配置文件中的路径是否正确
   - 重启 MCP 客户端

2. **认证失败 (401)**

   - 检查 API Token 是否正确
   - 确认 Token 是否已过期
   - 验证 Token 格式:`Bearer {token}`

3. **项目不存在 (404)**

   - 检查项目 ID 是否正确
   - 确认 Token 是否有该项目的访问权限

4. **JSON 格式错误 (422)**

   - 验证输入的 JSON 格式是否正确
   - 确认是否为有效的 OpenAPI/Swagger 格式

5. **项目 ID 未提供**

   - 检查环境变量 `APIFOX_PROJECT_ID` 是否正确设置
   - 或在工具调用时提供 `project_id` 参数

6. **认证信息未提供**
   - 检查环境变量 `APIFOX_TOKEN` 是否正确设置
   - 或在工具调用时的 `headers` 中提供 `Authorization`

### 调试模式

启动服务器时会显示详细日志,包括:

- API 调用信息
- 请求数据长度
- 响应状态码
- 错误详情

## 项目结构

```
apifox-mcp-server/
├── main.py              # 主服务器代码
├── requirements.txt     # 依赖管理
├── README.md           # 项目说明
├── start_server.sh         # 启动脚本
├── test_example.py         # 测试示例
├── config_example.json     # Swagger 2.0 格式示例
├── mcp_config_example.json # MCP 客户端配置示例
└── MCP_CONFIG_README.md    # MCP 配置详细说明
```