Skip to main content
Glama
L-x-C

Claude Code Multi-Process MCP Server

by L-x-C
README.md
# Claude Code 多进程 MCP 服务器

## 项目定位
基于 **FastMCP 框架**的多进程并行执行服务器,为 Claude Code CLI 提供异步任务处理能力。

---

## 核心架构

```
┌─────────────────────────────────────────────────────────────┐
│                    Claude Code CLI                           │
└───────────────────────────┬─────────────────────────────────┘
                            │ JSON-RPC (stdio)
┌───────────────────────────▼─────────────────────────────────┐
│                   FastMCP Server                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              @server.tool Decorators                 │   │
│  │  ┌─────────────┐ ┌──────────────┐ ┌──────────────┐  │   │
│  │  │execute_cc   │ │start_cc_async│ │check_status  │  │   │
│  │  │_task        │ │              │ │              │  │   │
│  │  └─────────────┘ └──────────────┘ └──────────────┘  │   │
│  └─────────────────────────────────────────────────────┘   │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              TaskManager Class                       │   │
│  │  • SIGCHLD 信号处理 (自动回收僵尸进程)                │   │
│  │  • 进程生命周期管理                                   │   │
│  │  • UUID 任务追踪                                      │   │
│  └─────────────────────────────────────────────────────┘   │
└───────────────────────────┬─────────────────────────────────┘
                            │ subprocess.Popen()
┌───────────────────────────▼─────────────────────────────────┐
│               子进程池 (并行执行)                            │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐          │
│  │ Task 1  │ │ Task 2  │ │ Task 3  │ │ Task N  │          │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘          │
└─────────────────────────────────────────────────────────────┘
                            │
┌───────────────────────────▼─────────────────────────────────┐
│              文件系统持久化 (/tmp/)                          │
│  • cc_process_tasks/  → 任务结果 (JSON)                     │
│  • *.stdout            → 标准输出                           │
│  • *.stderr            → 错误输出                           │
│  • cc_process_mcp.log  → 运行日志                           │
└─────────────────────────────────────────────────────────────┘
```

---

## MCP 工具集

| 工具名 | 类型 | 功能 |
|--------|------|------|
| `execute_cc_task` | 同步 | 阻塞执行,返回结果 |
| `start_cc_task_async` | 异步 | 立即返回 task_id |
| `check_task_status` | 查询 | 获取状态和结果 |
| `list_active_tasks` | 监控 | 列出所有运行中任务 |
| `cleanup_task` | 清理 | 终止进程并删除数据 |

---

## 关键技术点

| 技术领域 | 实现方案 |
|----------|----------|
| **进程管理** | `subprocess.Popen` + SIGCHLD 信号处理 |
| **僵尸进程防护** | `os.waitpid(-1, WNOHANG)` 非阻塞自动回收 |
| **任务持久化** | 文件系统 JSON 存储 + 进程状态混合判断 |
| **进程存活检测** | `os.kill(pid, 0)` + `ps` 命令状态验证 |
| **输出解析** | 支持 stream-json/json/text 多格式提取 |
| **任务隔离** | 每任务独立目录 + UUID 标识 |

---

## 技术栈
```
Python 3.6+  +  FastMCP ≥0.12.0  +  标准库 (signal/subprocess/json)
```

---

## 状态流转
```
启动 → running → (poll检测/文件mtime判断) → completed/failed/timeout
         ↑                                              ↓
         └────────────── SIGCHLD 自动清理 ←────────────┘
```