关于 devops-status-mcp-server
用于检查供应商状态页、事件、TLS 证书和 DNS 传播情况的 MCP 服务,面向运维团队。它统一呈现内置供应商目录的状态信息,并提供域名诊断和确定性的事件响应手册。
主要功能
- 01查看供应商状态和事件时间线
- 02保存并重复检查命名的供应商组合
- 03检查 TLS 证书及域名安全信息
- 04比较公共解析器返回的 DNS 结果
- 05生成事件响应手册
适用场景
- 01服务中断时检查供应商健康状态
- 02查看受影响供应商的事件更新
- 03在续期截止前验证证书
- 04排查 DNS 传播结果差异
MCP 相关
向 MCP 客户端提供七种工具和一个供应商目录资源,支持 STDIO 与 Streamable HTTP。状态、证书和 DNS 检查无需 API 密钥。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://devops-status.caseyjhand.com/mcpclaude mcp add --transport http cyanheads-devops-status https://devops-status.caseyjhand.com/mcp{"mcpServers":{"cyanheads-devops-status":{"type":"http","url":"https://devops-status.caseyjhand.com/mcp"}}}在 Cursor 中打开{"servers":{"cyanheads-devops-status":{"type":"http","url":"https://devops-status.caseyjhand.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"cyanheads-devops-status":{"type":"http","url":"https://devops-status.caseyjhand.com/mcp"}}}{"mcpServers":{"cyanheads-devops-status":{"serverUrl":"https://devops-status.caseyjhand.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
7| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 否 | 针对供应商 slug 和显示名称进行子字符串搜索。不区分大小写;忽略首尾空格。例如:"cloud"、"auth"、"slack"。 |
| category | enum | 否 | 筛选为一个类别: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。
概述
以统一格式提供 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 传递给其他工具使用
内置供应商注册表:
| 类别 | 供应商 |
|---|---|
cloud | digitalocean, linode, aws, gcp, azure |
cdn-edge | cloudflare, akamai |
dev-platform | gitlab, github, azure-devops, npm, vercel, netlify, render, fly-io, circleci, travis-ci, snyk, atlassian, figma, launchdarkly |
data | mongodb-atlas, planetscale, supabase, neon, redis-cloud, elastic, influxdb, upstash, cloudinary, segment |
comms | slack, discord, twilio, sendgrid, mailgun, hubspot, brevo, courier, loops |
auth | auth0, clerk, workos |
monitoring | datadog, sentry, new-relic, grafana-cloud, honeycomb |
ai | openai, 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",原因写入errortimeout_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 密钥或外部账户。
安装
- 克隆代码库:
git clone https://github.com/cyanheads/devops-status-mcp-server.git
- 进入目录:
cd devops-status-mcp-server
- 安装依赖项:
bun install
- 配置环境:
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_MS | devops_check_certs 的默认 timeout_ms(1000–15000)。 | 5000 |
DEVOPS_STATUS_DNS_TIMEOUT_MS | devops_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_PORT | HTTP 服务端口。 | 3010 |
MCP_SESSION_MODE | HTTP 会话处理方式: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.ts | createApp() 入口点——注册工具、资源并初始化服务。 |
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。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。