Give Claude, Cursor, and Copilot a safe Kubernetes MCP server.
Not a dumb pipe for kubectl. Radar ships a built-in Kubernetes MCP server whose tools hand AI agents a pre-built topology, problem-correlated timelines, deduplicated events, and error-filtered logs - already minified, with secrets redacted. 22 read tools, 6 scoped write tools. Local-only by default, RBAC-aware, enabled on first install.
--no-mcpMore accurate. A fraction of the cost.
We ran the same 52-scenario Kubernetes benchmark with the same model - once driving Radar's MCP server, once driving raw kubectl through a shell. Radar reached a better diagnosis with 4x fewer tool calls, a much smaller token bill, and half the time.
Radar MCP scored 0.862 avg diagnostic quality vs 0.765 for kubectl, and passed 80.8% of scenarios vs 77.6%. More accurate - and it gets there with far less work.
11.1 vs 45.8 - roughly 4x fewer round-trips
Minified, enriched data instead of raw YAML floods
Less context to reason over, less to write back
169s vs 334s average agent time
Why the gap? Radar hands the model an already-computed picture - pre-built topology, problem-correlated timelines, deduplicated events, error-filtered logs - instead of making the agent reconstruct it from raw kubectl get -o yaml dumps, call after call.
Run it against your own cluster -
curl -fsSL https://get.radarhq.io | sh && kubectl radarRaw kubectl is a bad MCP tool.
Two problems kill the naive “let Claude run kubectl” setup.
Token waste. kubectl get pod -o yaml returns hundreds of lines of managedFields, status conditions, and metadata noise. Three of those and you've burned the model's context window on data you didn't need.
Write-access risk. Giving an agent shell access to your cluster means a wrong inference can run any command that identity can run, including destructive operations. You need write capabilities that are explicit, scoped, annotated, and easy for the client to confirm before execution.
Radar's MCP server fixes both. Reads are minified and enriched with Radar's already-computed topology and health. Writes are confined to six explicit tools, RBAC-enforced, and annotated as mutating or destructive where appropriate so the AI client can prompt before changing state. No delete tool, no arbitrary shell.
22 read tools. 6 write tools.
Each tool does work a raw kubectl wrapper can't - composing related calls into one, correlating timelines with problems, collapsing duplicate events, redacting secrets, and emitting minified output sized for a model's context window.
get_dashboardCluster health overview - resource counts, problems, warning events, Helm status. Auto-correlates the recent changes that touched any broken resource.
list_resourcesLists resources with minified summaries (pods, deployments, services, CRDs, etc.).
get_resourceDetailed view of a single resource, with optional events + relationships + metrics + logs in one call - one tool instead of four.
get_topologyPre-built topology graph (nodes + edges) or an LLM-friendly text summary of resource chains and problems.
get_eventsKubernetes events, deduplicated (same reason+message collapsed) and sorted by recency.
get_changesResource changes (creates, updates, deletes) from the cluster timeline, with computed diffs.
get_cluster_auditBest-practice findings with remediation - security, reliability, efficiency. Filter by namespace, category, severity.
get_pod_logsPod logs filtered to errors/warnings, with secret redaction. Falls back to the last 20 lines if nothing matches.
get_workload_logsLogs from every pod of a workload, deduplicated and error-prioritized across replicas.
list_namespacesList all namespaces with status.
list_helm_releasesList all Helm releases with status and health.
get_helm_releaseHelm release info with optional values, revision history, and manifest diff across revisions.
list_packagesWhat's installed in the cluster - one call instead of cross-referencing Helm + workload labels + CRDs + ArgoCD + Flux. Each row carries a sources array (H/L/C/A/F) so you can see WHY it was detected, plus per-source health and version. Catches operator orphans and same-cluster version disagreement.
issuesRanked stream of what's broken right now - failing workloads, pod-startup blockers, dangling references - across the whole cluster.
diagnoseRoot-cause one workload or GitOps reconciler in a single call, with the causal chain assembled for you.
get_neighborhoodBFS-expanded topology around one resource - cheaper than the full graph when you already know the root.
get_subject_permissionsEffective RBAC for a ServiceAccount, User, or Group - what they can actually do, and via which bindings.
searchFind resources by content - config keys, env refs, image names, labels - without knowing the kind up front.
top_resourcesLive CPU/memory ranked like `kubectl top | sort`, joined with workload context.
query_prometheusRun PromQL against the cluster's Prometheus, auto-discovered or configured.
discover_metricsFind exact metric names, enriched with type and help text from Prometheus metadata.
get_prometheus_rulesList Prometheus alerting and recording rules with their PromQL and current state.
apply_resourceCreate or update a Kubernetes resource from YAML.
manage_workloadRestart, scale, or rollback a Deployment, StatefulSet, or DaemonSet.
manage_cronjobTrigger, suspend, or resume a CronJob.
manage_gitopsManage ArgoCD and FluxCD resources - sync, reconcile, suspend, resume.
manage_nodeCordon, uncordon, or drain a Kubernetes node.
patch_resourcePatch one existing resource with a JSON Patch, merge patch, or strategic merge - precise field edits without rewriting the manifest.
cluster:// resourcesMCP resource URIscluster://healthCluster health summary (same data as get_dashboard).
cluster://topologyFull cluster topology graph.
cluster://eventsRecent warning events (up to 50).
Five MCP clients. Five copy-paste blocks. All verbatim.
Install Radar. Paste one of these into your MCP client's config. That's it.
claude mcp add radar --transport http http://localhost:9280/mcp{
"mcpServers": {
"radar": {
"type": "http",
"url": "http://localhost:9280/mcp"
}
}
}{
"mcpServers": {
"radar": {
"url": "http://localhost:9280/mcp"
}
}
}{
"servers": {
"radar": {
"type": "http",
"url": "http://localhost:9280/mcp"
}
}
}{
"mcpServers": {
"radar": {
"url": "http://localhost:9280/mcp",
"type": "streamableHttp"
}
}
}Also supported: Windsurf, JetBrains, Codex, Gemini CLI. See the full MCP docs for all 9 clients.
Real questions, the tools they'll resolve to.
get_dashboardget_pod_logs + get_events + get_resourceget_changesget_helm_release (with include=diff)get_topologyThe guardrails aren't optional.
Local-only
The MCP server runs on localhost alongside Radar - bound to 127.0.0.1, not your public interface. AI clients connect to your machine, not the cluster's control plane.
RBAC-aware
Respects your kubeconfig's RBAC permissions. If your ServiceAccount can't list secrets in the payments namespace, neither can the MCP-backed agent. Returns 403 for unauthorized resources.
Three layers of redaction
Secret data never exposed - only key names. Env var values scrubbed for API keys, tokens, and base64 blobs. Pod log output scrubbed for secret patterns before returning.
Read tools are strictly read
The read tools have no write path. No privilege-upgrade path from a read to a write. The tool hints annotate write tools so the AI client UI can prompt before executing them.
Explicit, annotated write tools
Write tools can restart, scale, patch/apply, sync, cordon, or drain. They are RBAC-enforced and marked mutating or destructive where appropriate so the client can prompt before execution. No delete tool, no arbitrary shell.
Disable with one flag
Pass `--no-mcp` when starting Radar to turn the server off entirely. On by default, off when you need it off - no stale config surface area.
One MCP endpoint for the whole org.
Local MCP is per-laptop and great for one engineer. When agents need to reach shared and production clusters across a team, Radar Cloud turns the same tools into a governed, audited endpoint. AI access to your clusters becomes something you can actually sign off on.
Set up once, for everyone
Install the Radar agent in each cluster one time. Your whole team's agents - Claude, Cursor, Copilot - reach every cluster through a single endpoint. No kubeconfigs to copy around, no per-cluster local Radar process to keep in sync.
RBAC you can trust
Agents act with the signed-in operator's identity through your SSO, enforced by Kubernetes RBAC. A viewer's agent can read but never mutate. The cluster itself governs access, so the same rules apply whether a human or an agent makes the call.
Audited tool activity
Tool-call activity is audited - who ran which tool, which cluster it targeted, and whether it succeeded, was blocked, or failed. High-volume successful loops are coalesced with counts; blocked and failed calls are preserved.
Apache 2.0. Yours to inspect, fork, or self-host.
Radar's source is on GitHub. Every feature on this page is in the binary you install with brew install. No telemetry, no mandatory login, no cluster data out. The one outbound call is an anonymous version check when the UI opens. If we ever change that, you'll see it in a diff first.
Questions we get about MCP.
Is Radar's MCP server safe to point at a production cluster?
Which AI clients does it support?
Is it actually better than letting an agent run kubectl directly?
Can I turn it off?
How does this work for a whole team instead of one laptop?
More of what Radar does in the same binary.
Issues & root cause
Failures grouped by subject, folded to the cause, with blast radius.
Applications view
Workloads folded into the apps they form, with health rollups and env skew.
GitOps for Argo + Flux
Fleet + per-app diagnosis with field-level drift, controller attribution, and lifecycle awareness.
Live topology graph
Every resource and connection, laid out by ELK.js, updated via SSE.
Point an agent at a real cluster. Safely.
Install Radar, paste a config block, and Claude can reason about your cluster in under a minute.
Apache 2.0 OSS · Unlimited clusters self-hosted · Hosted free tier for up to 3 clusters