mcpField
D
devops-mcp

devops-mcp

本地服务
github.com/NotHarshhaa云与基础设施44 天前更新

关于 devops-mcp

devops-mcp 是面向 DevOps 工程师的开源 MCP 服务,让 AI Agent 通过一个服务查询和管理 Kubernetes、ArgoCD、Prometheus、PagerDuty、Loki 与 Helm。工具按读取、变更和破坏性操作分级,并为后两类设置执行确认机制。

主要功能

  1. 01整合六类 DevOps 工具
  2. 02查询集群、部署与资源状态
  3. 03读取指标、告警和日志
  4. 04查看事件及值班信息
  5. 05变更操作默认预演
  6. 06破坏性操作要求确认

适用场景

  1. 01调查 Kubernetes Pod 重启或部署异常
  2. 02比较 ArgoCD 同步前后的资源状态
  3. 03结合 Prometheus 指标和 Loki 日志排查故障
  4. 04查看 PagerDuty 事件与当前值班人员

MCP 相关

该项目是 MCP 服务,向兼容 MCP 的 AI Agent 提供 Kubernetes、ArgoCD、Prometheus、PagerDuty、Loki 和 Helm 的查询及管理工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"notharshhaa-devops": {
"command": "npx",
"args": [
"-y",
"@notharshhaa/devops-mcp"
],
"env": {
"KUBECONFIG": "<KUBECONFIG>",
"K8S_CONTEXT": "<K8S_CONTEXT>",
"ARGOCD_SERVER": "<ARGOCD_SERVER>",
"ARGOCD_TOKEN": "<ARGOCD_TOKEN>",
"PROMETHEUS_URL": "<PROMETHEUS_URL>",
"PROMETHEUS_BEARER_TOKEN": "<PROMETHEUS_BEARER_TOKEN>",
"PAGERDUTY_TOKEN": "<PAGERDUTY_TOKEN>",
"PAGERDUTY_USER_EMAIL": "<PAGERDUTY_USER_EMAIL>",
"LOKI_URL": "<LOKI_URL>",
"LOKI_TOKEN": "<LOKI_TOKEN>"
}
}
}
}
启动命令npx -y @notharshhaa/devops-mcp
需要配置的环境变量
KUBECONFIGPath to Kubernetes kubeconfig file
K8S_CONTEXTKubernetes context to use
ARGOCD_SERVERArgoCD server URL
ARGOCD_TOKEN密钥ArgoCD authentication token
PROMETHEUS_URLPrometheus server URL
PROMETHEUS_BEARER_TOKEN密钥Prometheus bearer token
PAGERDUTY_TOKEN密钥PagerDuty API token
PAGERDUTY_USER_EMAILPagerDuty user email for mutations requiring From header
LOKI_URLLoki server URL
LOKI_TOKEN密钥Loki authentication token

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@notharshhaa/devops-mcp2.1.1

工具

21

收录的工具列表 · 更新于 2 周前

参数类型必填说明
dry_runboolean否服务器端试运行(默认:true)
manifeststring是YAML 或 JSON 清单字符串
namespacestring否要应用到的命名空间(默认:取自清单或 "default")

详细介绍

devops-mcp

面向 DevOps 工程师的统一 MCP 服务——可通过任何兼容 MCP 的 AI Agent 查询和管理 Kubernetes、ArgoCD、Prometheus 和 PagerDuty。

npm 版本 许可证:MIT MCP


这是什么?

devops-mcp 是一个开源的 Model Context Protocol 服务,可让 AI Agent(Claude 等)实时读写你的基础设施技术栈——只需安装一次即可。

无需再把 kubectl 的输出复制粘贴到聊天窗口,你可以直接询问:

“payments 部署为什么处于 CrashLoopBackOff 状态?” “auth 应用在上一次 ArgoCD 同步中有哪些变更?” “显示 API 网关过去一小时的 p99 延迟。” “现在谁在值班?有哪些未解决的事件?” “调试 payments 服务——它出了什么问题?”

……即可获取直接来自集群和工具的实时答案。

包含的提供方:

前缀提供方传输方式
k8s__*Kubernetes(通过 kubeconfig 或集群内 SA)client-go
argo__*ArgoCDREST API
prom__*PrometheusHTTP API(PromQL)
pd__*PagerDutyREST API v2
helm__*HelmCLI(helm 二进制文件)
devops__*跨提供方事件调试聚合所有提供方
logs__*LokiHTTP API(LogQL)

快速开始

Claude Desktop(stdio — 推荐)

将以下内容添加到 ~/.config/claude/claude_desktop_config.json(macOS:~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "devops": {
      "command": "npx",
      "args": ["-y", "@notharshhaa/devops-mcp@latest"],
      "env": {
        "KUBECONFIG": "/home/you/.kube/config",
        "ARGOCD_SERVER": "https://argocd.company.com",
        "ARGOCD_TOKEN": "your-argocd-token",
        "PROMETHEUS_URL": "http://prometheus.monitoring:9090",
        "PAGERDUTY_TOKEN": "your-pd-api-token",
        "PAGERDUTY_USER_EMAIL": "[email protected]",
        "LOKI_URL": "http://loki.monitoring:3100",
        "LOKI_TOKEN": "your-loki-token"
      }
    }
  }
}

重启 Claude Desktop。devops 服务会出现在工具列表中。

Claude Code(CLI)
claude mcp add devops-mcp -e KUBECONFIG=$HOME/.kube/config \
  -e ARGOCD_SERVER=https://argocd.company.com \
  -e ARGOCD_TOKEN=... \
  -e PROMETHEUS_URL=http://prometheus:9090 \
  -e PAGERDUTY_TOKEN=... \
  -e LOKI_URL=http://loki.monitoring:3100 \
  -e LOKI_TOKEN=... \
  -- npx -y @notharshhaa/devops-mcp@latest
本地开发 / 测试

需要 Node.js 20 或更高版本。

npx @notharshhaa/devops-mcp
# or clone and run:
git clone https://github.com/NotHarshhaa/devops-mcp
cd devops-mcp
npm install
cp .env.example .env   # fill in your values
npm run dev

配置

所有配置均通过环境变量设置。只需设置实际使用的提供方所需的变量——缺少配置的提供方会被自动跳过,不会发出提示。

# ── Kubernetes ────────────────────────────────────────────────
KUBECONFIG=/home/user/.kube/config       # omit to use in-cluster service account
K8S_CONTEXT=my-prod-context              # optional: pin a specific context
K8S_ALLOWED_NAMESPACES=default,backend   # optional: restrict namespace access

# ── ArgoCD ───────────────────────────────────────────────────
ARGOCD_SERVER=https://argocd.company.com
ARGOCD_TOKEN=eyJhbGci...                 # argocd account generate-token

# ── Prometheus ───────────────────────────────────────────────
PROMETHEUS_URL=http://prometheus:9090
PROMETHEUS_BEARER_TOKEN=                 # optional: for authenticated Prometheus

# ── PagerDuty ────────────────────────────────────────────────
PAGERDUTY_TOKEN=your-api-v2-token
[email protected]     # required for PagerDuty incident mutations (From header)

# ── Loki ───────────────────────────────────────────────────
LOKI_URL=http://loki.monitoring:3100
LOKI_TOKEN=your-loki-token

# ── Stateless Streamable HTTP ────────────────────────────────
# For stdio mode (default): no transport config needed
MCP_HTTP_HOST=127.0.0.1                 # use 0.0.0.0 inside a container
PORT=3000
MCP_AUTH_TOKEN=shared-secret            # optional static Bearer token
MCP_REQUEST_STATE_SECRET=32+-byte-secret # optional MRTR signing key shared by all replicas
MCP_ALLOWED_HOSTS=localhost,127.0.0.1   # required with non-loopback binding
MCP_ALLOWED_ORIGINS=                    # optional browser Origin hostname allowlist
MCP_CACHE_TTL_MS=60000                  # discovery/tools catalog TTL; 0 disables caching

# ── Safety ───────────────────────────────────────────────────
DEVOPS_MCP_DRY_RUN=false                # true = block all mutations globally
DEVOPS_MCP_AUDIT_LOG=/var/log/devops-mcp-audit.jsonl

工具参考

所有工具均遵循三级安全模型:

  • 读取 — 安全,无副作用,无需确认
  • 修改 — 默认设置为 dry_run: true;设置 dry_run: false 执行操作
  • 破坏性操作 — 需要设置 confirm: true;或者,2026-07-28 及之后版本的客户端可以完成服务端的交互式 MRTR 确认
Kubernetes(k8s__*)
工具层级描述
k8s__list_podsread列出 Pod 的状态、重启次数、节点和运行时长
k8s__get_pod_logsread查看或流式输出 Pod 容器的日志
k8s__describe_resourceread查看任意资源类型的完整描述(pod、service、configmap、secret[值会自动隐藏]、deployment、statefulset、daemonset、job、cronjob)
k8s__get_eventsread查看集群或命名空间事件,可按原因筛选
k8s__list_deploymentsread列出 Deployment 的副本数、滚动更新健康状况和容器镜像
k8s__get_resource_usageread通过 metrics-server 查看各 Pod 的 CPU/内存使用情况
k8s__get_node_statusread查看节点健康状况、条件、容量、可分配资源和污点
k8s__get_network_policiesread查看网络策略、Pod 选择器及入站/出站规则
k8s__get_ingressesread查看 Ingress 资源的主机、路径、后端和 TLS 配置
k8s__list_cronjobsread列出 CronJob 的计划、上次运行时间、活动作业和暂停状态
k8s__get_cronjob_statusread查看详细的 CronJob 状态及近期作业历史
k8s__diff_resourceread比较当前资源状态与上次应用的配置
k8s__get_hparead查看 HorizontalPodAutoscaler 的当前/目标指标和扩缩容状态
k8s__list_pvcsread列出 PersistentVolumeClaim 的状态、容量和存储类
k8s__list_servicesread列出 Service 的类型、端口、选择器、clusterIP 和端点
k8s__list_contextsread列出所有 kubeconfig 上下文及当前活动上下文
k8s__switch_contextmutate预览上下文选择;设置 K8S_CONTEXT 并重启,以安全地应用更改
k8s__scale_deploymentmutate调整副本数,并预览 dry-run 差异
k8s__apply_manifestmutate使用服务端 dry-run 应用清单字符串
k8s__rollout_restartmutate触发 Deployment 或 StatefulSet 的滚动重启
k8s__delete_resourcedestructive删除指定名称的资源(pod、service、configmap、secret、deployment、statefulset、daemonset、job、cronjob)——需要直接确认或交互式确认
ArgoCD(argo__*)
工具层级描述
argo__list_appsread列出所有应用及其健康状况、同步状态和源代码仓库
argo__get_appread查看单个应用的完整规范和状态
argo__get_app_diffread查看 Git 与集群状态之间的实时差异
argo__get_app_historyread查看部署历史及 Git SHA 和时间戳
argo__get_resource_treeread查看应用拥有的完整资源树
argo__sync_appmutate触发同步——支持 dry-run、prune 和 force
argo__rollback_appmutate预览回滚到历史版本;设置 dry_run: false 以执行
argo__terminate_opmutate预览取消进行中的同步;设置 dry_run: false 以执行
Prometheus(prom__*)
工具层级描述
prom__query读取即时 PromQL 查询,输出标签和数值
prom__query_range读取范围查询,指定步长,返回时间序列数据
prom__list_alerts读取列出所有告警规则及其状态(触发中 / 待处理 / 未激活)
prom__get_firing_alerts读取仅列出当前正在触发的告警及持续时间
prom__list_targets读取列出所有抓取目标及其健康状态和上次抓取时间
prom__label_values读取列举给定标签名称的所有值
prom__metric_metadata读取获取指标的类型、帮助文本和单位
prom__compare_periods读取📈 对比指标:比较两个时间窗口之间的指标,检测部署前后的变化
prom__slo_status读取🎯 SLO 合规情况:剩余错误预算、消耗速率、预算耗尽时间
prom__summarize_service_health读取📊 智能摘要:以易读的方式汇总服务健康指标,包括延迟变化、错误率与 SLO 的对比,以及流量模式

使用示例:

# Get a human-readable health summary
prom__summarize_service_health(service="payments", timeframeMinutes=30, sloThreshold=0.05)

输出内容:

  • 延迟:"延迟上升:120ms → 480ms(+300%)"或"延迟稳定:125ms"
  • 错误率:"错误率超出 SLO(5%):7.2%"或"错误率符合 SLO:2.1%"
  • 流量:"流量下降:500 → 350 req/s(-30%)"或"检测到流量激增(+150%)"
  • 总体评估:总结问题和积极指标

为什么这很重要: 相比需要人工解读的原始 PromQL 数值,此工具能够提供可直接用于回复的可操作洞察,供 AI Agent 使用,让监控数据真正有助于事件调查和沟通。

Loki(logs__*)
工具层级描述
logs__get_recent_errors读取从 Loki 获取近期错误日志,以便调试事件
logs__search读取使用自定义查询在 Loki 中搜索日志,以分析根本原因

使用示例:

# Get recent error logs
logs__get_recent_errors(service="payments", namespace="default", minutes=30, limit=50)

# Search logs with custom query
logs__search(query='{service="payments"} |= level="error"', limit=100)

为什么这很重要:

  • 指标说明发生了什么:Prometheus 会显示延迟上升或错误率超出 SLO
  • 日志说明原因:Loki 会显示实际错误消息、堆栈跟踪和故障上下文
  • 完整调试:没有日志时,你可以发现问题,却无法了解根本原因

输出格式:

  • 结构化日志条目,包含时间戳、消息、服务、命名空间和提取的日志级别
  • 错误数量摘要和筛选结果
  • 用于详细分析的原始 LogQL 结果

通过结合“发生了什么”(指标)和“为什么发生”(日志),即可完整调查事件。

PagerDuty(pd__*)
工具层级描述
pd__list_incidents读取列出未解决事件及其严重程度、状态和负责人
pd__get_incident读取获取完整详情,包括告警、备注和时间线
pd__who_is_oncall读取查询各排班表或升级策略当前的值班人员
pd__list_services读取列出所有服务及其集成密钥和状态
pd__get_log_entries读取获取事件的审计日志(所有状态变更)
pd__acknowledge_incident修改预览确认操作;设置 dry_run: false 以执行
pd__add_note修改预览追加备注;设置 dry_run: false 以执行
pd__escalate_incident破坏性升级至其他策略——需要直接确认或交互式确认
pd__summarize_incident读取🚨 事件自动摘要:发生了什么、受影响的服务、可能的根本原因和当前状态
pd__summarize_incident

示例用法:

# Get an auto-summary of an incident
pd__summarize_incident(id="ABC123")

输出内容:

  • 发生了什么:事件标题、描述、严重程度、紧急程度、状态、创建时间和持续时间
  • 受影响的服务:服务名称、ID 和当前状态
  • 可能的根本原因:分析触发的告警和日志条目,以确定可能的原因
  • 当前状态:当前事件状态、受指派人、确认情况和备注数量

输出格式:

{
  "what_happened": {
    "title": "API Gateway High Error Rate",
    "description": "5xx error rate exceeded 5% threshold",
    "severity": "high",
    "urgency": "high",
    "status": "acknowledged",
    "createdAt": "2025-01-15T10:30:00Z",
    "updatedAt": "2025-01-15T11:45:00Z",
    "duration": "1h 15m"
  },
  "affected_services": [
    {
      "id": "P123456",
      "name": "API Gateway",
      "status": "critical"
    }
  ],
  "probable_root_cause": "Triggered by: High 5xx error rate from API Gateway pods",
  "current_status": {
    "status": "acknowledged",
    "lastUpdated": "2025-01-15T11:45:00Z",
    "assignees": ["[email protected]"],
    "acknowledgements": 2,
    "notes": 3
  }
}

重要性: 无需手动通过多次 API 调用拼凑事件详情,此工具即可提供全面、易读的摘要,非常适用于:

  • 演示:展示 AI 理解和总结复杂事件数据的能力
  • 实际使用:无需翻查原始数据,即可快速了解事件影响
  • 沟通:与利益相关者分享简洁的事件摘要
Helm(helm__*)
工具层级描述
helm__list_releasesread列出 Helm 发布版本及其状态、Chart 和应用版本
helm__get_statusread获取 Helm 发布版本的完整状态
helm__get_valuesread获取用户提供或计算得出的发布版本配置值
helm__get_historyread获取发布版本的修订历史
helm__rollbackmutate回滚到之前的修订版本(默认试运行)

要求: Helm CLI 二进制文件必须位于 PATH 中。

示例用法:

# List all releases in a namespace
helm__list_releases(namespace="production")

# Check what values a release is using
helm__get_values(name="api-gateway", all_values=true)

# Rollback after a bad deploy
helm__rollback(name="api-gateway", revision=5, dry_run=false)
跨提供商调试(devops__*)
工具层级描述
devops__debug_serviceread🔥 跨提供商事件调试 - 汇总 Kubernetes、ArgoCD、Prometheus 和 PagerDuty 数据,通过一条命令诊断服务问题
devops__explain_changeread🧠 解释发生的变更 - 综合 ArgoCD 历史、Kubernetes 发布历史和 Prometheus 异常时间窗口,找出问题原因
devops__runbookread📋 自动化运行手册 - 基于症状的诊断,可运行针对性检查(崩溃循环、高延迟、内存溢出、5xx、Pod 等待调度)
devops__health_reportread🏥 集群健康报告 - 一次性评估所有提供商的状态,并给出整体状态(健康/降级/严重)
devops__incident_timelineread🕐 事件时间线 - 汇总 K8s、ArgoCD、Prometheus 和 PagerDuty 的事件,并按时间顺序排列
devops__debug_service

示例用法:

# Debug a service across all providers
devops__debug_service(service="payments", namespace="default")

检查内容:

  • Kubernetes:Pod 状态、重启次数、就绪情况、部署健康状况、近期事件
  • ArgoCD:同步状态、健康状态、Git 差异检测、部署历史
  • Prometheus:错误率(5xx 响应)、延迟(p95)、触发中的告警
  • PagerDuty:与服务名称匹配的活动事件

输出格式:

  • 带表情符号标记的易读诊断结果(⚠️ 警告、❌ 错误)
  • 按提供商划分的状态部分
  • 突出显示关键问题的摘要
  • 供详细分析使用的原始 JSON 数据

这是用于事件调查的最强大工具,可在数秒内全面呈现服务的问题所在。

devops__explain_change

示例用法:

# Explain what changed in the last hour
devops__explain_change(service="payments", namespace="default", timeframeMinutes=60)

分析内容:

  • ArgoCD:时间范围内的部署历史记录,包括修订版本、作者、仓库和 chart
  • Kubernetes:当前发布状态、副本数量、镜像标签和部署就绪情况
  • Prometheus:时间范围内的错误率趋势、延迟模式和流量峰值

输出格式:

  • 包含完整元数据的近期部署时间线
  • Kubernetes 发布状态和健康状况
  • 指标异常检测(错误率峰值、延迟问题、流量变化)
  • 将部署与指标变化关联起来的关联分析
  • 包含根因假设的摘要

解决的问题: “昨天一切还好好的……发生了什么变化?”

此工具通过将部署事件与指标异常相关联来回答这个问题,帮助你快速判断问题是否由近期部署、配置更改或外部因素导致。

devops__runbook

示例用法:

# Diagnose a crashlooping service
devops__runbook(symptom="crashloop", service="payments", namespace="default")

# Investigate high latency
devops__runbook(symptom="high-latency", service="api-gateway")

支持的症状:

症状检查内容
crashloopPod 状态 → 日志(尾部 50 行)→ BackOff 事件 → 部署健康状况
high-latencyp95 延迟 → 资源使用情况 → 触发中的告警 → 近期部署
oomOOMKilled 事件 → 内存使用情况 → pod describe → 资源限制
5xx错误率 → Loki 错误日志 → 部署健康状况
pod-pending调度事件 → 等待中的 Pod → 节点容量

**输出:**结构化 JSON,包含 steps_executed[]、findings[] 和 recommended_actions[]。

devops__health_report

示例用法:

# Get a full cluster health assessment
devops__health_report(namespace="production")

收集内容:

  • Kubernetes:不健康的 Pod、未达到期望副本数的部署
  • Prometheus:触发中的告警数量
  • ArgoCD:不同步和不健康的应用
  • PagerDuty:未解决事件数量

**输出:**总体状态(healthy / degraded / critical)、各提供方的分区以及摘要。非常适合晨会检查或轮班交接。


部署选项

stdio(推荐用于本地使用)

MCP 宿主将 devops-mcp 作为子进程启动,并通过 stdin/stdout 进行通信。无需网络配置。身份验证来自本地环境(kubeconfig、环境变量)。进程生命周期与 Claude Desktop 绑定。

npx @notharshhaa/devops-mcp
# or with env vars
KUBECONFIG=~/.kube/config npx @notharshhaa/devops-mcp
无状态 Streamable HTTP(共享部署)

HTTP 入口通过 POST /mcp 使用 2026-07-28 无状态协议提供 MCP 服务。每个请求都会获得一个全新的 MCP 服务实例,因此请求可以发送到任意副本,无需会话亲和性或共享协议状态。同一端点也以无状态兼容模式接受使用 Streamable HTTP 的 2025 年客户端。

MCP_HTTP_HOST=127.0.0.1 \
PORT=3000 \
MCP_AUTH_TOKEN=your-secret \
npx -y -p @notharshhaa/devops-mcp@latest devops-mcp-http

将客户端连接到 http://127.0.0.1:3000/mcp。对于容器或远程服务,请设置 MCP_HTTP_HOST=0.0.0.0,并使用公共/代理主机名配置 MCP_ALLOWED_HOSTS。供团队使用时,请将服务置于 TLS 之后。

已弃用的 devops-mcp-sse 二进制文件仍作为 HTTP 入口的临时别名保留,但 /sse、/message 和 /ws 现在会返回 HTTP 410。旧版 HTTP+SSE 和非标准 WebSocket 客户端必须迁移到 Streamable HTTP。

2026-07-28 行为
  • 现代请求不需要 initialize,也不需要 Mcp-Session-Id。
  • 官方 SDK 负责处理 server/discover、每个请求的客户端元数据和 MCP-Protocol-Version。
  • Mcp-Method 和 Mcp-Name 标头会与 JSON-RPC 正文进行校验,以用于网关路由和授权。
  • server/discover 和 tools/list 会通过 MCP_CACHE_TTL_MS(默认为 60 秒)公布确定性的公开缓存提示。
  • 具有破坏性的工具接受 confirm: true;现代客户端也可以通过 MRTR 交互式确认完成确认。确认状态采用 HMAC 签名,5 分钟后过期,并绑定到确切的工具参数。全局试运行模式会在提示确认前阻止操作。
  • 所有副本的 MCP_REQUEST_STATE_SECRET 必须相同,MRTR 重试才能由任意副本处理。如果未设置,服务器会从 MCP_AUTH_TOKEN 派生密钥;如果未配置令牌,则使用进程本地随机密钥。
  • 仍支持 2025 年时期的 Streamable HTTP 和 stdio 客户端。不支持有状态 HTTP 和旧版 HTTP+SSE。

内置的 MCP_AUTH_TOKEN 是静态 Bearer 令牌门禁,并非 OAuth 授权服务器。对于面向互联网的部署,应在网关处终止 TLS 并执行组织的 OAuth/OIDC 策略,或集成专用身份提供商;新部署不要使用已弃用的 Dynamic Client Registration。

examples/ 中提供了最精简的 docker-compose.yml。


安全模型

devops-mcp 旨在受信任网络内供内部使用。尽管如此:

  • Kubernetes: 通过 @kubernetes/client-node 使用标准 kubeconfig。支持 exec 插件(AWS EKS、GKE)。在集群内运行时:自动挂载 SA 令牌。根据所需权限添加 RBAC 规则——以专用 ServiceAccount 运行 devops-mcp,并仅授予最少的动词权限。上下文选择由启动时的 K8S_CONTEXT 固定;该工具只会预览变更,因为运行时切换会影响其他调用方。
  • ArgoCD: 生成长期有效的令牌:argocd account generate-token --account devops-mcp。在 argocd-cm 中创建具有 apiKey 能力的专用账户,并将角色权限限制为读取和同步。
  • Prometheus: 在集群内通常无需身份验证。如果使用带身份验证的 Grafana Mimir 或 Thanos,请传入 Bearer 令牌。所有工具均为只读,因此只需最少权限。
  • PagerDuty: 在 PagerDuty → API Access → Create New API Key 中创建专用 API 密钥。如果需要确认/升级工具,请选择 Full Access;如果需要安全模式,请选择 Read-only。
  • 默认情况下,变更操作采用试运行模式。 每个变更工具的 dry_run: true 都是默认值。AI 必须显式传入 dry_run: false——除非用户明确要求执行操作,否则不会这样做。
  • 具有破坏性的工具需要确认。 直接传入 confirm: true,或使用支持服务器 MRTR 确认请求的 2026-07-28 客户端。即使确认后,DEVOPS_MCP_DRY_RUN=true 仍会阻止执行。
  • 审计日志。 将 DEVOPS_MCP_AUDIT_LOG 设置为文件路径。每次工具调用都会以 JSONL 行的形式写入时间戳、工具名称、参数和结果。变更操作和破坏性调用会被标记。
  • 全局试运行模式。 设置 DEVOPS_MCP_DRY_RUN=true,即可阻止执行任何变更操作,即使调用方传入了 dry_run: false。安全预览仍可使用——适用于只读团队部署。

架构

Client / UI agents (Claude Desktop, Claude Code, gateways)
       │
       ▼
  MCP v2 Serving Layer
  ┌──────────────────────────────────────────┐
  │ serveStdio       │ POST /mcp             │
  │ 2025 + 2026 eras │ stateless per request │
  │                  │ routing/header checks │
  └──────────────────────────────────────────┘
       │
       ▼
  Server Factory & Tool Registry
  ┌──────────────────────────────────────────┐
  │ Fresh protocol instance per HTTP request │
  │ Deterministic tool catalog + cache hints │
  │ MRTR confirmation for destructive tools │
  │ Audit logging and error normalization    │
  └──────────────────────────────────────────┘
       │
       ▼
  ┌─────┬──────┬──────┬──────┬──────┬──────┐
  k8s   argo   prom   pd     logs   helm
       │
       ▼
  Dry-run guard │ Namespace policy │ Provider credentials

关键架构特性:

  • **无状态远程协议:**每个 /mcp 请求都会创建一个全新的服务实例;没有协议会话 ID,也不需要粘性负载均衡。
  • **兼容两个时期的客户端:**官方 SDK 入口支持 2026-07-28 版本,以及兼容的 2025 年时期 stdio/Streamable HTTP 客户端。
  • **运行时架构验证:**Zod 架构会在分发前验证工具参数;输入无效时提供清晰、结构化的错误反馈。
  • 严格的命名空间隔离:K8S_ALLOWED_NAMESPACES 会限制 Kubernetes、Helm 和 Loki 提供程序中的查询与变更,防止跨租户数据泄漏。
  • **凭据与密钥安全:**资源描述操作会自动屏蔽并脱敏 Secret 负载数据。
  • **适用于网关的路由:**现代方法和工具标头会在分发前经过验证。
  • 安全缓存:tools/list 顺序确定,并可配置公共缓存提示。
  • **提供程序隔离:**每个提供程序均可独立配置,且在不可用时会安全跳过。

贡献

欢迎贡献。以下方面最有帮助:

  • 新增提供程序 — Grafana、Datadog、Vault、Terraform Cloud、Flux CD
  • 新增工具 — 在现有提供程序中添加工具(例如 k8s__get_node_pressure、argo__get_app_logs)
  • 改进输出格式 — 针对特定资源类型提供更丰富的结构化响应
  • 测试 — 使用模拟客户端为提供程序逻辑编写单元测试
添加新的提供程序
  1. 创建 src/providers/yourprovider/,其中包含 index.ts、client.ts,以及每个资源组对应的一个文件。
  2. 在 src/server.ts 中注册该提供程序。
  3. 在 .env.example 和 src/config.ts 中添加配置项。
  4. 按照现有表格格式在此 README 中记录工具。
  5. 提交 PR。
本地开发
git clone https://github.com/NotHarshhaa/devops-mcp
cd devops-mcp
npm install
cp .env.example .env
npm run dev        # tsx watch — restarts on file change

使用本地 kind/minikube 集群进行 Kubernetes 测试。开发期间使用 DEVOPS_MCP_DRY_RUN=true,以防意外变更。


路线图

  • Grafana 提供程序(grafana__*)— 仪表板、注释、数据源
  • Flux CD 提供程序(flux__*)— kustomization、Helm 发布、镜像自动化
  • Terraform Cloud 提供程序(tfc__*)— 工作区运行、状态、变量
  • HashiCorp Vault 提供程序(vault__*)— 读取密钥(绝不写入)、租约状态
  • Datadog 提供程序(dd__*)— 指标、监控器、事件
  • 用于查看提供程序健康状态、任务进度和审计事件的 Web UI

许可证

MIT — 参见 LICENSE。


为希望 AI 真正了解其集群中正在发生什么的 DevOps 和平台工程师打造。

评论

支持 Markdown

第一次接触 MCP?

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

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