Skip to main content
Glama
oaslananka

MCP Health Monitor

mcp-health-monitor

MCP server health monitoring, uptime tracking, Azure DevOps pipeline status, and alert evaluation through natural-language tools.

npm version npm downloads License: MIT Node.js

What This Does

mcp-health-monitor keeps a registry of the MCP servers you care about, performs real MCP handshakes against them, records health history in SQLite, and reports uptime, latency, and alert thresholds back through MCP tools. It also tracks Azure DevOps pipelines so app health and delivery health can be checked from the same place.

Quick Start

Run the monitor over stdio:

npx -y mcp-health-monitor

Example Claude Desktop or VS Code MCP entry:

{
  "name": "mcp-health-monitor",
  "version": "1.0.2",
  "mcpName": "io.github.oaslananka/mcp-health-monitor",
  "description": "Monitor MCP server health, uptime, response times, and Azure DevOps pipelines",
  "transport": "stdio",
  "command": "npx",
  "args": ["-y", "mcp-health-monitor"]
}

Tools Reference

Tool

Purpose

Typical prompt

register_server

Save an MCP server to monitor

Register https://example.com/mcp as prod-gateway

check_server

Run a live health check for one server

Check prod-gateway now

check_all

Check all registered servers

Check all my MCP servers

get_uptime

Return uptime plus latency stats

Show 24h uptime for prod-gateway

get_dashboard

Return JSON dashboard data

Give me a 24h dashboard

get_report

Return a Markdown report

Generate a Markdown health report for 24h

list_servers

Show registered servers

List all monitored servers

unregister_server

Remove a server

Stop monitoring local-debugger

set_alert

Configure thresholds

Alert if prod-gateway exceeds 500ms or drops below 99% uptime

get_monitor_stats

Show monitor-level stats

How many checks has the monitor recorded?

register_azure_pipelines

Register Azure pipeline groups

Track CI and Publish pipelines for my repo

check_pipeline_status

Read latest Azure pipeline runs

Check pipeline status for my release group

get_pipeline_logs

Fetch Azure build logs

Show the failed logs for the latest Publish build

check_all_projects

Combine MCP and Azure health

Check all projects

Azure DevOps Integration

Register a pipeline group with an org, project, pipeline names, and a PAT:

register_azure_pipelines name="mcp-health-monitor" organization="oaslananka" project="open-source" pipeline_names=["mcp-health-monitor CI","mcp-health-monitor Publish"] pat_token="..."

PAT tokens are stored as base64 in the local SQLite database for v1.0. This is encoding, not encryption. See credential storage notes.

Alert Configuration

Use set_alert to configure one server:

Field

Meaning

max_response_time_ms

Alert when a check exceeds this latency

min_uptime_percent

Alert when the selected uptime window drops below this value

consecutive_failures_before_alert

Alert after this many non-up results in a row

Alerts are evaluated inline by check_server, check_all, and get_dashboard. Webhook delivery is planned for v1.1, and no webhook MCP tool is shipped in v1.0.x.

Data Storage

  • Default database path: ~/.mcp-health-monitor/health.db

  • Override path: HEALTH_MONITOR_DB=/custom/path/health.db

  • Optional background scheduler: HEALTH_MONITOR_AUTO_CHECK=1

  • HTTP server health endpoint: GET /health

  • Example configuration: .env.example

The DB uses WAL mode on file-backed databases and applies schema migrations automatically on startup.

Docker

Build and run:

docker build -t mcp-health-monitor .
docker run --rm -p 3000:3000 -e HEALTH_MONITOR_AUTO_CHECK=1 mcp-health-monitor

Then check:

curl http://localhost:3000/health

Development

npm install
npm run build
npm test
npm run test:integration
npm run lint
npm run lint:test
npm run format:check

Use npx --yes -p node@20.19.0 -p npm@10.8.2 npm <command> on workstations where the default Node runtime is newer than the project target.

Architecture

High-level module map:

  • src/app.ts: MCP tool registration and response formatting

  • src/checker.ts: Live MCP connectivity probes with retry/backoff

  • src/registry.ts: SQLite read/write paths for servers, checks, and pipeline records

  • src/db.ts + src/migrations.ts: Connection setup and schema upgrades

  • src/server-http.ts + src/mcp.ts: HTTP and stdio entrypoints

  • src/scheduler.ts: Optional background auto-check loop

More detail lives in architecture.md.

Roadmap

Detailed milestone planning lives in ROADMAP.md.

  • v1.0: Core monitoring, uptime, alerts, Azure pipelines, Markdown reports

  • v1.1: Webhook notifications for Slack, Discord, and custom endpoints

  • v1.2: Multi-provider pipeline and generic HTTP monitoring

  • v2.0: Encrypted PAT storage and multi-user support

Security

Read SECURITY.md for vulnerability reporting and docs/security.md for implementation-specific storage details.

Contributing

See contributing.md for setup, standards, and PR expectations.

License

MIT

Available Tools

14 tools
check_allCheck All ServersB
Read-only

Check health of all registered MCP servers in parallel.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeout_msNo
tagsNoFilter by tags

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the behavioral trait 'in parallel', which is valuable but does not disclose other traits like rate limits or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single short sentence is concise but lacks structure; it omits important details that could be added without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple health check tool with 2 parameters and no output schema, the description is minimally adequate but does not explain return values, error scenarios, or the parallel behavior in detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (tags has description, timeout_ms does not). The description does not add any parameter explanation, so the agent must rely solely on schema for parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Check health') and the resource ('all registered MCP servers') with a specific detail ('in parallel'), distinguishing it from siblings like 'check_server' (singular) and 'check_all_projects' (different resource).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like 'check_server' or 'check_pipeline_status'. The description mentions parallel execution but does not specify context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_all_projectsCheck All Projects HealthA
Read-only

Check both MCP server health and Azure DevOps pipeline status across all registered projects.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeout_msNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and non-destructive behavior. The description adds the scope (across all projects) but omits potential issues like partial failures or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with 14 words, front-loaded with key action, no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple health check tool, but missing details about output format and the timeout parameter's role. No output schema exists to compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter (timeout_ms) with 0% description coverage, and the description does not mention it, failing to provide guidance on usage or impact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it checks both MCP server health and Azure DevOps pipeline status across all projects, distinguishing it from sibling tools like check_pipeline_status (single pipeline) and check_server (single server).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for a comprehensive health overview but does not explicitly clarify when to prefer this tool over siblings like check_all or get_monitor_stats. No exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_pipeline_statusCheck Azure Pipeline StatusA
Read-only

Get the latest run status of registered Azure DevOps pipelines for one group or all groups.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_nameNoFilter by group name (e.g. "mcp-ssh-tool"). Omit for all groups.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and destructiveHint=false, establishing a safe read operation. The description confirms this with 'Get', but adds no further behavioral details such as response format, error handling, or performance implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence of 14 words, containing no redundant information. It efficiently conveys the tool's purpose and filter capability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema), the description adequately covers the core functionality. It lacks detail on the return structure or edge cases, but is sufficient for a straightforward read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents the 'group_name' parameter as filtering by group name with an example. The tool description adds no additional meaning beyond restating 'one group or all groups'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), the resource ('latest run status of registered Azure DevOps pipelines'), and the scope ('one group or all groups'). It effectively differentiates from sibling tools like 'get_pipeline_logs' and 'check_all'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention specific contexts or exclusions. For example, it could indicate that 'check_all' is for a broader overview or that 'get_pipeline_logs' is for detailed logs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_serverCheck Server HealthC
Read-only

Check the health of a registered MCP server, list tools, and measure response time.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesServer name to check
timeout_msNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that the tool lists tools and measures response time, which is useful but doesn't disclose significant behavioral traits beyond what annotations indicate. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that concisely states the tool's actions, though listing three actions in one sentence could be clearer with separate points.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and only two parameters, the description fails to explain what 'health' means, what the response format is, or how the timeout parameter affects behavior, leaving the agent without sufficient context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (only 'name' is described). The description does not add meaning for 'timeout_ms' or clarify parameter formats, leaving gaps that the schema alone doesn't fill.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks health, lists tools, and measures response time for a registered MCP server. It distinguishes from siblings like check_pipeline_status but could be more specific versus check_all.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like check_all or list_servers, leaving the agent to infer context from sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dashboardGet Health DashboardA
Read-only

Get a dashboard overview of all registered MCP servers with uptime and performance stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo
include_tool_statsNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and destructiveHint false. Description adds behavioral context: returns a dashboard of all servers with specific metrics (uptime, performance). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, concise sentence that immediately conveys purpose. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple read-only dashboard tool with clear annotations. Could mention the return format or what 'performance stats' includes, but not critical given simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameter descriptions in either schema or tool description. Schema has 0% description coverage. While parameter names and defaults hint at meaning (hours for time range, include_tool_stats flag), the description fails to explain them, forcing inference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it retrieves a dashboard overview of all registered MCP servers with uptime and performance stats. Distinct from sibling tools like get_uptime (specific server) and get_monitor_stats (detailed stats).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for use (overview of all servers), but does not explicitly mention when not to use or list alternatives. Suggests it's for high-level monitoring.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_monitor_statsGet Monitor StatisticsA
Read-only

Get statistics about the health monitor itself, including database activity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds value by specifying that statistics include database activity, providing additional context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence front-loads the purpose and includes relevant detail. Every word earns its place with no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and informative annotations, the description is largely complete. It specifies the resource and includes database activity, but could be enhanced by hinting at return format or example statistics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so the description needs no parameter explanations. Baseline for 0 params is 4, and the description correctly implies no inputs needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'statistics about the health monitor itself', including specific detail 'database activity'. It distinguishes from sibling tools like get_dashboard or get_report.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for monitor health statistics but provides no explicit guidance on when to use this tool versus alternatives like check_server or get_uptime. Usage context is only indirectly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pipeline_logsGet Pipeline LogsA
Read-only

Fetch logs from a specific Azure DevOps build to investigate pipeline failures.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_nameYesPipeline group name
pipeline_nameYesSpecific pipeline name (e.g. "mcp-ssh-tool CI")
build_idNoSpecific build ID. If omitted, fetches the latest build.
failed_onlyNoOnly return logs from failed steps

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds 'to investigate pipeline failures' but doesn't disclose additional behavioral traits like pagination or log format. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no fluff, directly states purpose and context. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description could explain return format (e.g., text logs), but the input parameters are fully described in the schema. The addition of 'to investigate pipeline failures' provides usage context. Slightly incomplete but adequate for a simple logs tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add extra meaning beyond the schema; it mentions investigating failures but doesn't tie directly to parameters like failed_only. It meets the minimum but doesn't enhance understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches logs from a specific Azure DevOps build to investigate pipeline failures. The verb 'fetch' and resource 'logs' are specific, and the context of investigating failures distinguishes it from sibling tools like check_pipeline_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for investigating pipeline failures but does not explicitly state when not to use it or mention alternatives like check_pipeline_status for overall status checks. The intent is clear but lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reportGet Health Report (Markdown)A
Read-only

Get a human-readable Markdown health report for all servers. Paste directly into chat or docs.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds behavioral context by stating the output is human-readable Markdown and covers all servers. This goes beyond annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the purpose. Every word adds value; no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one optional parameter and no output schema. The description covers purpose and output format adequately but omits description of the parameter, leaving a gap for agents to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention the 'hours' parameter. The agent must rely solely on the schema (which has constraints but no description) to understand its meaning. For a simple parameter, this is a notable gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'get', the resource 'health report', the scope 'all servers', and the output format 'Markdown'. It distinguishes itself from siblings like 'check_server' (per-server) and 'get_dashboard' (likely visual).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions pasting into chat or docs, implying usage context. However, it does not specify when to use this tool versus alternatives like 'check_server' or 'check_all', nor does it provide exclusions. The guidance is clear but incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_uptimeGet Uptime StatisticsA
Read-only

Get uptime history and statistics for a registered MCP server.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesServer name
hoursNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false. The description adds 'history and statistics', aligning with read-only behavior, but provides no additional behavioral traits like permissions or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no fluff, front-loaded with verb and resource. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, but the description does not mention return format or statistics included. For a simple 2-param tool, it is moderately complete but could clarify output to fully compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (only 'name' has a schema description). The description adds no parameter semantics; it does not explain 'hours' meaning or usage beyond what the schema shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'uptime history and statistics for a registered MCP server'. It is distinct from sibling tools like check_server (health check) and get_monitor_stats (monitoring stats).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly guide when to use this tool versus alternatives like check_server or get_monitor_stats. Usage is implied by the context of 'uptime history', but no exclusions or alternative tool names are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_serversList Registered ServersC
Read-only

List all registered MCP servers with their current status.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
statusNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds nothing beyond stating the action. It does not disclose any additional behavioral traits such as rate limits, data freshness, or implications of filtering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, no fluff, but lacks essential information about parameters. It is concise at the expense of completeness. For a tool with 2 optional params, a brief mention of filtering would improve without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has two optional parameters and no output schema, the description should explain the filtering options and return value. It only says 'with their current status' which is vague. The description is insufficient for an agent to understand the full capability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not explain the 'tags' or 'status' parameters. The description mentions 'all' servers but does not hint at optional filtering, leaving the agent unaware of how to use the input parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'list' and resource 'registered MCP servers', with 'current status' added. This distinguishes it from sibling tools like check_server (which likely checks a specific server) and register/unregister (which mutate). The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like check_all, get_dashboard, etc. The description does not provide context about typical use cases or comparisons, leaving the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_azure_pipelinesRegister Azure DevOps PipelinesB

Register Azure DevOps pipelines to monitor for CI, publish, and mirror status.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFriendly name for this pipeline group (e.g. "mcp-ssh-tool")
organizationYes
projectYes
pipeline_namesYesAzure pipeline names to monitor (e.g. ["mcp-ssh-tool CI", "mcp-ssh-tool Publish"])
pat_tokenYesAzure DevOps PAT - stored as base64 encoding in the local DB

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate it is not read-only, not destructive, and has open-world side effects. The description does not add behavioral details beyond the purpose, such as that it persists registration data, requires PAT authentication, or updates existing records. Key behaviors like storing the token as base64 are only in the schema, not the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence of 12 words with no redundancy. It efficiently conveys the core purpose without extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 required parameters and no output schema, the description is too minimal. It does not explain what happens after registration, whether updates or overwrites occur, or any return value. Important context like prerequisites (e.g., PAT scopes) or error handling is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 60% (3 of 5 params have descriptions). The tool description does not add any parameter-specific information beyond what the schema already provides. For the params 'organization' and 'project' without schema descriptions, the description fails to clarify them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (register), the resource (Azure DevOps pipelines), and the purpose (to monitor for CI, publish, and mirror status). This distinguishes it from sibling tools like 'register_server' which register a different resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for setting up monitoring of pipelines, but does not explicitly state when to use this tool versus alternatives (e.g., 'register_server') or provide any 'when not to use' guidance. No exclusions or context for selection are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_serverRegister MCP ServerA

Register an MCP server to monitor. Supports http, sse, and stdio transports.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesUnique name for this MCP server
typeYesTransport type: http (Streamable HTTP), sse (legacy SSE), stdio
urlNoURL for http/sse servers (e.g. https://mcp-ssh-tool.onrender.com/mcp)
commandNoCommand for stdio servers (e.g. npx mcp-debug-recorder)
argsNoArgs for stdio command
tagsNoTags for grouping
alert_on_downNoAlert when server goes down
check_interval_minutesNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate write-only and non-destructive behavior. Description adds transport support context but omits details like immediate monitoring start, authentication needs, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is front-loaded with the main action and resource, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, no output schema, and sibling management tools, the description is too minimal. It does not explain return value, error conditions, or how registration affects monitoring.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover 88% of parameters; the description adds value by explaining the 'type' parameter enum values (http, sse, stdio) and their meanings.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Register') and the resource ('an MCP server to monitor'), and distinguishes from sibling tools like list_servers and unregister_server by noting supported transports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for registering new servers but lacks explicit guidance on prerequisites, when to use vs alternatives like register_azure_pipelines, or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_alertSet Alert ThresholdsA

Configure alert thresholds for response time, uptime, and consecutive failures.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesServer name
max_response_time_msNoAlert if response time exceeds this
min_uptime_percentNoAlert if uptime drops below this
consecutive_failures_before_alertNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-destructive mutation (readOnlyHint=false, destructiveHint=false). The description adds context that it configures specific metrics, though it doesn't elaborate on side effects (e.g., whether existing alerts are overwritten) or authorization needs. With annotations covering safety, the description provides reasonable added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, clear sentence with no wasted words. It efficiently conveys the tool's purpose, though a slightly more structured format (e.g., listing fields) could improve readability. Still well within acceptable conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 4 parameters and no output schema. The description does not explain return values, confirmation behavior, or interaction effects. For a configuration operation, details on success indicators or apply timing would improve completeness. Adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% (3 of 4 parameters have descriptions). The tool description does not add extra meaning beyond what the schema provides, and it fails to compensate for the undocumented 'consecutive_failures_before_alert' parameter. Thus, it adds minimal value semantically.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool configures alert thresholds for response time, uptime, and consecutive failures. It uses specific verbs and resources, distinguishing it from sibling tools like check_all or get_uptime which are for monitoring or reading data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. It is implied for setting thresholds, but no when-not conditions or comparisons to sibling configuration tools are provided. Adequate but lacks proactive direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unregister_serverUnregister ServerB
Destructive

Remove a server from monitoring.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already set destructiveHint=true, so the description adds minimal extra behavioral context. It does not detail consequences (e.g., irreversible? affects ongoing checks?) beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence with no redundancy. It is front-loaded and efficient, though it could arguably benefit from a bit more detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (one parameter, destructive hint, no output schema), the description barely covers the essentials. It lacks parameter explanation and post-condition information, leaving an agent with insufficient context for safe use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description provides no explanation of the 'name' parameter (e.g., what identifier/format). The agent has no additional context beyond the schema's type definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Remove a server from monitoring' clearly identifies the action (remove), resource (server), and context (from monitoring). This distinguishes it from siblings like 'register_server' (add) and 'list_servers' (list).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for unregistering a server that has been previously registered, but it does not explicitly state when to use it over alternatives or provide exclusions. No guidance on prerequisites or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 14 tool updatesv1.0.3
    • First observedcheck_all
    • First observedcheck_all_projects
    • First observedcheck_pipeline_status
    • First observedcheck_server
    • First observedget_dashboard
    • First observedget_monitor_stats
    • First observedget_pipeline_logs
    • First observedget_report
    • First observedget_uptime
    • First observedlist_servers
    • First observedregister_azure_pipelines
    • First observedregister_server
    • First observedset_alert
    • First observedunregister_server

TDQS

A3.7/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between 'check_all' and 'check_all_projects', and between 'get_dashboard' and 'get_report', which could cause minor confusion. However, descriptions clarify that 'check_all_projects' includes Azure DevOps pipelines, and 'get_report' is specifically for Markdown output, helping to differentiate them.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern throughout, such as 'check_all', 'get_dashboard', 'register_server', and 'set_alert'. All tools use snake_case, and verbs like 'check', 'get', 'register', and 'set' are applied predictably across the set, making it easy to understand their functions.

Tool Count5/5

With 14 tools, the count is well-scoped for a health monitoring server, covering core operations like checking health, managing registrations, and handling alerts. Each tool serves a clear purpose, such as 'check_pipeline_status' for Azure DevOps and 'get_uptime' for historical data, without unnecessary redundancy.

Completeness5/5

The tool set provides complete coverage for the MCP health monitoring domain, including health checks, registration, alert configuration, and reporting. It supports both MCP servers and Azure DevOps pipelines, with tools for fetching logs, uptime stats, and dashboards, ensuring agents can handle all typical monitoring workflows without gaps.

Maintenance

ActivityNo data
ResponsivenessSyncing

Related MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/oaslananka/mcp-health-monitor'

If you have feedback or need assistance with the MCP directory API, please join our Discord server