io.github.cyanheads/devops-status-mcp-server
REMOTE · DEVOPS-STATUS.CASEYJHAND.COM · 2 COMPONENTS · SCANNED SEP 20
Vendor status pages, TLS cert inspection, DNS propagation checks, and incident-response playbooks.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security66
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 6 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability62
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2367 tokens (~338/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the io.github.cyanheads/devops-status-mcp-server server?
io.github.cyanheads/devops-status-mcp-server is a hosted endpoint at https://devops-status.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · devops-status.caseyjhand.com
claude mcp add --transport http cyanheads-devops-status-mcp-server 'https://devops-status.caseyjhand.com/mcp'
{
"mcpServers": {
"cyanheads-devops-status-mcp-server": {
"url": "https://devops-status.caseyjhand.com/mcp"
}
}
} {
"servers": {
"cyanheads-devops-status-mcp-server": {
"type": "http",
"url": "https://devops-status.caseyjhand.com/mcp"
}
}
} [mcp_servers.cyanheads-devops-status-mcp-server] url = "https://devops-status.caseyjhand.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"cyanheads-devops-status-mcp-server": {
"type": "remote",
"url": "https://devops-status.caseyjhand.com/mcp",
"enabled": true
}
}
} openclaw mcp add cyanheads-devops-status-mcp-server --url 'https://devops-status.caseyjhand.com/mcp' --transport streamable-http
mcp_servers:
cyanheads-devops-status-mcp-server:
url: "https://devops-status.caseyjhand.com/mcp" {
"McpServers": {
"cyanheads-devops-status-mcp-server": {
"Transport": "http",
"Url": "https://devops-status.caseyjhand.com/mcp"
}
}
} assistant mcp add cyanheads-devops-status-mcp-server -t streamable-http -u 'https://devops-status.caseyjhand.com/mcp'
{
"mcpServers": {
"cyanheads-devops-status-mcp-server": {
"type": "http",
"url": "https://devops-status.caseyjhand.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Server version: 0.8.1 → 0.8.2 functional
- 9 Sept 26 0
- Stability: 0.97 → pass security
- 8 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 7 Sept 26 −1
- Stability: pass → 0.93 functional
- 26 Aug 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 0
- Stability: 0.97 → pass security
- MCP protocol: Implements a current MCP spec version (2026-07-28). functional
- MCP protocol version: 2025-11-25 → 2026-07-28 functional
- Server version: 0.8.0 → 0.8.1 functional
- “devops_watch_stack” reworded the description of “stack_name” cosmetic
- 24 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://devops-status.caseyjhand.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=caseyjhand.com | CN=WE1,O=Google Trust Services,C=US | 4 Sept 2026 | 3 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | a6985204ed51ae050e7738aa6be668e9 |
| SANs: caseyjhand.com, *.caseyjhand.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of devops-status.caseyjhand.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| caseyjhand.com. | present | 2371 | 13 | Verified |
| devops-status.caseyjhand.com. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://devops-status.caseyjhand.com/mcp | Verified | 200 | |
| http (plaintext) | http://devops-status.caseyjhand.com/mcp | HTTPS enforced | 301 | https://devops-status.caseyjhand.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
devops_check_certs Devops Check Certs ~281
Inspect SSL/TLS certificate health for one or more domains by performing a real TLS handshake. Works for any internet-accessible domain — no vendor registry required. Reports days to expiry (flagged at < 30 days warning and < 7 days critical), certificate subject and SANs, issuer, hostname coverage, chain-trust verification, TLS protocol version negotiated (flags TLS 1.0/1.1 as insecure), cipher suite, and HSTS presence. The handshake completes even for a certificate clients would reject, so a broken certificate is reported rather than hidden behind a connection error: a hostname mismatch surfaces in cert.hostname_verification_error and a chain-trust failure (self-signed, untrusted root) in cert.authorization_error, both status "critical". If a domain fails to connect at all, check devops_check_dns first — the name may not resolve.
| Name | Type | Req | Description |
|---|---|---|---|
| domains | array | yes | Domains to inspect. Do not include "https://" — pass the bare hostname. Up to 10 per call. |
| port | integer | – | TLS port. Defaults to 443. Use 8443 or custom ports for non-standard HTTPS endpoints. |
| timeout_ms | integer | – | Connection timeout per domain in milliseconds. Defaults to the DEVOPS_STATUS_CERT_TIMEOUT_MS env var (5000 when unset). Increase for slow or geographically distant endpoints. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | object | – | Present when the call failed. Absent on success. |
| results | array | – | Per-domain certificate inspection results. |
No examples provided.
devops_check_dns Devops Check Dns ~372
Resolve DNS records for one or more domains across multiple public resolvers and compare what each resolver returned. Works for any domain — no vendor registry required. Reports records found (A/AAAA/CNAME/MX/TXT/NS), resolution latency per resolver, and a typed outcome per resolver and record type so "the domain does not exist" (nxdomain), "the resolver could not answer" (servfail), and "no record of this type" (nodata) stay distinguishable. Resolver disagreements are reported without asserting a cause: partial_resolution (some resolvers answered, others returned nothing) points at a real propagation or resolver problem, while value_variation (every resolver answered with different values) is the normal steady state for anycast and geo-steered domains. Pair with devops_check_certs when a domain resolves but TLS to it is failing.
| Name | Type | Req | Description |
|---|---|---|---|
| domains | array | yes | Domain names to query. Up to 10 per call. |
| record_types | array | – | DNS record types to resolve. Defaults to A, AAAA, MX, and TXT. Add NS to check nameserver delegation. Add CNAME when investigating redirect chains. |
| resolvers | array | – | Resolver IP addresses to query. Defaults to Google (8.8.8.8), Cloudflare (1.1.1.1), and Quad9 (9.9.9.9). Add custom resolvers to test resolver-specific behavior. Each must be an IP literal, not a hos… |
| timeout_ms | integer | – | Query timeout per domain+resolver combination in milliseconds. Defaults to the DEVOPS_STATUS_DNS_TIMEOUT_MS env var (3000 when unset). |
| Name | Type | Req | Description |
|---|---|---|---|
| error | object | – | Present when the call failed. Absent on success. |
| results | array | – | Per-domain DNS resolution results. |
No examples provided.
devops_get_incidents Devops Get Incidents ~358
Fetch incident history and scheduled maintenance windows for a vendor. Returns full incident timeline — each investigator update, affected components, and resolution. Filter by status to focus on active incidents (use before deploy), resolved history (for postmortem), or upcoming maintenance windows. Page through long histories with limit + offset — a truncated result discloses the total and returns the value to page with in nextOffset. Some vendor feeds cap their own history: when upstreamCeiling is present the vendor API returned everything it will serve, and older incidents are reachable only on the vendor status page, not at a higher offset. An empty result explains itself in notice.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | – | all: incidents plus scheduled maintenances. active: only incidents with status investigating/identified/monitoring. resolved: only fully resolved incidents. scheduled: only scheduled maintenance wind… |
| limit | integer | – | Maximum incidents to return per call (1–50). Page through longer history with offset rather than raising this. |
| offset | integer | – | Number of matching incidents to skip before applying limit, for paging through history. 0 (default) returns the most recent page; a truncated result returns the value to use next in the nextOffset fi… |
| vendor | string | yes | Vendor slug (e.g., "github", "aws") or raw Atlassian Statuspage base URL. Use devops_list_vendors to find slugs. |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The limit that was applied. Present only when truncated. |
| error | object | – | Present when the call failed. Absent on success. |
| incidents | array | – | Matching incidents. |
| name | string | – | Display name of the vendor. |
| nextOffset | number | – | The offset to pass on the next call to continue from where this page stopped, already computed as offset + the number returned. Present only when truncated — its absence means this page reached the e… |
| notice | string | – | Plain-language explanation of this result — how to page onward, why it came back empty (the vendor currently publishes nothing at all, a filter the backend cannot satisfy, or an offset past the end),… |
| shown | number | – | Number of incidents returned after applying the limit. Present only when truncated. |
| statuspage_url | string | – | Status page base URL used. |
| totalCount | number | – | Total incidents matching the filter, across all pages, before offset/limit windowing. Present only when the result was truncated. |
| total_returned | number | – | Number of incidents in the response. |
| truncated | boolean | – | True when more incidents matched than the limit returned. Absent when the result was not capped. |
| upstreamCeiling | number | – | Maximum incidents the vendor's own status API serves in one fetch, present only when that ceiling was reached on this call. It bounds the history independently of limit and offset: incidents older th… |
| vendor | string | – | Vendor slug or URL as provided. |
No examples provided.
devops_list_vendors Devops List Vendors ~131
List vendors in the built-in registry, optionally filtered by category or name search. Returns slug, display name, category, and status page URL for each entry. Use to discover the correct slug to pass to other tools, or to see which vendors are available before configuring a stack.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Filter to one category: cloud, cdn-edge, dev-platform, data, comms, auth, monitoring, or ai. |
| query | string | – | Free-text search against vendor name and slug. Case-insensitive. E.g., "cloud", "auth", "slack". |
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | – | All available category values for use in the category filter. |
| error | object | – | Present when the call failed. Absent on success. |
| total | number | – | Total number of vendors returned. |
| vendors | array | – | Matching vendors from the built-in registry. |
No examples provided.
devops_status_check Devops Status Check ~390
Check the current health status for one or more vendors. Accepts registered vendor slugs (e.g., "github", "aws", "gcp", "gitlab") or raw Atlassian Statuspage base URLs. Registry entries are served by each vendor's native status API (Statuspage, Status.io, Slack, AWS Health, Google Cloud Service Health, Firehydrant) and normalized to one shape. Returns per-vendor operational indicator (none = all clear, minor, major, critical, maintenance = scheduled window), degraded components, and active incidents. Use mode: "detailed" for component lists and maintenance windows, narrowed with component_filter and bounded by component_limit. Batch-friendly — pass a list to check your full stack in one call; a vendor that cannot be resolved or reached is reported in its own result row, so one bad entry never discards the rest.
| Name | Type | Req | Description |
|---|---|---|---|
| component_filter | string | – | Case-insensitive substring matched against component names in detailed mode (e.g., "api" to check just the API components). Applied before component_limit, so it is the way to reach a component that… |
| component_limit | integer | – | Maximum components returned per vendor in detailed mode (1-500). Large status pages publish hundreds of components, so a multi-vendor batch at a high limit returns a very large response; narrow with… |
| mode | string | – | summary: indicator + degraded components + active incidents only. detailed: adds the component list and scheduled maintenance windows. |
| vendors | array | yes | Vendor slugs from the built-in registry (e.g., "github", "aws") or raw Atlassian Statuspage base URLs (non-Statuspage backends are supported via registry slugs only). Mix freely. Use devops_list_vend… |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The per-vendor component_limit that was applied. Present only when truncated. |
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Plain-language explanation of the capped component lists — how many components were omitted and how to reach them (component_filter to target one, component_limit to raise the cap). Present only when… |
| results | array | – | Per-vendor status results in the same order as the input vendors list. |
| shown | number | – | Components returned across all vendors. Present only when truncated. |
| summary | object | – | Aggregate health counts across all checked vendors. Buckets partition the batch: operational + degraded + down + maintenance + unavailable = total. |
| totalCount | number | – | Components matching component_filter across all vendors before the cap. Present only when truncated. |
| truncated | boolean | – | True when at least one vendor's component list was capped at component_limit. Absent when nothing was capped. |
No examples provided.
devops_suggest_action Devops Suggest Action ~272
Return an incident-response playbook tailored to a vendor degradation, with pre-filled follow-up tool calls. Synthesizes category-specific guidance (cloud, CDN, dev-platform, auth, etc.) from built-in incident knowledge and the provided context. Use after devops_status_check or devops_get_incidents surfaces a problem to determine what to investigate next.
| Name | Type | Req | Description |
|---|---|---|---|
| affected_components | array | – | Component names affected (from devops_status_check degraded_components or devops_get_incidents affected_components). Used to tailor suggestions to the impacted subsystem. |
| incident_summary | string | – | Latest incident description or update body from devops_get_incidents. Paste the most recent update to get more targeted advice. |
| vendor | string | yes | Vendor slug or display name (e.g., "cloudflare", "github"). Used to tailor category-specific guidance (CDN outage vs. CI/CD outage vs. auth provider outage). |
| vendor_indicator | string | – | Overall vendor status indicator from a prior devops_status_check call (its indicator field). When provided, the playbook leads with severity-tailored urgency guidance. Omit if status has not been che… |
| your_domain | string | – | Your own domain or service URL. When provided, nextToolSuggestions will be pre-filled with your domain for cert and DNS checks. |
| Name | Type | Req | Description |
|---|---|---|---|
| diagnostics_summary | object | – | Summary of input context used to generate the playbook. |
| error | object | – | Present when the call failed. Absent on success. |
| guidance | string | – | Markdown playbook — immediate steps, diagnostic checks, mitigation options, and what to monitor for resolution. Tailored to the vendor category, reported severity, and affected components. |
| nextToolSuggestions | array | – | Recommended follow-up calls with arguments already populated. Execute these in sequence to gather diagnostic data. |
| vendor | string | – | Vendor as provided. |
| vendor_category | string|null | – | Detected category from registry (e.g., "cdn-edge", "auth"). Null for unrecognized vendors. |
No examples provided.
devops_watch_stack Devops Watch Stack ~388
Check the health of a named vendor stack — a saved list of vendors representing your infrastructure dependencies. On the first call, provide vendors to define the stack; subsequent calls can omit vendors to reuse the persisted list. Returns a unified health snapshot with an aggregate rollup plus per-vendor detail. A vendor that cannot be resolved or reached is reported in its own row and left out of the saved stack, so one bad entry never discards the sweep. Ideal for morning status checks or pre-deploy sweeps. Multiple stacks can coexist (e.g., "production", "staging").
| Name | Type | Req | Description |
|---|---|---|---|
| component_filter | string | – | Case-insensitive substring matched against component names in detailed mode (e.g., "api" to check just the API components). Applied before component_limit, so it is the way to reach a component that… |
| component_limit | integer | – | Maximum components returned per vendor in detailed mode (1-500). Large status pages publish hundreds of components, so a full stack at a high limit returns a very large response; narrow with componen… |
| mode | string | – | summary: indicator + degraded components + active incidents. detailed: adds component lists and maintenance windows. |
| stack_name | string | – | Name for this vendor stack. Defaults to "default". Use distinct names to manage multiple stacks (e.g., "production", "data-layer"). Letters, digits, hyphens, and underscores, optionally separated by… |
| vendors | array | – | Vendor slugs (e.g., "github", "aws") or raw Atlassian Statuspage base URLs. When provided, saves this list as the stack. When omitted, uses the previously saved list for stack_name. |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The per-vendor component_limit that was applied. Present only when truncated. |
| checked_at | string | – | ISO 8601 UTC timestamp of this check. |
| error | object | – | Present when the call failed. Absent on success. |
| health | string | – | Aggregate health rollup: all_operational = everything clear, maintenance = at least one vendor in a scheduled window and nothing worse open, degraded = at least one minor issue, partial_outage = at l… |
| notice | string | – | Plain-language explanation of the capped component lists — how many components were omitted and how to reach them (component_filter to target one, component_limit to raise the cap). Present only when… |
| omitted_vendors | array | – | Entries that could not be resolved or whose URL was blocked; they still appear in vendors[] with an error. A call that saved the stack left them out of the write; a call that reused a saved stack lea… |
| shown | number | – | Components returned across the stack. Present only when truncated. |
| stack_name | string | – | Name of the stack checked. |
| stack_persisted | boolean | – | True when the vendor list was saved to state on this call. Only the vendors that resolved are saved — see omitted_vendors. |
| summary | object | – | Aggregate health counts across all checked vendors. Buckets partition the stack: operational + degraded + down + maintenance + unavailable = total. |
| totalCount | number | – | Components matching component_filter across the stack before the cap. Present only when truncated. |
| truncated | boolean | – | True when at least one vendor's component list was capped at component_limit. Absent when nothing was capped. |
| vendors | array | – | Per-vendor status results. |
No examples provided.
What is the io.github.cyanheads/devops-status-mcp-server server?
io.github.cyanheads/devops-status-mcp-server is listed in the public MCP registry as io.github.cyanheads/devops-status-mcp-server. Vendor status pages, TLS cert inspection, DNS propagation checks, and incident-response playbooks. This page covers its hosted endpoint (https://devops-status.caseyjhand.com/mcp).
Is the io.github.cyanheads/devops-status-mcp-server server safe to use?
io.github.cyanheads/devops-status-mcp-server scores 80 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.cyanheads/devops-status-mcp-server server expose?
io.github.cyanheads/devops-status-mcp-server exposes 7 tools: devops_list_vendors, devops_status_check, devops_get_incidents, devops_watch_stack, devops_check_certs, and 2 more. Their descriptions and schemas cost roughly 2,192 tokens of context every time the server is loaded.
Does the io.github.cyanheads/devops-status-mcp-server server require authentication?
No. We connected to io.github.cyanheads/devops-status-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the io.github.cyanheads/devops-status-mcp-server server still maintained?
io.github.cyanheads/devops-status-mcp-server is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.