mcp孤儿监护仪
检测并杀死在AI编码工具会话崩溃或不干净关闭后幸存的孤立MCP服务器进程。
如果你使用Claude Code、Cursor或任何基于MCP的AI工具,你现在可能正在运行僵尸节点进程:
ps aux | grep mcp-server | grep -v grep问题
MCP(模型上下文协议)服务器作为子节点进程运行——每个配置的服务器、每个会话一个。当一个会话干净地结束时,他们就会被杀死。当它没有(崩溃、强制退出、关闭终端)时,它们会作为孤儿存活下来,陷入没有父母的事件循环中。
每个孤儿都将CPU核心定位在50%左右,什么都不做。我们找到了11个孤儿 mcp-server-cloudflare 同时运行的进程——550%的CPU组合,最长的48小时以上的燃烧周期。
这是一个 已知的克劳德代码问题 --自2025年6月开放以来,仍未解决。用户已通过Cloudflare、Todoist、Heroku、Azure DevOps和ESP-IDF MCP服务器报告了这一情况。一位用户发现了40多个孤立进程。
运作原理
通过macOS LaunchAgent每10分钟运行一次的50行bash脚本:
- 查找所有匹配的节点进程
mcp-server-*或mcp-remote - 检查父进程是否仍处于活动状态
- 如果父母不在了(PPID=1,准备出发),它就是孤儿
- 杀死孤儿并记录其行为
没有依赖关系。没有后台守护进程。只是定期扫描。
安装
git clone https://github.com/41fred/mcp-orphan-monitor.git
cd mcp-orphan-monitor
bash install.sh这将安装:
- 监控脚本 在
~/.mcp-orphan-monitor/monitor.sh--通过LaunchAgent每10分钟运行一次 - 状态栏应用程序 (可选)--菜单栏中的盾牌图标,带有按需扫描、杀戮历史和孤儿计数
要跳过状态栏,请执行以下操作:
bash install.sh --no-statusbar状态栏需要 臀部:
pip3 install rumps卸载
bash install.sh uninstall手动扫描
立即运行监视器,无需等待下一次计划扫描:
bash ~/.mcp-orphan-monitor/monitor.sh日志
杀戮记录在 ~/Library/Logs/mcp-orphan-monitor.log:
2026-03-09 14:22:01 KILLED orphan: pid=48291 server=mcp-server-cloudflare cpu=52.3% uptime=2-03:41:12
2026-03-09 14:22:01 KILLED orphan: pid=48295 server=mcp-server-cloudflare cpu=49.8% uptime=2-03:41:10
2026-03-09 14:22:01 Summary: killed 2 orphaned MCP process(es)状态栏
可选菜单栏应用程序显示:
- 全部清除时显示屏蔽图标,检测到孤儿时显示警告图标
- 当前孤儿人数
- 自安装以来的总杀死数
- 最后5个击杀条目
- 立即扫描按钮立即清理
- 查看日志以在Console.app中打开日志
它与cc收割机相比如何
cc收割机 使用Claude Code Stop挂钩在会话结束时进行清理。该监测器采用了一种不同的方法——周期性PPID=1检测,用于捕捉没有钩子着火的碰撞场景。它们是互补的。
| mcp孤儿监视器 | cc收割机 | |
|---|---|---|
| 方法 | 定期扫描(launchd) | 停止钩子+守护进程 |
| 捕获崩溃 | 是(PPID=1检测) | 通过进程守护进程 |
| 依赖关系 | 无(bash+launchd) | Rust(proc看门人)或LaunchAgent |
| 状态栏 | 是(Python/臀部) | 否 |
| 范围 | 仅限MCP孤儿 | MCP+子代理 |
Linux
监视器脚本在Linux上工作(PPID=1=重新解析为init/systemd)。用cron作业或systemd计时器替换LaunchAgent:
# cron — every 10 minutes
*/10 * * * * MCP_MONITOR_LOG="$HOME/.local/log/mcp-orphan-monitor.log" bash "$HOME/.mcp-orphan-monitor/monitor.sh"为什么存在
当其父服务器消失时,MCP服务器应自动终止。在MCP规范或Claude Code的上游修复之前,每个运行基于MCP的工具的团队都需要监控这一点,尤其是代表用户生成会话的守护进程设置(Slack bots、API网关),在这些设置中,孤立子从每个会话中积累,且可见性为零。
建造于 Alcanah合作伙伴 --我们构建人工智能运营基础设施。
许可证
麻省理工学院
