mcpField
H
Health Monitor

Health Monitor

本地服务
github.com云与基础设施23 周前更新

关于 Health Monitor

Health Monitor 是用于跟踪 MCP 服务、CI 流水线和 HTTP 端点的 TypeScript MCP 服务。它在 SQLite 中保存有界检查证据,并整合健康历史、断言、告警和跨平台报告。

主要功能

  1. 01通过 HTTP、SSE 或显式启用的 stdio 监测 MCP 服务
  2. 02检查 GitHub Actions 与 GitLab 流水线
  3. 03断言 HTTP 响应并检查 TLS 到期时间
  4. 04在 SQLite 中保存有界健康历史
  5. 05配置告警与 Webhook 通知
  6. 06生成仪表板和报告

适用场景

  1. 01跟踪 MCP 服务的正常运行时间与延迟
  2. 02检查 CI 失败任务和流水线记录
  3. 03验证端点响应与证书到期时间
  4. 04查看跨平台健康报告和告警

MCP 相关

它作为 MCP 服务提供注册和检查 MCP 目标、CI 流水线、HTTP 端点及 Webhook 的工具,并可查询历史、告警、仪表板和报告。支持 stdio 与 Streamable HTTP。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"health-monitor": {
"command": "npx",
"args": [
"-y",
"health-monitor-mcp"
],
"env": {
"HEALTH_MONITOR_DB": "<HEALTH_MONITOR_DB>",
"HEALTH_MONITOR_AUTO_CHECK": "<HEALTH_MONITOR_AUTO_CHECK>",
"HEALTH_MONITOR_RETENTION_DAYS": "<HEALTH_MONITOR_RETENTION_DAYS>",
"HEALTH_MONITOR_MAX_CONCURRENCY": "<HEALTH_MONITOR_MAX_CONCURRENCY>",
"GITHUB_TOKEN": "<GITHUB_TOKEN>",
"GITLAB_TOKEN": "<GITLAB_TOKEN>",
"HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLIST": "<HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLIST>",
"HEALTH_MONITOR_HTTP_TARGET_ALLOWLIST": "<HEALTH_MONITOR_HTTP_TARGET_ALLOWLIST>"
}
}
}
}
启动命令npx -y health-monitor-mcp
需要配置的环境变量
HEALTH_MONITOR_DBCustom path for the SQLite database
HEALTH_MONITOR_AUTO_CHECKSet to '1' to enable background scheduled checks
HEALTH_MONITOR_RETENTION_DAYSNumber of days to retain health check history
HEALTH_MONITOR_MAX_CONCURRENCYMaximum concurrent scheduled and interactive server checks
GITHUB_TOKEN密钥Optional GitHub token with Actions read access for private repositories and higher API rate limits
GITLAB_TOKEN密钥Optional GitLab token with read access to private projects, pipelines, jobs, and traces
HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLISTComma-separated self-hosted GitLab HTTPS origins allowed for monitoring
HEALTH_MONITOR_HTTP_TARGET_ALLOWLISTComma-separated private HTTP(S) origins allowed only in the full runtime profile

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmhealth-monitor-mcp1.4.0

工具

22

收录的工具列表 · 更新于 3 周前

参数类型必填说明
namestring是此 GitHub Actions 目标的唯一本地名称
tagsarray否用于分组的标签
ownerstring是GitHub 用户或组织
branchstring否工作流运行的可选分支筛选条件
workflowstring是工作流数字 ID 或 .yml/.yaml 文件名
token_envstring否包含 GitHub 令牌的环境变量;令牌值不会被持久化
repositorystring是GitHub 仓库名称
check_interval_minutesinteger否

详细介绍

health-monitor-mcp

用于监控 MCP 服务、CI 工作流和通用 HTTP 端点的 MCP 服务,提供健康历史记录、TLS 过期时间、断言、诊断信息和运维报告。

CI codecov Release License: MIT OpenSSF Scorecard Node.js

功能说明

health-monitor-mcp 会维护 MCP 服务、GitHub Actions 工作流、GitLab 流水线和通用 HTTP 端点的本地注册表。它会执行实时检查,将有限的证据记录到 SQLite 中,评估 MCP 告警阈值,并返回适用于 Agent 和运维人员的 JSON 或 Markdown 诊断信息。

支持的目标传输方式:

  • Streamable HTTP,适用于当前的远程 MCP 服务。
  • SSE,适用于旧版 MCP 服务。
  • stdio,适用于明确选择启用后的可信本地可执行文件。
  • GitHub Actions 工作流运行、失败的作业和失败的步骤,适用于公开或私有仓库。
  • GitLab CI/CD 流水线、失败的作业、阶段、引用、提交、URL,以及有限的跟踪日志摘录,适用于 GitLab.com 或允许列表中的自托管实例。
  • 通用 HTTP/HTTPS 端点,支持状态、标头、正文子串、JSON 值、重定向、延迟和 TLS 过期检查。

Azure DevOps 监控已在 v1.1.0 中停止维护。GitHub Actions 已在 v1.2.0 中推出,GitLab CI/CD 已在 v1.3.0 中推出;通用 HTTP/TLS 监控完善了当前的多提供商功能系列。

快速开始

使用 Node.js 24 以非交互方式运行已发布的软件包:

npx -y health-monitor-mcp --version

MCP 客户端配置示例:

{
  "mcpServers": {
    "health-monitor": {
      "command": "npx",
      "args": ["-y", "health-monitor-mcp"]
    }
  }
}

工具

工具用途典型提示词
register_server注册 MCP 目标Register inventory-prod
check_server执行一次 MCP 健康检查Check inventory-prod now
register_github_actions注册 GitHub 工作流Monitor ci.yml in owner/repo
check_github_actions检查最新的 GitHub 运行记录及失败作业/步骤诊断Check repo-ci now
register_gitlab_pipeline注册 GitLab 项目流水线Monitor group/project on GitLab
check_gitlab_pipeline检查最新流水线及有限范围内的失败作业跟踪记录Check gitlab-ci now
register_http_target注册仅支持 GET 的 HTTP/HTTPS 端点Monitor the public health endpoint
check_http_target检查响应断言和 TLS 过期时间Check service-health now
register_webhook注册用于发送警报的 webhook 目标Register alert-webhook for notifications
test_webhook发送测试载荷并返回投递诊断信息Test alert-webhook delivery
check_all以有限并发检查所有类型的目标Check all production targets
get_uptime返回 MCP 运行时间和延迟历史记录Show 24h uptime for inventory-prod
get_dashboard返回跨提供方 JSON 仪表板Give me a 24h dashboard
get_report返回跨提供方 Markdown 报告Generate a 24h health report
list_servers列出已注册的 MCP 目标List monitored MCP servers
list_github_actions列出已注册的 GitHub 工作流目标List monitored workflows
list_gitlab_pipelines列出已注册的 GitLab 流水线目标List monitored GitLab pipelines
list_http_targets列出已注册的 HTTP 目标List monitored HTTP endpoints
list_webhooks列出已注册的 webhook 目标List webhook targets
unregister_server移除 MCP 目标Stop monitoring local-debugger
unregister_github_actions移除 GitHub 目标及其历史记录Stop monitoring repo-ci
unregister_gitlab_pipeline移除 GitLab 目标及其历史记录Stop monitoring gitlab-ci
unregister_http_target移除 HTTP 目标及其历史记录Stop monitoring service-health
unregister_webhook移除 webhook 目标及其历史记录Stop monitoring alert-webhook
set_alert配置 MCP 健康阈值Alert if inventory-prod exceeds 500ms
get_monitor_stats检查跨提供方的监控活动How many checks are stored?
预期的配置错误会返回稳定的错误代码和修复提示,包括 SERVER_NOT_FOUND、GITHUB_ACTIONS_TARGET_NOT_FOUND、GITLAB_PIPELINE_TARGET_NOT_FOUND、GITLAB_BASE_URL_NOT_ALLOWED、HTTP_TARGET_NOT_FOUND、HTTP_TARGET_URL_NOT_ALLOWED、NO_SERVERS_REGISTERED、STDIO_DISABLED、STDIO_COMMAND_REJECTED、WEBHOOK_ENCRYPTION_KEY_REQUIRED、WEBHOOK_REGISTRATION_FAILED 和 WEBHOOK_NOT_FOUND。

注册目标

Streamable HTTP:

register_server name="inventory-prod" type="http" url="https://inventory.example.com/mcp" tags=["production","inventory"]

传统 SSE:

register_server name="legacy-search" type="sse" url="https://search.example.com/sse" tags=["legacy"]

受信任的本地 stdio:

export HEALTH_MONITOR_ALLOW_STDIO=1
export HEALTH_MONITOR_STDIO_ALLOWLIST=npx,node
register_server name="local-debugger" type="stdio" command="npx" args=["-y","mcp-debug-recorder"] tags=["local"]

command 字段只能包含一个可执行文件。将包名和标志放在 args 中。远程安全运行时配置始终会禁用 stdio。

注册 GitHub Actions

无需身份验证即可检查公开仓库。私有仓库和更高的 API 速率限制需要具有 Actions 读取权限的令牌:

export GITHUB_TOKEN=your-runtime-secret
register_github_actions name="repo-ci" owner="oaslananka" repository="health-monitor-mcp" workflow="ci.yml" branch="main" token_env="GITHUB_TOKEN" tags=["production","ci"]
check_github_actions name="repo-ci" timeout_ms=5000

只会存储 token_env 中的环境变量名称。令牌值会在检查时读取,绝不会写入 SQLite、日志、报告或工具响应。

注册 GitLab Pipelines

无需身份验证即可检查 GitLab.com 上的公开项目。私有项目需要使用仅通过运行时环境提供的令牌:

export GITLAB_TOKEN=your-runtime-secret
register_gitlab_pipeline name="gitlab-ci" project="group/project" ref="main" token_env="GITLAB_TOKEN" tags=["production","ci"]
check_gitlab_pipeline name="gitlab-ci" timeout_ms=5000

默认允许 GitLab.com。自托管实例必须使用 HTTPS 源站,并且必须明确列入允许列表:

export HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLIST=https://gitlab.internal.example
register_gitlab_pipeline name="private-gitlab" base_url="https://gitlab.internal.example" project="platform/service" token_env="GITLAB_TOKEN"

只会持久化 token_env。令牌值、响应正文和完整跟踪记录绝不会被存储或返回。失败任务的跟踪摘录会通过范围请求获取、经过清理并限制长度。

注册 HTTP 目标

默认允许公开的 HTTP 和 HTTPS 端点。提供程序只发送 GET 请求,并支持对状态、标头、正文子字符串、JSON 标量和 TLS 过期时间进行有界断言:

register_http_target name="service-health" url="https://status.example.com/health" expected_statuses=[200] header_assertions=[{"name":"x-ready","equals":"yes"}] body_contains=["ready"] json_assertions=[{"path":"status","equals":"ready"}] tls_expiry_days=30 tags=["production","http"]
check_http_target name="service-health" timeout_ms=5000

私有、环回、链路本地和其他非公开地址均会被阻止。只有在 full 运行时配置中才能使用受信任的私有源站,并且必须将其明确列出:

export HEALTH_MONITOR_HTTP_TARGET_ALLOWLIST=https://status.internal.example:8443

每个 DNS 应答和每个重定向目标都会重新验证。响应大小上限为 262144 字节;完整响应正文和证书链绝不会被存储或返回。

注册 Webhook 目标

Webhook 目标通过 HTTPS POST 接收告警通知,并可选择使用 HMAC-SHA256 签名。配置 HEALTH_MONITOR_WEBHOOK_ENCRYPTION_KEY(至少 32 个字符)后,密钥会以静态加密方式保存;否则会拒绝注册密钥。

register_webhook name="alert-webhook" url="https://hooks.example/alerts" secret="webhook-secret" events=["down","alert"] tags=["production","alerts"]
test_webhook name="alert-webhook"

列表或诊断信息中绝不会返回密钥——始终会将其脱敏。投递诊断信息包括状态、延迟、HTTP 状态码和错误消息。

健康检查和报告

check_server name="inventory-prod" timeout_ms=5000
check_all timeout_ms=5000 tags=["production"]
get_uptime name="inventory-prod" hours=24
get_dashboard hours=24 include_tool_stats=true
get_report hours=24

HEALTH_MONITOR_MAX_CONCURRENCY 通过一个共享的定时和交互式队列限制 MCP、GitHub Actions、GitLab 和 HTTP 检查的并发数。即使检查完成顺序不同,结果仍会按 MCP、GitHub、GitLab、HTTP 的注册顺序排列。

告警

set_alert name="inventory-prod" max_response_time_ms=500 min_uptime_percent=99 consecutive_failures_before_alert=2

check_server、check_all 和 get_dashboard 会评估告警发现结果。使用 register_webhook 配置 Webhook 目标,以接收告警通知。

配置

变量默认值用途
HEALTH_MONITOR_DB~/.mcp-health-monitor/health.dbSQLite 数据库路径
HEALTH_MONITOR_AUTO_CHECK0设为 1 可启用定期检查
HEALTH_MONITOR_RETENTION_DAYS30健康历史记录保留期限
HEALTH_MONITOR_MAX_CONCURRENCY5定期检查和交互式检查的并发数
GITHUB_TOKEN未设置可选的 GitHub Actions 读取令牌
GITLAB_TOKEN未设置可选的 GitLab 项目/流水线/作业读取令牌
HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLIST未设置允许访问的可自托管 GitLab HTTPS 源
HEALTH_MONITOR_HTTP_TARGET_ALLOWLIST未设置完整配置中允许访问的私有 HTTP(S) 源
HEALTH_MONITOR_ALLOW_STDIO0允许检查可信的本地 stdio
HEALTH_MONITOR_STDIO_ALLOWLIST未设置可选的逗号分隔可执行文件允许列表
HEALTH_MONITOR_HTTP_TOKEN未设置POST /mcp 的 Bearer 令牌
HEALTH_MONITOR_HTTP_ORIGIN_ALLOWLIST未设置允许访问的远程客户端源
HEALTH_MONITOR_HTTP_MAX_BODY_BYTES1048576入站 MCP 请求正文的最大大小
HEALTH_MONITOR_HTTP_BODY_TIMEOUT_MS15000读取入站正文的超时时间
HEALTH_MONITOR_HTTP_STATEFUL_SESSIONS0启用有状态 Streamable HTTP 会话
HEALTH_MONITOR_HTTP_SESSION_TTL_MS1800000有状态会话 TTL
HEALTH_MONITOR_HTTP_MAX_SESSIONS100有状态会话数量上限
HEALTH_MONITOR_WEBHOOK_ENCRYPTION_KEY未设置用于加密 webhook 密钥的 32 个字符以上密钥
HEALTH_MONITOR_WEBHOOK_TIMEOUT_MS5000Webhook 投递超时时间(毫秒)

HTTP 部署

默认情况下,服务绑定到 127.0.0.1。绑定到非回环地址需要使用远程安全配置、Bearer 令牌和 Origin 允许列表。

HOST=0.0.0.0 \
HEALTH_MONITOR_PROFILE=remote-safe \
HEALTH_MONITOR_HTTP_TOKEN=change-me \
HEALTH_MONITOR_HTTP_ORIGIN_ALLOWLIST=https://client.example \
npx -y health-monitor-mcp-http

GET /health 无需身份验证,仅公开状态和版本。POST /mcp 需要 Authorization: Bearer <token>。

Docker

请持久化 /data;否则,容器停止后 SQLite 数据库会消失。

docker volume create health-monitor-data

docker run --rm \
  -v health-monitor-data:/data \
  -p 127.0.0.1:3000:3000 \
  -e HOST=0.0.0.0 \
  -e HEALTH_MONITOR_PROFILE=remote-safe \
  -e HEALTH_MONITOR_HTTP_TOKEN=change-me \
  -e HEALTH_MONITOR_HTTP_ORIGIN_ALLOWLIST=https://client.example \
  ghcr.io/oaslananka/health-monitor-mcp:latest

开发

此仓库通过 .mise.toml 固定使用 Node.js 24.18.0 和 pnpm 11.14.0。

mise trust
mise install
pnpm install --frozen-lockfile
pnpm run ci

常用检查:

pnpm run build
pnpm run typecheck
pnpm run lint
pnpm run lint:test
pnpm run test:coverage
pnpm run test:integration
pnpm run docs:api:check
pnpm run security:supply-chain
pnpm run check:metadata
pnpm run check:package

覆盖率与测试分析

Jest 仍是强制执行的覆盖率门槛,并采用仓库本地阈值。CI 验证任务会运行一次所有单元测试和集成测试,生成 coverage/lcov.info 和 reports/junit/junit.xml,并将两份报告上传到 Codecov。Codecov 项目状态和补丁状态 初始为提示性状态,使用 target: auto 和 1% 的容差,提供 Pull Request 差异覆盖率、 文件级可见性和失败测试分析,同时避免重复执行本地合并门槛。

本项目有意不启用 Codecov Bundle Analysis。此软件包提供由 tsc 编译的 Node.js 入口点;目前不会生成 Rollup、Vite 或 Webpack 应用程序包,因此下载 大小并非产品指标。

架构与路线图

Agent 运行时配置

此仓库负责管理其产品专属的 MCP 配置、插件清单和技能:

文件用途
.claude-plugin/plugin.jsonClaude Code 插件清单
.mcp.json项目本地 MCP 配置
.codex/config.example.tomlCodex CLI 示例
.vscode/mcp.example.jsonVS Code / Copilot 示例
opencode.example.jsoncOpenCode 示例
skills/产品专属监控工作流
docs/agent-runtime-config.md运行时设置与验证

安全与贡献

通过 GitHub Private Vulnerability Reporting 报告漏洞。请参阅 SECURITY.md 和 docs/security.md。

贡献设置和规范记录在 docs/contributing.md 中。用法问题请前往 GitHub Discussions;可采取行动处理的事项请提交到 issues。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。