关于 SelfHeal MCP
SelfHeal MCP 是为 MCP 服务添加重试、熔断器和调用指标的代理,适用于需要处理暂时性故障并查看目标状态的 Agent 环境。
主要功能
- 01通过退避重试暂时性故障
- 02用熔断器保护目标服务
- 03跟踪调用成功率、延迟和错误
- 04代理现有 MCP 服务
- 05查看并重置熔断状态
适用场景
- 01减少不稳定 API 调用造成的中断
- 02通过代理重新提供现有 MCP 服务
- 03查看调用指标和近期故障
MCP 相关
代理模式会封装现有 MCP 服务,并以重试和熔断机制重新提供其工具。自身的 MCP 工具支持 HTTP 调用、熔断控制、指标查看和近期错误详情。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
mcp.json · 通用配置
启动命令
npx -y selfheal-mcp需要配置的环境变量
SELFHEAL_CONFIGPath to selfheal.config.json (optional, defaults to cwd)SELFHEAL_MAX_RETRIESMax retry attempts per call (default: 3)SELFHEAL_CIRCUIT_THRESHOLDFailures before circuit opens (default: 5)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
5收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 否 | 要调用的 URL(用于 HTTP 目标) |
| body | string | 否 | 请求正文(用于 POST/PUT/PATCH) |
| method | enum | 否 | HTTP 方法(默认值:GET)GET | POST | PUT | PATCH | DELETE |
| target | string | 是 | 目标服务的标识符(用于断路器跟踪) |
| headers | object | 否 | HTTP 标头 |
| timeoutMs | number | 否 | 每次尝试的超时时间,单位为毫秒(默认值:30000) |
| description | string | 是 | 对此调用功能的通俗说明 |
详细介绍
SelfHeal MCP
用于 MCP 服务的自愈代理。为任何 MCP 工具调用添加自动重试、断路器保护和调用可观测性。
让你的 AI Agent 不再因不稳定的 API 而出错。
一键安装: 在 MCPize 上安装 |
npx selfheal-mcp
功能
- 退避重试 — 遇到暂时性故障(5xx、超时、速率限制)时,采用指数退避并加入抖动
- 断路器 — 为每个目标单独设置断路器,避免持续调用不可用的服务
- 调用指标 — 按工具和目标细分成功率、延迟和错误频率
- 代理模式 — 透明封装任何现有 MCP 服务
- 零配置 — 单独运行即可开箱即用;代理模式支持配置文件
快速开始
独立模式
添加到 Claude Desktop / Claude Code 配置中:
{
"mcpServers": {
"selfheal": {
"command": "npx",
"args": ["-y", "selfheal-mcp"]
}
}
}
然后使用 wrap_call 发起带自愈功能的任意 HTTP 请求:
Use the wrap_call tool to GET https://api.example.com/data with target "example-api"
代理模式
创建 selfheal.config.json:
{
"mode": "proxy",
"targets": [
{
"name": "my-server",
"transport": "streamable-http",
"url": "https://my-mcp-server.com/mcp"
}
]
}
{
"mcpServers": {
"selfheal": {
"command": "npx",
"args": ["-y", "selfheal-mcp"],
"env": {
"SELFHEAL_CONFIG": "/path/to/selfheal.config.json"
}
}
}
}
my-server 中的所有工具都会重新暴露,并内置自愈功能。
工具
| 工具 | 描述 |
|---|---|
wrap_call | 执行 HTTP 调用,并启用重试和断路器 |
circuit_status | 检查任意目标的健康状态 |
circuit_reset | 修复问题后重置断路器 |
metrics | 成功率、延迟和主要错误 |
recent_errors | 查看近期故障及完整详情 |
代理模式新增工具
| 工具 | 描述 |
|---|---|
selfheal_metrics | 所有代理调用的指标 |
selfheal_circuits | 所有目标的断路器状态 |
selfheal_recent_errors | 所有目标的近期错误 |
配置
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
SELFHEAL_CONFIG | ./selfheal.config.json | 配置文件路径 |
SELFHEAL_MAX_RETRIES | 3 | 最大重试次数 |
SELFHEAL_BASE_DELAY_MS | 1000 | 退避的基础延迟 |
SELFHEAL_MAX_DELAY_MS | 30000 | 最大延迟上限 |
SELFHEAL_CIRCUIT_THRESHOLD | 5 | 触发断路器的失败次数 |
SELFHEAL_CIRCUIT_COOLDOWN_MS | 120000 | 半开状态测试前的冷却时间 |
工作原理
Agent → SelfHeal MCP → [Retry + Circuit Breaker] → Target API/MCP Server
↓
Metrics Collector
- 收到请求 — Agent 调用工具
- 检查断路器 — 如果目标失败次数过多,则立即拒绝请求
- 执行并重试 — 尝试调用,遇到暂时性错误时采用指数退避重试
- 记录指标 — 记录成功或失败、耗时和尝试次数
- 更新断路器 — 跟踪每个目标的连续失败次数
安装
MCPize(推荐)
一键安装并使用托管服务:在 MCPize 上安装
npm
npx selfheal-mcp
PyPI
不适用 — 这是一个 TypeScript 服务。Python 替代方案请参见 LeadEnrich MCP。
许可证
MIT — 由 Freedom Engineers 构建
相关项目
- SiteHealth MCP — 全面的网站健康审计
- LeadEnrich MCP — 阶梯式线索丰富
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。