
MCP Health Monitor
io.github.oaslanankaPublished by GitHub account oaslanankav1.4.0Updated Oct 24, 2026
Monitor MCP, CI, and HTTP targets with health history, TLS expiry, assertions, and diagnostics
Overview
Local MCP server that lets an assistant register and health-check MCP servers, GitHub Actions, GitLab pipelines and HTTP endpoints, with history and reports.
- What you can do
- Register, list and remove monitored targets: MCP servers (Streamable HTTP, SSE, opt-in stdio), GitHub Actions workflows, GitLab pipelines and GET-only HTTP endpoints, plus webhook alert targets and a webhook test send. Run live checks on one target or all targets with bounded concurrency, including status, header, body, JSON and TLS-expiry assertions and failed job or step diagnostics. Review history and reporting: uptime and latency, a cross-provider JSON dashboard, a Markdown report and monitor statistics. Configure MCP alert thresholds such as response time, uptime percentage and consecutive failures.
- When to use it
- Useful when you want an assistant to watch CI pipelines, MCP endpoints or service health endpoints and summarize failures, latency or certificate expiry over time. Fits operators and developers who want on-demand or scheduled checks and Markdown reports from one local tool.
- Requirements
- Runs locally over stdio via npx with Node.js 24. Optional GITHUB_TOKEN and GITLAB_TOKEN enable private repositories and higher rate limits; only the variable name is stored. Self-hosted GitLab and private HTTP origins must be allowlisted by environment variable. Local stdio checks need HEALTH_MONITOR_ALLOW_STDIO and an executable allowlist. Webhook secrets require HEALTH_MONITOR_WEBHOOK_ENCRYPTION_KEY. History is kept in a local SQLite database.
Installation
In SourceWeft
- Open MCP Health Monitor in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
health-monitor-mcp
MCP server, CI workflow, and generic HTTP endpoint monitoring with health history, TLS expiry, assertions, diagnostics, and operational reports.
[CI] [codecov] [Release] [License: MIT] [OpenSSF Scorecard] [Node.js]
What This Does
health-monitor-mcp keeps local registries of MCP servers, GitHub Actions workflows, GitLab pipelines, and generic HTTP endpoints. It performs live checks, records bounded evidence in SQLite, evaluates MCP alert thresholds, and returns JSON or Markdown diagnostics suitable for agents and operators.
Supported target transports:
- Streamable HTTP for current remote MCP servers.
- SSE for legacy MCP servers.
- stdio for trusted local executables after explicit opt-in.
- GitHub Actions workflow runs, failed jobs, and failed steps for public or private repositories.
- GitLab CI/CD pipelines, failed jobs, stages, refs, commits, URLs, and bounded trace excerpts for GitLab.com or allowlisted self-hosted instances.
- Generic HTTP/HTTPS endpoints with status, header, body-substring, JSON-value, redirect, latency, and TLS-expiry checks.
Azure DevOps monitoring was retired in v1.1.0. GitHub Actions shipped in v1.2.0 and GitLab CI/CD in v1.3.0; generic HTTP/TLS monitoring completes the current multi-provider feature line.
Quick Start
Run the published package noninteractively with Node.js 24:
Example MCP client configuration:
Tools
Expected configuration mistakes return stable error codes and remediation hints, including 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, and WEBHOOK_NOT_FOUND.
Register Targets
Streamable HTTP:
Legacy SSE:
Trusted local stdio:
The command field must contain one executable only. Put package names and flags in args. Remote-safe runtime profiles always disable stdio.
Register GitHub Actions
Public repositories can be checked without authentication. Private repositories and higher API rate limits require a token with Actions read access:
Only the environment-variable name in token_env is stored. The token value is read at check time and is never written to SQLite, logs, reports, or tool responses.
Register GitLab Pipelines
Public GitLab.com projects can be checked without authentication. Private projects require a token exposed only through the runtime environment:
GitLab.com is allowed by default. A self-hosted instance must use an HTTPS origin and be explicitly allowed:
Only token_env is persisted. Token values, response bodies, and full traces are never stored or returned. Failed-job trace excerpts are range-requested, sanitized, and bounded.
Register HTTP Targets
Public HTTP and HTTPS endpoints are allowed by default. The provider sends GET requests only and supports bounded status, header, body-substring, JSON scalar, and TLS-expiry assertions:
Private, loopback, link-local, and other non-public addresses are blocked. A trusted private origin is available only in the full runtime profile and must be explicitly listed:
Every DNS answer and every redirect destination is revalidated. Responses are capped at 262144 bytes; full response bodies and certificate chains are never stored or returned.
Register Webhook Targets
Webhook targets receive alert notifications via HTTPS POST with optional HMAC-SHA256 signing. Secrets are encrypted at rest when HEALTH_MONITOR_WEBHOOK_ENCRYPTION_KEY is configured (32+ characters); otherwise secret registration is rejected.
Secrets are never returned in listings or diagnostics—always redacted. Delivery diagnostics include status, latency, HTTP status code, and error message.
Health Checks and Reports
HEALTH_MONITOR_MAX_CONCURRENCY limits MCP, GitHub Actions, GitLab, and HTTP checks through one shared scheduled and interactive queue. Results preserve MCP-then-GitHub-then-GitLab-then-HTTP registration order even when checks complete out of order.
Alerts
Alert findings are evaluated by check_server, check_all, and get_dashboard. Configure webhook targets with register_webhook to receive alert notifications.
Configuration
HTTP Deployment
The server binds to 127.0.0.1 by default. A non-loopback bind requires a remote-safe profile, bearer token, and Origin allowlist.
GET /health is unauthenticated and exposes only status and version. POST /mcp requires Authorization: Bearer <token>.
Docker
Persist /data; otherwise the SQLite database disappears with the container.
Development
The repository pins Node.js 24.18.0 and pnpm 11.14.0 through .mise.toml.
Useful gates:
Coverage and Test Analytics
Jest remains the blocking coverage gate with repository-local thresholds. The CI validation job runs
all unit and integration tests once, writes coverage/lcov.info and
reports/junit/junit.xml, and uploads both reports to Codecov. Codecov project and patch statuses
start as informational with target: auto and a 1% tolerance, adding pull-request diff coverage,
file-level visibility, and failed-test analytics without duplicating the local merge gate.
Codecov Bundle Analysis is intentionally not enabled. This package ships Node.js entrypoints compiled
with tsc; it does not currently produce a Rollup, Vite, or Webpack application bundle whose download
size is a product metric.
Architecture and Roadmap
Agent Runtime Configuration
This repository owns its product-specific MCP configuration, plugin manifest, and skills:
Security and Contributing
Report vulnerabilities through GitHub Private Vulnerability Reporting. See SECURITY.md and docs/security.md.
Contribution setup and standards are documented in docs/contributing.md. Usage questions belong in GitHub Discussions; actionable work belongs in issues.
License
MIT
Source: README.md at commit 77e4dcc
Tools
0Version history
1- v1.4.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts