基于 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 → 运行日志 │
└─────────────────────────────────────────────────────────────┘
| 工具名 | 类型 | 功能 |
|---|---|---|
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 自动清理 ←────────────┘