mcpField
D
devops-status-mcp-server

devops-status-mcp-server

远程服务
github.com/cyanheads云与基础设施22 周前更新
代码仓库

关于 devops-status-mcp-server

用于检查供应商状态页、事件、TLS 证书和 DNS 传播情况的 MCP 服务,面向运维团队。它统一呈现内置供应商目录的状态信息,并提供域名诊断和确定性的事件响应手册。

主要功能

  1. 01查看供应商状态和事件时间线
  2. 02保存并重复检查命名的供应商组合
  3. 03检查 TLS 证书及域名安全信息
  4. 04比较公共解析器返回的 DNS 结果
  5. 05生成事件响应手册

适用场景

  1. 01服务中断时检查供应商健康状态
  2. 02查看受影响供应商的事件更新
  3. 03在续期截止前验证证书
  4. 04排查 DNS 传播结果差异

MCP 相关

向 MCP 客户端提供七种工具和一个供应商目录资源,支持 STDIO 与 Streamable HTTP。状态、证书和 DNS 检查无需 API 密钥。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://devops-status.caseyjhand.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npm@cyanheads/devops-status-mcp-server0.10.0

工具

7
参数类型必填说明
querystring否针对供应商 slug 和显示名称进行子字符串搜索。不区分大小写;忽略首尾空格。例如:"cloud"、"auth"、"slack"。
categoryenum否筛选为一个类别:cloud、cdn-edge、dev-platform、data、comms、auth、monitoring 或 ai。cloud | cdn-edge | dev-platform | data | comms | auth | monitoring | ai

详细介绍

@cyanheads/devops-status-mcp-server

通过 MCP 检查供应商状态页面、查看 SSL/TLS 证书、验证 DNS 传播情况,并获取事件响应手册。支持 STDIO 或 Streamable HTTP。

7 个工具 • 1 个资源

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework


概述

以统一格式提供 53 家供应商的状态页面,包括 AWS、Google Cloud、Azure、Slack 等。查看哪些服务中断,获取事件时间线,监控你的技术栈,并获取事件响应手册。此外,还可检查任何域名的 TLS 证书和 DNS。无需 API 密钥。

工具
工具描述
devops_list_vendors列出内置注册表中的供应商,可按名称或类别筛选。返回 slug、显示名称、类别和状态页 URL。
devops_status_check检查一个或多个供应商当前的健康状态。返回每个供应商的状态指示(none / minor / major / critical / maintenance)、性能下降的组件和当前事件摘要。
devops_get_incidents获取某个供应商的事件历史记录,包括当前事件、已解决事件或计划维护。返回完整的事件时间线,包含每次更新的正文和受影响的组件。
devops_watch_stack检查指定供应商技术栈的健康状态。如果服务能够识别调用方(stdio,或使用 jwt/oauth 身份验证的 HTTP),传入 vendors 一次即可保存列表,后续调用会重用该列表;使用 MCP_AUTH_MODE=none 的 HTTP 不会保存列表,因此每次调用都必须传入 vendors。返回汇总健康状况以及各供应商的详细信息。
devops_check_certs通过真实 TLS 握手检查一个或多个域名的 SSL/TLS 证书健康状况。报告有效期、证书链深度、协议版本、密码套件,以及 HTTP 端口上的 HSTS 是否启用。纯 TypeScript 实现,不调用外部 API。
devops_check_dns解析一个或多个域名的 DNS 记录,并通过 Google(8.8.8.8)、Cloudflare(1.1.1.1)和 Quad9(9.9.9.9)验证传播情况。报告各解析器的延迟和解析结果差异。纯 TypeScript 实现,不调用外部 API。
devops_suggest_action指令工具——根据供应商名称和可选的事件背景,返回定制的事件响应手册及预填充的后续工具调用。不调用外部服务;结果完全确定。
资源
资源描述
devops-status://vendors/{name}根据 slug 获取供应商的完整注册信息,包括状态页 URL、类别和 API 类型。

所有资源数据也都可以通过工具访问。完全支持仅使用工具的 Agent。


能力参考

devops_list_vendors 工具
  • 可选的自由文本 query(按名称和 slug 搜索,不区分大小写)和可选的 category:cloud、cdn-edge、dev-platform、data、comms、auth、monitoring、ai
  • 返回 slug(传递给其他工具的值)、显示名称、类别和状态页 URL;若结果为空,则会附带说明未匹配内容的 notice
  • 内置 53 个条目,大多数使用 Atlassian Statuspage;aws、gcp、azure、azure-devops、gitlab、neon、slack 和 redis-cloud 使用原生 API 适配器。不在注册表中的兼容 Statuspage 页面,可将原始基础 URL 传递给其他工具使用

内置供应商注册表:

类别供应商
clouddigitalocean, linode, aws, gcp, azure
cdn-edgecloudflare, akamai
dev-platformgitlab, github, azure-devops, npm, vercel, netlify, render, fly-io, circleci, travis-ci, snyk, atlassian, figma, launchdarkly
datamongodb-atlas, planetscale, supabase, neon, redis-cloud, elastic, influxdb, upstash, cloudinary, segment
commsslack, discord, twilio, sendgrid, mailgun, hubspot, brevo, courier, loops
authauth0, clerk, workos
monitoringdatadog, sentry, new-relic, grafana-cloud, honeycomb
aiopenai, anthropic, elevenlabs, pinecone, cohere

devops_status_check 工具
  • 接受供应商标识(例如 github、aws)或原始 Atlassian Statuspage 基础 URL,可自由混用。每次调用最多检查 20 个;其余项会出现在 deferred_vendors 中,并附有提示,要求重新发送。超过 100 项将被拒绝(invalid_arguments)
  • mode: "summary"(默认值)返回状态指示、降级组件和活动事件;mode: "detailed" 还会返回完整组件列表(component_limit,默认值为 50,上限为 500)和计划维护时段。component_filter 会匹配组件名称或分组名称
  • 单个供应商检查失败不会影响其他供应商(错误会写入各自的 error 字段)。结果会缓存 60 秒(cached: true),summary 会统计 operational / degraded / down / maintenance / unavailable 的数量
  • nextToolSuggestions 会为每个存在活动问题的供应商预填一条 devops_suggest_action 调用

devops_get_incidents 工具
  • filter:all(默认值)、active、resolved 或 scheduled(仅维护时段)。limit(默认值为 20,上限为 50)与 offset 一起用于分页
  • 按时间顺序以纯文本返回各次更新的正文、受影响组件的名称、已解决事件的持续时间(分钟)以及短链接。每个事件都带有 source:api,或表示归档记录的 history(仅含标题、影响、时间和最终消息)
  • since 和 until(YYYY-MM-DD,UTC)用于限定开始日期,且可与 filter: "all" 或 "resolved" 配合使用;since 还会从 Statuspage 历史归档中读取最多 24 个月的数据,不受 API 最新 50 条的限制。match 会保留标题或组件名称中包含所提供全部词语的事件(最多 200 个字符)
  • 每个界面的响应上限为 64,000 字节;被截断的页面会设置 truncated: true 和 nextOffset。full_updates: true 会保留单个超大事件的所有更新
  • 错误:invalid_since 和 invalid_until(filter: "active" 或 "scheduled",或 until 早于 since)
  • 某些信息源在特定筛选条件下没有数据时会返回空结果:Azure 的 resolved,以及 AWS、Azure、Azure DevOps、Google Cloud 和 Slack 的 scheduled

devops_watch_stack 工具
  • 一次传入 vendors(最多 20 个),即可将技术栈保存到 stack_name 下(1-64 个字符;可同时存在多个技术栈,例如 "production");后续调用可省略 vendors。超过 20 个将被拒绝,并返回 stack_too_large。在 stdio 上以及使用 MCP_AUTH_MODE=jwt|oauth 的 HTTP 上均可保存;使用默认的 in-memory 存储时,重启后保存的技术栈不会保留
  • 使用 MCP_AUTH_MODE=none 的 HTTP 不会保存任何内容:带 vendors 的调用会执行扫描并返回 stack_persisted: false;不带 vendors 的调用会失败并返回 vendors_required
  • 汇总健康状态 health:all_operational / maintenance / degraded / partial_outage / major_outage / unknown(无法访问某个供应商)。component_limit 和 nextToolSuggestions 的作用与 devops_status_check 中相同

devops_check_certs 工具
  • 接受主机名、IP 地址、host:port 或 URL;条目中指定的端口会覆盖 port(默认值为 443)。检查前 10 个条目(最多接受 100 个);其余项会出现在 deferred_domains 中,供重新发送
  • 报告距离到期的天数(不足 30 天为 warning,不足 7 天为 critical)、主题和 SAN、颁发者、证书链深度、TLS 版本(将 1.0 和 1.1 标记为不安全)、密码套件,以及 HTTP 端口上的 HSTS
  • status: "critical" 会区分主机名不匹配(hostname_verification_error)和不受信任的证书链(authorization_error)。各域名的检查失败会直接以内联形式返回,状态为 status: "error",原因写入 error
  • timeout_ms 为每个域名设置单独的截止时间(最长 15000 毫秒)

devops_check_dns 工具
  • 接受域名、URL 或 host:port;查询前 10 个域名(最多接受 100 个),其余域名会返回在 deferred_domains 中。IP 地址会单独返回一行 error
  • 并行查询 Google(8.8.8.8)、Cloudflare(1.1.1.1)和 Quad9(9.9.9.9)的 A、AAAA、CNAME、MX、TXT、NS、CAA 和 SOA 记录(默认查询 A、AAAA、MX、TXT)
  • 报告各解析器的延迟和分类后的差异:partial_resolution(部分解析器未响应)是实际问题;value_variation(值不同)对于使用任播或地理位置路由的域名来说属于正常现象
  • 自定义 resolvers 接受公网 IP 字面值,前 5 个会被查询,其余返回在 deferred_resolvers 中;私有地址和环回地址需要设置 DEVOPS_STATUS_ALLOW_PRIVATE_TARGETS=true。timeout_ms 按每个域名和解析器分别计算(最大为 10000)

devops_suggest_action 工具
  • 接受供应商 slug 或显示名称,并返回按类别定制的 Markdown 操作手册;对于无法识别的供应商,则提供通用指南
  • 可选的 incident_summary、affected_components 和 vendor_indicator 会添加子系统部分,并根据严重级别确定紧急程度
  • nextToolSuggestions 会预填后续调用参数;提供 your_domain 时,还会包含证书和 DNS 检查。设置 DEVOPS_STATUS_DISABLE_ACTIVE_PROBES=true 后,指南将改用手动命令(dig、openssl s_client)

devops-status://vendors/{name} 资源
  • 返回供应商 slug 对应的完整注册信息:状态页 URL、类别、API 类型(statuspage、statusio、slack、aws、gcp、azure、azure-devops、firehydrant),以及供应商仅覆盖共享页面部分内容时的 component_scope_prefix(sendgrid)
  • 在公开缓存中缓存 1 小时;也可通过 devops_list_vendors 获取相同数据

功能

基于 @cyanheads/mcp-ts-core 构建:支持 stdio 和 Streamable HTTP 传输、可插拔身份验证(none / jwt / oauth)、可切换存储(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1),并提供结构化日志和可选的 OpenTelemetry 跟踪。

DevOps-status 特有功能:

  • 无需 API 密钥 — 每个状态后端都是公共 API;TLS 和 DNS 使用 Node.js 标准库
  • 内置 53 家供应商的注册表,涵盖八个类别;原生适配器可将 Status.io、Slack、AWS Health、Google Cloud、Azure、Azure DevOps 和 Firehydrant 规范化为 Statuspage 格式
  • 对供应商编写的文本、DNS 记录值和证书名称进行转义,使其以数据而非标记的形式显示
  • 状态读取结果在内存中缓存 60 秒,并在租户间共享
  • devops_watch_stack 可保存命名的供应商列表,以便重复检查和部署前扫描
  • devops_suggest_action 的结果是确定性的,不依赖 LLM 采样

便于 Agent 使用的输出:

  • 批处理工具不会因单个目标失败而阻塞其他目标;错误会以内联的 error 字段返回
  • 每个状态结果中的 cached 和 checked_at 字段会显示数据的获取时间
  • 固定的指示器和状态枚举(none / minor / major / critical / maintenance)便于调用方根据数据进行分支处理
  • nextToolSuggestions 会根据事件上下文预填后续工具参数

开始使用

公共托管实例

可通过 https://devops-status.caseyjhand.com/mcp 使用公共实例 — 无需安装。通过 Streamable HTTP 将任意 MCP 客户端指向该实例:

{
  "mcpServers": {
    "devops-status-mcp-server": {
      "type": "streamable-http",
      "url": "https://devops-status.caseyjhand.com/mcp"
    }
  }
}
自托管 / 本地运行

无需 API 密钥。将以下内容添加到 MCP 客户端配置文件中:

{
  "mcpServers": {
    "devops-status-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/devops-status-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

或者使用 npx(无需 Bun):

{
  "mcpServers": {
    "devops-status-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/devops-status-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

或者使用 Docker:

{
  "mcpServers": {
    "devops-status-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MCP_TRANSPORT_TYPE=stdio",
        "ghcr.io/cyanheads/devops-status-mcp-server:latest"
      ]
    }
  }
}

要使用 Streamable HTTP,请设置传输方式并启动服务:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp
前置条件
  • Bun v1.4.0 或更高版本(或 Node.js v24+)。
  • 无需 API 密钥或外部账户。
安装
  1. 克隆代码库:
git clone https://github.com/cyanheads/devops-status-mcp-server.git
  1. 进入目录:
cd devops-status-mcp-server
  1. 安装依赖项:
bun install
  1. 配置环境:
cp .env.example .env
# edit .env if you want to override defaults

配置

无需 API 密钥。所有环境变量均为可选项。

变量说明默认值
DEVOPS_STATUS_CACHE_TTL_MS所有后端读取供应商状态时的内存缓存 TTL,单位为毫秒。60000
DEVOPS_STATUS_FETCH_TIMEOUT_MS所有后端调用供应商状态 API 时的单次请求超时时间,单位为毫秒。8000
DEVOPS_STATUS_CERT_TIMEOUT_MSdevops_check_certs 的默认 timeout_ms(1000–15000)。5000
DEVOPS_STATUS_DNS_TIMEOUT_MSdevops_check_dns 的默认 timeout_ms(1000–10000)。3000
DEVOPS_STATUS_ALLOW_PRIVATE_TARGETS设为 true 时,禁用针对用户提供的 URL 和域名的 SSRF 防护。仅限受信任的本地部署。false
DEVOPS_STATUS_DISABLE_ACTIVE_PROBES设为 true 时,移除 devops_check_dns 和 devops_check_certs。适用于共享的公共实例。false
MCP_TRANSPORT_TYPE传输方式:stdio 或 http。stdio
MCP_HTTP_PORTHTTP 服务端口。3010
MCP_SESSION_MODEHTTP 会话处理方式:stateless、stateful 或 auto。stateless
MCP_AUTH_MODE身份验证模式:none、jwt 或 oauth。none
MCP_LOG_LEVEL日志级别(RFC 5424)。info
LOGS_DIR日志文件目录(仅限 Node.js)。<project-root>/logs
OTEL_ENABLED启用 OpenTelemetry 插桩。false

DEVOPS_STATUS_* 值无效时,启动会中止,并显示指明变量名称的错误。

完整的可选覆盖项列表请参阅 .env.example。


运行服务

本地开发
  • 构建并运行:

    bun run rebuild
    bun run start:stdio
    # or
    bun run start:http
    
  • 运行检查和测试:

    bun run devcheck   # Lint, format, typecheck, security
    bun run test       # Vitest test suite
    bun run lint:mcp   # Validate MCP definitions against spec
    
Docker
docker build -t devops-status-mcp-server .
docker run --rm -p 3010:3010 devops-status-mcp-server

Dockerfile 默认使用 HTTP 传输、无状态会话模式,并将日志写入 /var/log/devops-status-mcp-server。默认会安装 OpenTelemetry 对等依赖项——构建时使用 --build-arg OTEL_ENABLED=false 可省略这些依赖项。


项目结构

路径用途
src/index.tscreateApp() 入口点——注册工具、资源并初始化服务。
src/config/使用 Zod 解析和验证服务专属的环境变量。
src/mcp-server/tools/工具定义(*.tool.ts)。
src/mcp-server/resources/资源定义(*.resource.ts)。
src/services/cert/node:tls——TLS 握手、X.509 解析、过期和协议标记、旧版 TLS 重试、HSTS 读取。
src/services/dns/DNS 报文客户端(node:dgram / node:net):报文编码和带边界检查的解码、UDP 及 TCP 重试;向多个解析器并行发送请求并检测传播差异。
src/services/statuspage/Statuspage 公共 API 客户端(通过 src/utils/cached-fetch.ts 中的共享缓存读取)。
src/services/status-adapters/原生 API 适配器(Status.io、Slack、AWS Health、Google Cloud Service Health、Azure status、Azure DevOps status、Firehydrant)、共享 RSS 提取器,以及 api_type 分派;将数据规范化为 Statuspage 格式。
src/services/vendor-registry/从 src/data/vendor-registry.ts 加载的内存供应商注册表。
src/data/静态供应商注册表数据文件(vendor-registry.ts)。
src/utils/共享辅助工具——响应缓存和 fetch、SSRF 防护、域名条目规范化、HTML 转文本、供应商文本 Markdown 转义、输入边界提示、词语匹配。
tests/与 src/ 结构对应的 Vitest 测试。

开发指南

开发指南和架构规则请参阅 CLAUDE.md。简要概括如下:

  • 处理器抛出错误,由框架捕获——工具逻辑中不使用 try/catch
  • 使用 ctx.log 记录请求范围内的日志,使用 ctx.state 进行租户范围内的存储
  • 通过 src/mcp-server/*/definitions/index.ts 中的汇总文件注册新工具和资源
  • devops_check_certs 和 devops_check_dns 仅使用 Node.js 标准库——这些路径不要添加外部依赖

贡献

欢迎提交问题。提交前请运行检查和测试:

bun run devcheck
bun run test

许可证

Apache-2.0 — 详情请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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