Skip to content
Agentmart
Submit a tool

Radar Kubernetes MCP Server

Kubernetes MCP server for diagnosis, resource management, GitOps, and RBAC-enforced operations.

Connector by skyhook-io · GitHub account verified by the MCP Registry

IndexedApache-2.0Remote (HTTP)★ 3,906
Write a review

Install

Pick your client. Read the repository before you give any tool access to your data.

No install instructions from the source yet. Check the repository for setup steps.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Kubernetes MCP server for diagnosis, resource management, GitOps, and RBAC-enforced operations.

Use cases: containers-kubernetes, incident-response, monitoring-observability

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
23 read · 7 write · 0 delete · 5 not yet classified
Secrets
None asked for
Install scripts
Not scanned yet
Runs as
Docker image

Tools by what they do 35

Read from the source code; the running server may list different tools.

Read 23 · Look things up without changing anything.

  • discover_metrics
  • get_changes
  • get_cluster_audit
  • get_cluster_upgrade_readiness
  • get_cost
  • get_dashboard
  • get_events
  • get_helm_release
  • get_neighborhood
  • get_pod_logs
  • get_prometheus_rules
  • get_resource
Show 11 more tools
  • get_rightsizing
  • get_runtime_versions
  • get_subject_permissions
  • get_topology
  • get_workload_logs
  • list_helm_releases
  • list_namespaces
  • list_packages
  • list_resources
  • query_prometheus
  • search

Write 7 · Create, change, send or run things.

  • apply_resource
  • manage_cronjob
  • manage_gitops
  • manage_node
  • manage_rollout
  • manage_workload
  • patch_resource

Not yet classified 5 · We could not tell from the name and description.

  • barman-cloud.cloudnative-pg.io
  • diagnose
  • issues
  • top_resources
  • wait_for

Tools (35)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • apply_resource

    Create or update a Kubernetes resource from a YAML manifest. In 'apply' mode (default), performs a server-side apply with FieldManager=radar and reports field ownership conflicts instead of taking ownership by default. Set force=true only when you intend to take field ownership from other managers (Helm, Flux, GitOps controllers, kubectl). In 'create' mode, performs a strict create that fails if the resource already exists. Supports multi-document YAML separated by '---'. Use dry_run to validate without persisting changes and preview the server-side result. Multi-document failures return per-d…

  • barman-cloud.cloudnative-pg.io
  • diagnose

    Description is built at runtime.

  • discover_metrics

    Use BEFORE query_prometheus when unsure of exact metric or label names. Lists metric names matching a selector (match={__name__=~"node_cpu.*"}) with their type (counter vs gauge — counters need rate()) and help text, or values of one label (label=namespace). Returns up to limit values from the last hour of active series; truncated=true means narrow the match. Never answer about metric values from this tool — names prove existence, not magnitude.

  • get_changes

    Use when the symptom is 'this worked earlier' or 'something broke after a deploy/config change.' Returns recent meaningful changes ranked with spec/config changes first, including field-level diffs for Deployment env/probes and structured ConfigMap data when available. Secret data updates appear when referenced by a workload template or current Pod spec at query time; kind=Secret lists all. consumed_by means referenced by; running_previous_value names Pods likely still on the earlier env value (absence means not established); *_withheld counts names you can't read. `application_configuration_c…

  • get_cluster_audit

    Use when the agent's decision is 'is this cluster well-configured / compliant?' — STATIC CONFIG POSTURE, not live operational state. Returns best-practice findings: Security (runAsRoot, privileged containers, dangerous capabilities, hostPath/hostNetwork, secret-in-ConfigMap), Reliability (single replicas, missing PDB, missing TopologySpread, podHARisk, Service/Ingress without matching backends, stuckTerminating, deprecatedAPIVersion), and Efficiency (missing resource requests/limits, orphaned ConfigMaps/Secrets, stale PVCs/PVs). Each finding has remediation guidance. INDEPENDENT of operational…

  • get_cluster_upgrade_readiness

    Analyze the impact of upgrading the cluster to a target Kubernetes minor version (default: the next minor above the current version). Runs the evidenced check catalog (reviewed through 1.37): version skew, removed/deprecated API usage (live manifests, Helm sources, API-server metrics), node runtime and cgroup evidence, drain feasibility, admission/conversion webhook readiness, and release-specific configuration checks. The verdict is NOT a readiness guarantee: checks with status `unknown` had incomplete evidence and may hide blockers — report them alongside the verdict, never as passed. `cover…

  • get_cost

    Read estimated Kubernetes costs from OpenCost or Kubecost. Choose summary, workloads (needs namespace; add kind+name for one workload), nodes, or trend. Use get_rightsizing for request recommendations and top_resources for live usage. Check availability, scope, and cost basis before reporting totals.

  • get_dashboard

    Use for inventory-style cluster or namespace health triage, like `kubectl get all` plus detected problems and warning events in one call. Returns resource counts, failing pods, unhealthy workloads, Warning-event groups (warningGroups: up to 20, ordered by lastSeen descending; use lastSeen for liveness, count for cumulative occurrence volume, and objectCount for breadth — objects is a capped sample of up to 3 involved resources, objectsTruncated flags more; if warningGroupsTruncated, more groups exist — use get_events with namespace/kind/name and a higher limit), and Helm release status so you …

  • get_events

    Use for recent Kubernetes events after an overview points at a namespace or resource, or when the symptom is scheduling, pulling images, restarts, failed mounts, readiness, or controller errors. Events are deduplicated and sorted Warning-groups-first, then by recency, with reason, message, and count — so warnings always lead, and lifecycle events (Scheduled, Pulled, Started) follow as timeline evidence. Set type=Warning to see only warnings, or type=Normal for only lifecycle events. For a ranked issue list that includes problems/conditions, use issues first.

  • get_helm_release

    Use after identifying a specific native Helm release to inspect owned resources, health, current or recovered operation failures, and hook diagnostics. The namespace argument is the Helm storage namespace: use `storageNamespace` from list_helm_releases when present, otherwise use the release namespace. Request values, history, operations, or revision comparisons with `include`; returned values are key-aware redacted.

  • get_neighborhood

    Use when investigating cross-resource failures around a known resource: service routing, targetPort/selector/endpoints problems, dependency timeouts, config/secret refs, owner chains, or traffic not reaching pods. Returns the BFS-expanded topology neighborhood around one root, which is usually cheaper and clearer than get_topology once you have a suspect. Typical flow: issues/search/list_resources identify a Service or workload, then get_neighborhood traces its upstream/downstream Services, workloads, Pods, refs, and owners. Profile auto (default) picks a bounded edge set from the root kind; p…

  • get_pod_logs

    Use only after narrowing to a specific Pod/container. Returns diagnostically relevant log lines (errors, panics, stack traces, warnings) or falls back to recent tail lines. When grep is set, it replaces diagnostic filtering and returns only regex matches, like `kubectl logs | grep PATTERN`. Use it when you know an error string, request path, service name, or trace id. For broad incidents, first use issues, get_dashboard, search, list_resources, or get_neighborhood to avoid reading logs from many unrelated pods. If the target is a config value, feature flag, CRD field, env ref, or YAML/spec con…

  • get_prometheus_rules

    List Prometheus alerting and recording rules with their PromQL definitions, state (firing/pending/inactive), labels, annotations, and active alert instances. When investigating a firing alert, ALWAYS fetch its rule definition here FIRST, then run its query with query_prometheus to see the actual values. state=firing shows everything currently alerting. Filters are substring matches; results cap at limit (default 50) with truncated=true — narrow rather than paging.

  • get_resource

    Use AFTER narrowing to one resource. Returns the resource's Kubernetes-shaped spec/status/metadata plus resourceContext when available (relationships, refs, controller observations, issue/audit/policy rollups; use include=issues for bounded failures and diagnostic facts, or diagnose for a bundle; for a Node's current read-only pod/PDB drain estimate use include=drain-plan; audit findings are static posture and remediation priority, not evidence of an active outage; auditSummary.highestSeverity uses the Checks ladder (critical|high|medium|low; current built-ins are high|medium), separate from i…

Show 20 more tools
  • get_rightsizing

    Recommend CPU/memory requests for Deployments, StatefulSets, and DaemonSets using 7 days of usage. scope=workload is cheap and precise; namespace/cluster scans run in the background for up to 3 minutes. Follow nextCall while scanStatus=running. Results are retained up to 15 minutes; use refresh=true after changes. Scans rank safety risks and increases before reductions. Scan once, then inspect workloads. Check confidence, missing evidence, and manual-review reasons. Request reductions do not directly imply bill savings.

  • get_runtime_versions

    Which running workloads use which runtime version, for runtime CVEs (PHP, Node, Python, Go, Java, …). Reads the version each running image declares in its config (PHP_VERSION etc., set by Docker official images and inherited by images built FROM them) for the digest the Pod runs: manifest and config only. Declared, not proof; misses runtimes installed from distro packages, so also search Trivy reports for the CVE. Pass runtime and fixed_in to rank images below their branch's fix. A status other than ok means unknown, not absent.

  • get_subject_permissions

    Use without verb/resource to inspect effective RBAC, granting bindings, flat rules, and, for ServiceAccounts, Pods running under it (`usedByPods`). `usedByPods` is best-effort and omitted when unavailable; absence is not proof no Pod uses the ServiceAccount. For ServiceAccount subjects, effective permissions include implicit-group grants such as `system:authenticated` and `system:serviceaccounts`; `inheritedFromGroup` identifies those bindings, while `flatRules` merges them without provenance. User and Group subjects include only bindings that name them directly. Supply both verb and resource …

  • get_topology

    Use to map a multi-service incident or dependency graph, preferably scoped to a namespace. Returns Kubernetes resource nodes and edges (Services, workloads, Pods, Ingresses, ConfigMaps, Secrets, owners) so you can see service-to-workload routing and ownership relationships instead of inspecting resources one by one. Use view=traffic for routing/connectivity questions and view=resources for ownership/deployment hierarchy. NOTE: view=traffic is SPEC-DERIVED routing (Ingress→Service→Pod declarations) — it does not show observed traffic, request rates, or live connections. Always specify namespace…

  • get_workload_logs

    Get aggregated logs from all pods of a workload (Deployment, StatefulSet, DaemonSet, Job, or Argo Workflow). Logs are collected from all matching pods concurrently, then server-side filtered to errors, warnings, panics, and stack traces using deterministic regex patterns and deduplicated. When grep is set, it replaces diagnostic filtering and returns only regex matches, like `kubectl logs --timestamps | grep PATTERN`. More useful than get_pod_logs when you need logs across all replicas of a workload. If the target is a config value, feature flag, CRD field, env ref, or YAML/spec content, use s…

  • issues

    Use for 'what's broken right now?': live state, not posture. Returns grouped critical/warning failures in workloads, Jobs/CronJobs, HPAs, PVCs, Nodes, NetworkPolicies, references, pod startup, native Helm, False controller conditions. Use CEL `filter` for source/taxonomy slices; no source parameter. `unchecked_sources`: issues may be missing; don't assume healthy. `kinds`/`namespaces` scope the gap. `kind_sync_pending`: loading; retry shortly. `diagnostic_context.role` marks roots, rollups, symptoms, or context; `related_issues[].count` is the root's affected subset, not the linked issue total…

  • list_helm_releases

    List all Helm releases in the cluster with their status, resource health, storage namespace, Flux ownership when detected, lastOperation when Helm history indicates a current failed upgrade, rollback-after-failure, rollback, or stuck pending operation, and a capped operations trail for failed upgrades, rollbacks, and stuck operations. Use this first for Helm deployment debugging; if storageNamespace is present, pass that value as namespace to get_helm_release. Follow with get_helm_release include=history,operations for the full revision trail.

  • list_namespaces

    List all Kubernetes namespaces with their status. Use to discover available namespaces before filtering other queries.

  • list_packages

    Use for a unified inventory of installed packages, versions, and health across Helm, workload labels, CRDs, Argo, and Flux. `sources` and the returned `sourceLegend` explain why each row exists; inspect `contributors` when sources disagree because aggregate health is worst-of while version follows source priority. Use this instead of manually merging list_helm_releases and list_resources when the question spans package sources; use list_helm_releases for Helm-only deployment debugging. Filter by namespace, source, or chart substring. Non-empty `sourcesErrored` means results are partial, not pr…

  • list_resources

    Use for a jq-like namespace sweep when you know the resource kind (pods/po, deployments/deploy, services/svc, configmaps/cm, CRDs). Returns compact Kubernetes-shaped rows plus summaryContext by default (managedBy, health, issueCount) so you can compare many similar resources and pick suspects before calling get_resource. For unknown kind/name searches, use search. For broad health triage, use get_dashboard or issues first.

  • manage_cronjob

    Operate on a Kubernetes CronJob: 'trigger' runs a Job now from the CronJob's template, to check a fix without waiting for the schedule when an extra run is safe; 'suspend' pauses the schedule (no new Jobs are created); 'resume' re-enables a suspended schedule.

  • manage_gitops

    Perform operations on GitOps resources (ArgoCD or FluxCD). For ArgoCD: actions are 'sync' (trigger deployment), 'refresh', 'terminate', 'rollback', 'suspend' (disable auto-sync), 'resume' (re-enable auto-sync). Resource kind is always Application. For FluxCD: actions are 'reconcile' (trigger sync), 'sync-with-source', 'suspend', 'resume'. Requires 'kind' parameter (kustomization, helmrelease, gitrepository, etc.).

  • manage_node

    Cordon, uncordon or drain a node. Drain waits for deletion. outcome: complete/incomplete/unconfirmed/started. started: status ok; incomplete/unconfirmed: partial. expectedSkip: normal exclusions. Complete does not certify shutdown safety.

  • manage_rollout

    Drive an Argo Rollout's progressive delivery (the verbs with no Deployment equivalent). 'abort' reverts traffic to the last stable version at once without touching spec, and stays aborted until retried — the incident-response verb; 'retry' clears an abort; 'promote' clears the current pause to advance one step; 'promote-full' skips ALL remaining steps, pauses, and analysis (emergency hotfix) — straight after a rollback it may report that the Argo Rollouts controller has not caught up, which is safe to retry; 'skip-step' advances exactly one canary step (canary only). For rollback, restart, or …

  • manage_workload

    Perform operations on a Kubernetes workload (Deployment, StatefulSet, DaemonSet, or Argo Rollout). Supported actions: 'restart' triggers a rolling restart, 'scale' changes the replica count (requires 'replicas' parameter), 'rollback' reverts to a previous revision (requires 'revision'; enumerate valid numbers with get_resource include=revisions). Use list_resources or get_dashboard first to identify the target. On a Rollout, 'rollback' rewrites the pod template and so starts a NEW rollout that re-runs every canary step, pause, and analysis — to revert traffic now use manage_rollout abort, or f…

  • patch_resource

    Patch one existing Kubernetes resource with JSON Patch, JSON Merge Patch, or strategic merge patch. Use this for precise field/list mutations such as removing a bad dnsConfig, hostPort, initContainers field, sidecar container, nodeSelector, or replacing one scalar value. Prefer this over apply_resource when you know the exact field to mutate and do not want to rewrite the full manifest or take broad server-side-apply ownership. For patch_type=json, patch must be an RFC 6902 JSON Patch array. For patch_type=merge, patch must be a JSON object. For patch_type=strategic, use a JSON object against …

  • query_prometheus

    Use when the question needs metric VALUES or history: CPU/memory over time, request rates, error ratios, saturation, restarts trend, 'was there a spike?'. Executes PromQL against the cluster's Prometheus (auto-discovered or configured in Radar; also works with PromQL-compatible backends: Thanos, VictoriaMetrics, Mimir). type=instant returns current values; type=range returns time series for a window (since=1h default). For live top-N snapshots prefer top_resources; for metric/label NAME discovery use discover_metrics first — do not guess metric names. For cluster or namespace spend use get_cos…

  • search

    Find resources by content/term match when you do not know which object contains a string, config key, env ref, image, label/annotation value, ConfigMap data, CRD field, or status message. Tokens are AND'd. Secret content is intentionally NOT indexed — Secret names match by metadata, but data values won't appear in snippets to avoid leaking secret material through search results. Examples: `readinessProbe user-service`, `image:flagd`, `kind:Pod label:app=cart error`. Use the namespace parameter for structured namespace scoping. Modifiers such as kind:Pod, ns:foo, label:app=bar, and image:redis …

  • top_resources

    Use when investigating high CPU, memory pressure, OOMKills, slow services, noisy pods, or uneven node load. Returns live metrics ranked like `kubectl top pods|nodes | sort`, joined with Kubernetes context: pod status, readiness, restarts, owner workload, requests, and limits. kind=pods ranks individual Pods, kind=workloads aggregates Pods to Deployments/StatefulSets/DaemonSets/Jobs, and kind=nodes ranks Nodes. This is live usage, not recommendations — for whether requests/limits should change, use get_rightsizing. Use before reading logs when the symptom mentions CPU, memory, GC, OOM, latency,…

  • wait_for

    Wait until a change takes effect, like kubectl rollout status and kubectl wait; use it after a fix instead of sleeping and re-reading. condition: rollout (default for Deployment, StatefulSet, DaemonSet, Argo Rollout), complete (default for Job), ready (default for Pod), deleted, a status condition type that must be True (Type=Status for another value), or jsonpath={.status.field}=value. Target one object by name, every match of label_selector, or all of the kind in the namespace. One call waits at most 45s and returns state: met; waiting (not yet: call again, passing back uid if one was return…

Compare and alternatives

    Featured in

    Signals

    Stars
    3,906
    Forks
    254
    Open issues
    45
    Contributors
    73
    Last commit
    Oct 24, 2026 (4 days ago)
    Last release
    Oct 22, 2026 (6 days ago)

    From GitHub (fetched Oct 24, 2026).

    Details

    Registry name
    io.github.skyhook-io/radar
    Version
    1.18.0
    Auth
    No auth
    Packages
    oci ghcr.io/skyhook-io/radar:1.18.0
    License
    Apache-2.0
    First seen
    Oct 24, 2026
    Last checked
    Oct 24, 2026

    More from skyhook-io

    Cite this page

    Radar Kubernetes MCP Server. Agent Mart. https://agentmart.dev/connectors/skyhook-io-radar (last updated 2026-10-24)