cyanheads/devops-status-mcp-server
GitHub: cyanheads/devops-status-mcp-server
一个通过 MCP 协议提供供应商状态检查、SSL/TLS 证书与 DNS 传播诊断以及事件响应手册的 DevOps 运维工具服务器。
Stars: 1 | Forks: 1
@cyanheads/devops-status-mcp-server
通过 MCP 检查供应商状态页、检查 SSL/TLS 证书、验证 DNS 传播,并获取事件响应手册。支持 STDIO 或 Streamable HTTP。
7 个工具 • 1 个资源
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/devops-status-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/devops-status-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
[](https://github.com/cyanheads/devops-status-mcp-server/releases/latest/download/devops-status-mcp-server.mcpb) [](https://cursor.com/en/install-mcp?name=devops-status-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvZGV2b3BzLXN0YXR1cy1tY3Atc2VydmVyIl19) [](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22devops-status-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Fdevops-status-mcp-server%22%5D%7D)
[](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
**公共托管服务器:** [https://devops-status.caseyjhand.com/mcp](https://devops-status.caseyjhand.com/mcp)
## 工具
分为三个功能组的七个工具 — 供应商状态(涵盖 Atlassian Statuspage、Status.io、Slack、AWS Health 和 Firehydrant 后端的 50 个内置供应商,统一规范化为同一种格式,+ 原始 Statuspage URL 透传),纯 TypeScript 实现的证书/DNS 检查(任意域名),以及事件响应指南:
| 工具 | 描述 |
|:-----|:------------|
| `devops_list_vendors` | 列出内置注册表中的供应商,可选择按名称或类别进行筛选。返回 slug、显示名称、类别和状态页 URL。 |
| `devops_status_check` | 检查一个或多个供应商的当前健康状况。返回每个供应商的指示器(`none` / `minor` / `major` / `critical`)、降级的组件以及活跃的事件摘要。 |
| `devops_get_incidents` | 获取供应商的事件历史记录 — 活跃、已解决或计划内的维护。返回完整的事件时间轴,包含每次更新的正文内容和受影响的组件。 |
| `devops_watch_stack` | 检查保存在会话状态中的指定供应商堆栈的健康状况。传递一次 `vendors` 即可保存列表;后续调用会自动复用。返回汇总的健康状况报告以及各供应商的详细信息。 |
| `devops_check_certs` | 通过真实的 TLS 握手检查一个或多个域名的 SSL/TLS 证书健康状况。报告过期时间、链深度、协议版本、加密套件以及是否存在 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_list_vendors`
在运行状态检查或配置堆栈之前发现可用的供应商。
- 接受可选的自由文本 `query`(匹配名称和 slug,不区分大小写)以及可选的 `category` 筛选器
- 八个类别:`cloud`、`cdn-edge`、`dev-platform`、`data`、`comms`、`auth`、`monitoring`、`ai`
- 返回 slug(用于传递给其他工具)、显示名称、类别和状态页 URL
- 50 个内置条目 — 具有经验证的状态端点的知名公共供应商(大多数使用 Atlassian Statuspage;`aws`、`gitlab`、`neon`、`slack` 和 `redis-cloud` 通过原生 API 适配器提供服务)
内置供应商注册表:
| 类别 | 供应商 |
|:---------|:--------|
| `cloud` | digitalocean, linode, aws |
| `cdn-edge` | cloudflare, akamai |
| `dev-platform` | gitlab, github, 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 |
大多数注册表条目都是 Atlassian Statuspage 端点;`aws` (AWS Health Dashboard)、`gitlab` / `neon` (Status.io)、`slack` (Slack 官方的 status API) 和 `redis-cloud` (Firehydrant) 通过适配器提供服务,将其规范化为相同的格式,因此所有工具对它们的操作方式完全相同。GCP 和 Azure 没有发布无需密钥的机器可读源,因此不在注册表中 — 但仍然可以通过传递原始的 base URL 来访问兼容 Statuspage 的页面。
### `devops_status_check`
在一次调用中对一个或多个供应商进行批量健康快照。
- 接受已注册的供应商 slug(例如 `"github"`、`"aws"`)或原始的 Atlassian Statuspage base URL(例如 `"https://www.githubstatus.com"`)— 可自由混合使用
- `mode: "summary"`(默认):指示器 + 降级的组件 + 活跃事件
- `mode: "detailed"`:添加完整的组件列表和计划维护窗口
- `Promise.allSettled` 扇出 — 一个供应商失败不会阻塞其余供应商;错误会直接在结果中展示
- 结果由 60 秒内存缓存提供;每个结果上带有 `cached: true` 标志
### `devops_get_incidents`
获取供应商的完整事件时间轴并支持筛选。
- `filter: "all"`(默认):事件以及计划维护
- `filter: "active"`:仅处于 `investigating` / `identified` / `monitoring` 状态的事件
- `filter: "resolved"`:仅完全解决的事件
- `filter: "scheduled"`:仅计划内的维护窗口
- 按时间顺序返回每次更新的正文内容、受影响的组件名称、持续时间(以分钟为单位,针对已解决的事件),以及指向事件页面的直接短链接
- 可配置的 `limit` (1–50);供应商状态 API 每次调用最多返回约 50 条近期记录
- AWS 仅公开当前开启的事件(无历史记录源) — 因此对于 `aws`,`filter: "resolved"` 和 `filter: "scheduled"` 始终为空
### `devops_watch_stack`
用于周期性健康扫描的命名、持久化供应商堆栈。
- 在首次调用时,提供 `vendors` 以定义堆栈 — 它将被保存到 `stack_name` 下的租户会话状态中
- 后续调用可省略 `vendors`;系统将自动复用已保存的列表
- 通过不同的 `stack_name` 值(例如 `"production"`、`"data-layer"`)可以共存多个堆栈
- 汇总健康状况输出:`all_operational` / `degraded` / `partial_outage` / `major_outage`
- 注意:堆栈状态存在于内存中;不会跨服务器重启持久化
### `devops_check_certs`
直接进行 TLS 握手检查 — 无需外部 API。
- 接受纯主机名(不带 `https://` 前缀)— 每次调用最多 10 个
- 报告:距离过期的天数(< 30 天标记为 `warning`,< 7 天标记为 `critical`)、证书主体和 SANs、颁发者通用名称、链深度、协商的 TLS 版本(将 1.0 和 1.1 标记为不安全)、密码套件
- HSTS 检测:在同一 TLS socket 上发送最小的 HTTP/1.1 GET 请求,读取 `Strict-Transport-Security` 响应头
- 单个域名失败会在结果中直接报告(状态:`"error"`)而不是抛出异常 — 在检查多个域名时可提供有用的部分结果
- 可配置端口(默认 443)和单个域名超时时间
### `devops_check_dns`
多解析器 DNS 传播检查 — 无需外部 API。
- 并行查询每个域名的 Google (8.8.8.8)、Cloudflare (1.1.1.1) 和 Quad9 (9.9.9.9)
- 支持的记录类型:A、AAAA、CNAME、MX、TXT、NS(默认为 A、AAAA、MX、TXT)
- 报告每个解析器的延迟、传播差异(解析器结果不一致的地方)以及易读的标志
- 支持自定义解析器列表 — 传递任意 IP 地址以测试内部 DNS 或解析器特定的行为
- 每次调用最多支持 10 个域名;可配置每个域名的超时时间
### `devops_suggest_action`
确定性的事件响应指南,无需外部调用。
- 返回根据供应商类别量身定制的 Markdown 格式操作手册(CDN 宕机 vs. CI/CD 宕机 vs. 认证提供商宕机 vs. AI 服务宕机)
- `nextToolSuggestions` 使用提供的上下文中的参数预填充 — 按顺序执行以收集诊断数据
- 可选的 `your_domain` 会自动填充证书和 DNS 检查的参数
- 可选的 `vendor_indicator` — 传递来自 `devops_status_check` 的 `indicator`,以针对严重程度定制的紧急指南(`none` / `minor` / `major` / `critical`)引导操作手册
- 对于无法识别的供应商,回退到通用指南
- 当 `DEVOPS_STATUS_DISABLE_ACTIVE_PROBES=true` 时,建议和操作手册文本会使用等效的手动命令(`dig`、`openssl s_client`)替换未注册的探测工具
## 资源与提示
| 类型 | 名称 | 描述 |
|:-----|:-----|:------------|
| 资源 | `devops-status://vendors/{name}` | 根据 slug 获取供应商的完整注册表条目 — 状态页 URL、类别、API 类型。 |
所有资源数据也可以通过工具访问。完全支持仅使用工具的 Agent。
## 功能
基于 [`@cyanheads/mcp-ts-core`](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) 构建:
- 声明式工具和资源定义 — 每个基础组件对应单个文件,由框架处理注册和验证
- 统一的错误处理 — 处理程序抛出异常,框架捕获、分类并格式化
- 可插拔的身份验证:`none`、`jwt`、`oauth`
- 可替换的存储后端:`in-memory`、`filesystem`、`Supabase`、`Cloudflare KV/R2/D1`
- 结构化日志记录,支持可选的 OpenTelemetry 链路追踪
- STDIO 和 Streamable HTTP 传输
DevOps 状态专属功能:
- **无需 API 密钥** — 每个状态后端都是公共 API;TLS 和 DNS 使用 Node.js 标准库(`node:tls`、`node:dns`)
- 包含 50 个供应商的内置注册表,涵盖云、CD、开发平台、数据、通信、认证、监控和 AI 类别;适配器层将 Status.io、Slack、AWS Health 和 Firehydrant 后端统一规范化为 Statuspage 格式;可通过原始 Statuspage URL 透传进行扩展
- 所有租户共享对状态读取的 60 秒内存缓存 — 防止在批量调用时发生惊群效应
- `devops_watch_stack` 将命名的供应商列表持久化在租户范围的会话状态中,方便每日晨检或部署前扫描
- `devops_suggest_action` 确定性地调度特定类别的操作手册 — 不依赖 LLM 采样,适用于所有客户端
对 Agent 友好的输出:
- 批量工具(`devops_status_check`、`devops_watch_stack`、`devops_check_certs`、`devops_check_dns`)使用 `Promise.allSettled` — 一个失败的目标绝不会阻塞其余目标;错误以行内 `error` 字段的形式呈现
- 每个状态结果上都包含 `cached: true` / `checked_at` — Agent 可以知道数据的获取时间
- 区分指示器和状态枚举(`none` / `minor` / `major` / `critical`;`operational` / `degraded_performance` / `partial_outage` / `major_outage` / `under_maintenance`) — 调用者基于数据进行逻辑分支,而不是解析字符串
- `devops_suggest_action` 中的 `nextToolSuggestions` 会根据事件上下文自动预填充工具参数 — Agent 可以机械地执行操作手册
## 快速开始
### 公共托管实例
公共实例可通过 `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
# 服务器监听地址为 http://localhost:3010/mcp
```
### 前置条件
- [Bun v1.3.0](https://bun.sh/) 或更高版本(或 Node.js v24+)。
- 无需 API 密钥或外部账户。
### 安装说明
1. **克隆代码库:**
```
git clone https://github.com/cyanheads/devops-status-mcp-server.git
```
2. **进入目录:**
```
cd devops-status-mcp-server
```
3. **安装依赖:**
```
bun install
```
4. **配置环境:**
```
cp .env.example .env
# 如果你想覆盖默认设置,请编辑 .env
```
## 配置说明
无需 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`(针对单域名的 TLS 握手,以毫秒为单位)。调用者传入的 `timeout_ms` 将覆盖此设置。 | `5000` |
| `DEVOPS_STATUS_DNS_TIMEOUT_MS` | `devops_check_dns` 的默认 `timeout_ms`(针对单域名+解析器的查询,以毫秒为单位)。调用者传入的 `timeout_ms` 将覆盖此设置。 | `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_AUTH_MODE` | 认证模式:`none`、`jwt` 或 `oauth`。 | `none` |
| `MCP_LOG_LEVEL` | 日志级别 (RFC 5424)。 | `info` |
| `LOGS_DIR` | 日志文件目录(仅限 Node.js)。 | `标签:DNS检查, MCP, MITM代理, SSL/TLS, TypeScript, 安全插件, 库, 应急响应, 暗色界面, 状态监控, 自动化攻击, 请求拦截, 运维