devops-mcp
Unified MCP server for DevOps engineers — query and manage Kubernetes, ArgoCD, Prometheus, and PagerDuty from any MCP-compatible AI agent.
Power your agent
คำสั่งของผู้เผยแพร่เอง ไม่ใช่เอนด์พอยต์ของ PlugMCP
Host a copy with our keys and logs.
npx -y @notharshhaa/[email protected]Claude Code ไม่มีลิงก์ติดตั้งสำหรับคำสั่งแบบโลคัล ให้คัดลอกคำสั่งด้านล่างแล้วรันในเทอร์มินัล
KUBECONFIG=<value> K8S_CONTEXT=<value> ARGOCD_SERVER=<value> ARGOCD_TOKEN=<secret> PROMETHEUS_URL=<value> PROMETHEUS_BEARER_TOKEN=<secret> PAGERDUTY_TOKEN=<secret> PAGERDUTY_USER_EMAIL=<value> LOKI_URL=<value> LOKI_TOKEN=<secret> claude mcp add notharshhaa-devops-mcp -- npx -y @notharshhaa/devops-mcp@2.1.1รันในเทอร์มินัล
{ "mcpServers": { "notharshhaa-devops-mcp": { "command": "npx", "args": [ "-y", "@notharshhaa/[email protected]" ], "env": { "KUBECONFIG": "<value>", "K8S_CONTEXT": "<value>", "ARGOCD_SERVER": "<value>", "ARGOCD_TOKEN": "<secret>", "PROMETHEUS_URL": "<value>", "PROMETHEUS_BEARER_TOKEN": "<secret>", "PAGERDUTY_TOKEN": "<secret>", "PAGERDUTY_USER_EMAIL": "<value>", "LOKI_URL": "<value>", "LOKI_TOKEN": "<secret>" } } }}claude_desktop_config.json
URL แบบรีโมตหรือคำสั่งบนเครื่องของคุณ? การติดตั้งสองแบบต่างกันอย่างไร
รันบน PlugMCP
A new server you create. It is not this listing's official endpoint. Use the publisher install when you want their URL and their credentials.
เปิดจากผู้เผยแพร่
devops-mcp is an open source Model Context Protocol server that gives AI agents (Claude, etc.) real-time read and write access to your infrastructure stack — all from a single install.
Instead of copy-pasting kubectl output into a chat window, you can ask:
"Why is the payments deployment in CrashLoopBackOff?" "What changed in the last ArgoCD sync for the auth app?" "Show me the p99 latency for the API gateway over the last hour." "Who's on call right now and what incidents are open?" "Debug the payments service - what's wrong with it?"
...and get live answers, sourced directly from your cluster and tooling.
Providers included:
Add this to ~/.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"
}
}
}
}
Restart Claude Desktop. The devops server will appear in the tools list.
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
Requires Node.js 20 or newer.
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
All config is via environment variables. Only set the ones for providers you actually use — providers with missing config are silently skipped.
# ── 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
All tools follow a three-tier safety model:
dry_run: true; set dry_run: false to executeconfirm: true, or a 2026-07-28 client can complete the server's interactive MRTR confirmationk8s__*)argo__*)prom__*)Example usage:
# Get a human-readable health summary
prom__summarize_service_health(service="payments", timeframeMinutes=30, sloThreshold=0.05)
What it outputs:
Why this matters: Instead of raw PromQL numbers that require interpretation, this tool provides actionable insights that AI agents can use directly in responses, making monitoring data actually useful for incident investigation and communication.
logs__*)Example usage:
# 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)
Why this matters:
Output format:
This makes incident investigation complete by combining the "what" (metrics) with the "why" (logs).
pd__*)pd__summarize_incidentExample usage:
# Get an auto-summary of an incident
pd__summarize_incident(id="ABC123")
What it outputs:
Output format:
{
"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
}
}
Why this matters: Instead of manually piecing together incident details from multiple API calls, this tool provides a comprehensive, human-readable summary perfect for:
helm__*)Requirements: Helm CLI binary must be available in PATH.
Example usage:
# 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_serviceExample usage:
# Debug a service across all providers
devops__debug_service(service="payments", namespace="default")
What it checks:
Output format:
This is the most powerful tool for incident investigation - it gives you a complete picture of what's wrong with a service in seconds.
devops__explain_changeExample usage:
# Explain what changed in the last hour
devops__explain_change(service="payments", namespace="default", timeframeMinutes=60)
What it analyzes:
Output format:
Problem it solves: "Everything was working yesterday… what changed?"
This tool answers that question by correlating deployment events with metric anomalies, helping you quickly identify whether a recent deployment, config change, or external factor caused the issue.
devops__runbookExample usage:
# Diagnose a crashlooping service
devops__runbook(symptom="crashloop", service="payments", namespace="default")
# Investigate high latency
devops__runbook(symptom="high-latency", service="api-gateway")
Supported symptoms:
Output: Structured JSON with steps_executed[], findings[], and recommended_actions[].
devops__health_reportExample usage:
# Get a full cluster health assessment
devops__health_report(namespace="production")
What it gathers:
Output: Overall status (healthy / degraded / critical), per-provider sections, and summary. Perfect for morning standup checks or shift handoffs.
The MCP host launches devops-mcp as a subprocess and communicates over stdin/stdout. Zero network config. Auth comes from the local environment (kubeconfig, env vars). Process lifecycle tied to Claude Desktop.
npx @notharshhaa/devops-mcp
# or with env vars
KUBECONFIG=~/.kube/config npx @notharshhaa/devops-mcp
The HTTP entry serves MCP at POST /mcp using the 2026-07-28 stateless protocol. Each request gets a fresh MCP server instance, so requests can land on any replica without session affinity or shared protocol state. The same endpoint also accepts 2025-era Streamable HTTP clients in stateless compatibility mode.
MCP_HTTP_HOST=127.0.0.1 \
PORT=3000 \
MCP_AUTH_TOKEN=your-secret \
npx -y -p @notharshhaa/devops-mcp@latest devops-mcp-http
Connect clients to http://127.0.0.1:3000/mcp. For a container or remote service, set MCP_HTTP_HOST=0.0.0.0 and configure MCP_ALLOWED_HOSTS with the public/proxy hostnames. Put the service behind TLS for team use.
The deprecated devops-mcp-sse binary remains as a temporary alias for the HTTP entry, but /sse, /message, and /ws now return HTTP 410. Legacy HTTP+SSE and non-standard WebSocket clients must migrate to Streamable HTTP.
initialize requirement or Mcp-Session-Id on modern requests.server/discover, per-request client metadata, and MCP-Protocol-Version are handled by the official SDK.Mcp-Method and Mcp-Name headers are validated against the JSON-RPC body for gateway routing and authorization.server/discover and tools/list advertise deterministic, public cache hints using MCP_CACHE_TTL_MS (default 60 seconds).confirm: true; modern clients may instead complete an MRTR interactive confirmation. Confirmation state is HMAC-signed, expires after five minutes, and is bound to the exact tool arguments. Global dry-run blocks before prompting.MCP_REQUEST_STATE_SECRET must be the same on every replica for MRTR retries to land anywhere. When omitted, the server derives the key from MCP_AUTH_TOKEN, or uses a process-local random key when no token is configured.The built-in MCP_AUTH_TOKEN is a static bearer-token gate, not an OAuth authorization server. For Internet-facing deployments, terminate TLS and enforce your organization’s OAuth/OIDC policy at a gateway or integrate a dedicated identity provider; do not use deprecated Dynamic Client Registration for new deployments.
A minimal docker-compose.yml is available in examples/.
devops-mcp is designed for internal use inside a trusted network. That said:
@kubernetes/client-node. Supports exec plugins (AWS EKS, GKE). In-cluster: auto-mounts SA token. Add RBAC rules scoped to your desired permissions — run devops-mcp under a dedicated ServiceAccount with minimal verbs. Context selection is fixed by K8S_CONTEXT at startup; the tool only previews changes because runtime switching would affect other callers.argocd account generate-token --account devops-mcp. Create a dedicated account in argocd-cm with apiKey capability and a role limited to read + sync.dry_run: true. The AI must explicitly pass dry_run: false — it won't do this unless the user clearly requests an action.confirm: true directly, or use a 2026-07-28 client that supports the server's MRTR confirmation request. DEVOPS_MCP_DRY_RUN=true blocks execution even after confirmation.DEVOPS_MCP_AUDIT_LOG to a file path. Every tool call is written as a JSONL line with timestamp, tool name, parameters, and outcome. Mutations and destructive calls are flagged.DEVOPS_MCP_DRY_RUN=true to block every executing mutation, even when a caller passes dry_run: false. Safe previews remain available — useful for read-only team deployments.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
Key architectural features:
/mcp request creates a fresh server instance; no protocol session ID or sticky load balancing.K8S_ALLOWED_NAMESPACES restricts queries and mutations across Kubernetes, Helm, and Loki providers, preventing cross-tenant leakage.tools/list ordering and configurable public cache hints.Contributions are welcome. The most useful areas:
k8s__get_node_pressure, argo__get_app_logs)src/providers/yourprovider/ with index.ts, client.ts, and one file per resource group.src/server.ts..env.example and src/config.ts.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
Run against a local kind/minikube cluster for Kubernetes testing. Use DEVOPS_MCP_DRY_RUN=true to prevent accidental mutations during development.
grafana__*) — dashboards, annotations, datasourcesflux__*) — kustomizations, helm releases, image automationtfc__*) — workspace runs, state, variablesvault__*) — secret read (never write), lease statusdd__*) — metrics, monitors, eventsMIT — see LICENSE.
Built for DevOps and platform engineers who want AI that actually knows what's happening in their cluster.
Unified MCP server for DevOps engineers — query and manage Kubernetes, ArgoCD, Prometheus, and PagerDuty from any MCP-compatible AI agent.
{ "mcpServers": { "notharshhaa-devops-mcp": { "command": "npx", "args": [ "-y", "@notharshhaa/[email protected]" ], "env": { "KUBECONFIG": "<value>", "K8S_CONTEXT": "<value>", "ARGOCD_SERVER": "<value>", "ARGOCD_TOKEN": "<secret>", "PROMETHEUS_URL": "<value>", "PROMETHEUS_BEARER_TOKEN": "<secret>", "PAGERDUTY_TOKEN": "<secret>", "PAGERDUTY_USER_EMAIL": "<value>", "LOKI_URL": "<value>", "LOKI_TOKEN": "<secret>" } } }}เครื่องมือ
ยังไม่มีรายการเครื่องมือ เซิร์ฟเวอร์แบบรีโมตจะได้รายการหลังการตรวจสอบสถานะครั้งแรก
FAQ
คัดลอกคอนฟิก stdio สำหรับ Cursor, Claude Desktop, Claude Code หรือ VS Code ได้ในหน้านี้ คอนฟิกนี้ใช้การติดตั้งของผู้เผยแพร่ ไม่ใช่พร็อกซีของ PlugMCP
ผู้เผยแพร่ระบุตัวแปรสภาพแวดล้อมเหล่านี้: KUBECONFIG, K8S_CONTEXT, ARGOCD_SERVER, ARGOCD_TOKEN, PROMETHEUS_URL, PROMETHEUS_BEARER_TOKEN, PAGERDUTY_TOKEN, PAGERDUTY_USER_EMAIL, LOKI_URL, LOKI_TOKEN
Devops ทำงานแบบโลคัลผ่าน stdio
ตรวจสอบล่าสุดเมื่อ 2026-10-27 Unified MCP server for DevOps engineers — query and manage Kubernetes, ArgoCD, Prometheus, and PagerDuty from any MCP-compatible AI agent.