# Kairon (oci · ghcr.io/zyvorai/kairon-mcp)

Inspect Kairon VMs, network policy and VM-edge flows from an agent. Read-only by default.

- Trust score: 38/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-19

## Components

- oci · `ghcr.io/zyvorai/kairon-mcp`: 38/100 (this document), [markdown](https://verifymcp.io/servers/zyvorai-kairon/ghcr-io-zyvorai-kairon-mcp.md), [page](https://verifymcp.io/servers/zyvorai-kairon/ghcr-io-zyvorai-kairon-mcp)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/zyvorai/kairon-mcp`
- Version: `v0.10.2`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-19.

- **Supply Chain Security**: 8/100
  - No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
  - CVE check failed: a known advisory affects this package; its severity couldn't be graded.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: this image's dependency list comes from an SBOM its publisher attached. It names packages and versions but not whether each is deprecated, still maintained or linked to its source, so there is nothing we can fairly grade.
- **Provenance & Transparency**: 35/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: no license is declared.
  - Actively maintained (last published 1 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 65/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 1981 tokens (~56/item across 35 items; 35 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 10/100
  - Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 94/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 81% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 35 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 35 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the Kairon MCP server?

Kairon runs locally as a container image, launched with docker run --rm -i -e KAIRON_KUBE_URL -e KAIRON_KUBE_TOKEN -e KAIRON_KUBE_CA -e KAIRON_KUBE_INSECURE -e KAIRON_UI_URL -e KAIRON_UI_TOKEN -e KAIRON_UI_CA -e KAIRON_UI_INSECURE -e KAIRON_LLM_URL -e KAIRON_LLM_MODEL -e KAIRON_LLM_API_KEY -e KAIRON_MCP_TENANT ghcr.io/zyvorai/kairon-mcp:v0.10.2. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add zyvorai-kairon -- docker run --rm -i -e KAIRON_KUBE_URL -e KAIRON_KUBE_TOKEN -e KAIRON_KUBE_CA -e KAIRON_KUBE_INSECURE -e KAIRON_UI_URL -e KAIRON_UI_TOKEN -e KAIRON_UI_CA -e KAIRON_UI_INSECURE -e KAIRON_LLM_URL -e KAIRON_LLM_MODEL -e KAIRON_LLM_API_KEY -e KAIRON_MCP_TENANT ghcr.io/zyvorai/kairon-mcp:v0.10.2
```

This image reads KAIRON_KUBE_URL, KAIRON_KUBE_TOKEN, KAIRON_KUBE_CA, KAIRON_KUBE_INSECURE, KAIRON_UI_URL, KAIRON_UI_TOKEN, KAIRON_UI_CA, KAIRON_UI_INSECURE, KAIRON_LLM_URL, KAIRON_LLM_MODEL, KAIRON_LLM_API_KEY and KAIRON_MCP_TENANT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Cursor

```json
{
  "mcpServers": {
    "zyvorai-kairon": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "KAIRON_KUBE_URL",
        "-e",
        "KAIRON_KUBE_TOKEN",
        "-e",
        "KAIRON_KUBE_CA",
        "-e",
        "KAIRON_KUBE_INSECURE",
        "-e",
        "KAIRON_UI_URL",
        "-e",
        "KAIRON_UI_TOKEN",
        "-e",
        "KAIRON_UI_CA",
        "-e",
        "KAIRON_UI_INSECURE",
        "-e",
        "KAIRON_LLM_URL",
        "-e",
        "KAIRON_LLM_MODEL",
        "-e",
        "KAIRON_LLM_API_KEY",
        "-e",
        "KAIRON_MCP_TENANT",
        "ghcr.io/zyvorai/kairon-mcp:v0.10.2"
      ]
    }
  }
}
```

This image reads KAIRON_KUBE_URL, KAIRON_KUBE_TOKEN, KAIRON_KUBE_CA, KAIRON_KUBE_INSECURE, KAIRON_UI_URL, KAIRON_UI_TOKEN, KAIRON_UI_CA, KAIRON_UI_INSECURE, KAIRON_LLM_URL, KAIRON_LLM_MODEL, KAIRON_LLM_API_KEY and KAIRON_MCP_TENANT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### VS Code

```json
{
  "servers": {
    "zyvorai-kairon": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "KAIRON_KUBE_URL",
        "-e",
        "KAIRON_KUBE_TOKEN",
        "-e",
        "KAIRON_KUBE_CA",
        "-e",
        "KAIRON_KUBE_INSECURE",
        "-e",
        "KAIRON_UI_URL",
        "-e",
        "KAIRON_UI_TOKEN",
        "-e",
        "KAIRON_UI_CA",
        "-e",
        "KAIRON_UI_INSECURE",
        "-e",
        "KAIRON_LLM_URL",
        "-e",
        "KAIRON_LLM_MODEL",
        "-e",
        "KAIRON_LLM_API_KEY",
        "-e",
        "KAIRON_MCP_TENANT",
        "ghcr.io/zyvorai/kairon-mcp:v0.10.2"
      ]
    }
  }
}
```

This image reads KAIRON_KUBE_URL, KAIRON_KUBE_TOKEN, KAIRON_KUBE_CA, KAIRON_KUBE_INSECURE, KAIRON_UI_URL, KAIRON_UI_TOKEN, KAIRON_UI_CA, KAIRON_UI_INSECURE, KAIRON_LLM_URL, KAIRON_LLM_MODEL, KAIRON_LLM_API_KEY and KAIRON_MCP_TENANT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Codex

```bash
codex mcp add zyvorai-kairon -- docker run --rm -i -e KAIRON_KUBE_URL -e KAIRON_KUBE_TOKEN -e KAIRON_KUBE_CA -e KAIRON_KUBE_INSECURE -e KAIRON_UI_URL -e KAIRON_UI_TOKEN -e KAIRON_UI_CA -e KAIRON_UI_INSECURE -e KAIRON_LLM_URL -e KAIRON_LLM_MODEL -e KAIRON_LLM_API_KEY -e KAIRON_MCP_TENANT ghcr.io/zyvorai/kairon-mcp:v0.10.2
```

This image reads KAIRON_KUBE_URL, KAIRON_KUBE_TOKEN, KAIRON_KUBE_CA, KAIRON_KUBE_INSECURE, KAIRON_UI_URL, KAIRON_UI_TOKEN, KAIRON_UI_CA, KAIRON_UI_INSECURE, KAIRON_LLM_URL, KAIRON_LLM_MODEL, KAIRON_LLM_API_KEY and KAIRON_MCP_TENANT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "zyvorai-kairon": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "-e",
        "KAIRON_KUBE_URL",
        "-e",
        "KAIRON_KUBE_TOKEN",
        "-e",
        "KAIRON_KUBE_CA",
        "-e",
        "KAIRON_KUBE_INSECURE",
        "-e",
        "KAIRON_UI_URL",
        "-e",
        "KAIRON_UI_TOKEN",
        "-e",
        "KAIRON_UI_CA",
        "-e",
        "KAIRON_UI_INSECURE",
        "-e",
        "KAIRON_LLM_URL",
        "-e",
        "KAIRON_LLM_MODEL",
        "-e",
        "KAIRON_LLM_API_KEY",
        "-e",
        "KAIRON_MCP_TENANT",
        "ghcr.io/zyvorai/kairon-mcp:v0.10.2"
      ],
      "enabled": true
    }
  }
}
```

This image reads KAIRON_KUBE_URL, KAIRON_KUBE_TOKEN, KAIRON_KUBE_CA, KAIRON_KUBE_INSECURE, KAIRON_UI_URL, KAIRON_UI_TOKEN, KAIRON_UI_CA, KAIRON_UI_INSECURE, KAIRON_LLM_URL, KAIRON_LLM_MODEL, KAIRON_LLM_API_KEY and KAIRON_MCP_TENANT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Hermes

```yaml
mcp_servers:
  zyvorai-kairon:
    command: "docker"
    args: ["run", "--rm", "-i", "-e", "KAIRON_KUBE_URL", "-e", "KAIRON_KUBE_TOKEN", "-e", "KAIRON_KUBE_CA", "-e", "KAIRON_KUBE_INSECURE", "-e", "KAIRON_UI_URL", "-e", "KAIRON_UI_TOKEN", "-e", "KAIRON_UI_CA", "-e", "KAIRON_UI_INSECURE", "-e", "KAIRON_LLM_URL", "-e", "KAIRON_LLM_MODEL", "-e", "KAIRON_LLM_API_KEY", "-e", "KAIRON_MCP_TENANT", "ghcr.io/zyvorai/kairon-mcp:v0.10.2"]
```

This image reads KAIRON_KUBE_URL, KAIRON_KUBE_TOKEN, KAIRON_KUBE_CA, KAIRON_KUBE_INSECURE, KAIRON_UI_URL, KAIRON_UI_TOKEN, KAIRON_UI_CA, KAIRON_UI_INSECURE, KAIRON_LLM_URL, KAIRON_LLM_MODEL, KAIRON_LLM_API_KEY and KAIRON_MCP_TENANT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Netclaw

```json
{
  "McpServers": {
    "zyvorai-kairon": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "-e",
        "KAIRON_KUBE_URL",
        "-e",
        "KAIRON_KUBE_TOKEN",
        "-e",
        "KAIRON_KUBE_CA",
        "-e",
        "KAIRON_KUBE_INSECURE",
        "-e",
        "KAIRON_UI_URL",
        "-e",
        "KAIRON_UI_TOKEN",
        "-e",
        "KAIRON_UI_CA",
        "-e",
        "KAIRON_UI_INSECURE",
        "-e",
        "KAIRON_LLM_URL",
        "-e",
        "KAIRON_LLM_MODEL",
        "-e",
        "KAIRON_LLM_API_KEY",
        "-e",
        "KAIRON_MCP_TENANT",
        "ghcr.io/zyvorai/kairon-mcp:v0.10.2"
      ]
    }
  }
}
```

This image reads KAIRON_KUBE_URL, KAIRON_KUBE_TOKEN, KAIRON_KUBE_CA, KAIRON_KUBE_INSECURE, KAIRON_UI_URL, KAIRON_UI_TOKEN, KAIRON_UI_CA, KAIRON_UI_INSECURE, KAIRON_LLM_URL, KAIRON_LLM_MODEL, KAIRON_LLM_API_KEY and KAIRON_MCP_TENANT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Other

```json
{
  "mcpServers": {
    "zyvorai-kairon": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "KAIRON_KUBE_URL",
        "-e",
        "KAIRON_KUBE_TOKEN",
        "-e",
        "KAIRON_KUBE_CA",
        "-e",
        "KAIRON_KUBE_INSECURE",
        "-e",
        "KAIRON_UI_URL",
        "-e",
        "KAIRON_UI_TOKEN",
        "-e",
        "KAIRON_UI_CA",
        "-e",
        "KAIRON_UI_INSECURE",
        "-e",
        "KAIRON_LLM_URL",
        "-e",
        "KAIRON_LLM_MODEL",
        "-e",
        "KAIRON_LLM_API_KEY",
        "-e",
        "KAIRON_MCP_TENANT",
        "ghcr.io/zyvorai/kairon-mcp:v0.10.2"
      ]
    }
  }
}
```

This image reads KAIRON_KUBE_URL, KAIRON_KUBE_TOKEN, KAIRON_KUBE_CA, KAIRON_KUBE_INSECURE, KAIRON_UI_URL, KAIRON_UI_TOKEN, KAIRON_UI_CA, KAIRON_UI_INSECURE, KAIRON_LLM_URL, KAIRON_LLM_MODEL, KAIRON_LLM_API_KEY and KAIRON_MCP_TENANT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-18 (score 38, +1)

- [security regression] Stability: 0.03 → unverified
- [security regression] Tool safety: pass → unverified
- [functional regression] Capabilities: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified
- [functional] Package version: v0.10.1 → v0.10.2

### 2026-10-17 (score 37, 0)

- [security regression] Tool safety: pass → unverified
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Capabilities: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Stability: unverified → 0.03
- [functional] First check of Schema quality: unverified

### 2026-10-16 (score 37)

First indexed and scored.

## MCP tools (35)

### `anomaly_events` (~43 tokens)

Turn edge findings into Warning events. Does not emit them.

Input parameters:

- `drops` (array)
- `flows` (array)
- `machine` (string, required): Machine name

### `ask` (~99 tokens)

Ask Kairon's configured model (KAIRON_LLM_URL/KAIRON_LLM_MODEL) for one proposal: an egress policy, a sealed claim, boot repair steps or an explanation. The answer is compiled and validated before it is returned; it is never applied.

Input parameters:

- `facts` (string): optional context: drops, status, events
- `namespace` (string): namespace forced onto the proposal
- `question` (string, required): plain-English request

### `bind_gateway` (~38 tokens)

Build a Gateway binding from port forwards. Does not create the Gateway.

Input parameters:

- `forwards` (array, required)
- `name` (string, required): gateway name

### `compile_network_policy` (~46 tokens)

Compile a strict egress allowlist into a MachineNetworkPolicy. Does not apply. Rejects empty allowlists and bare wildcards.

Input parameters:

- `intent` (object, required): PolicyIntent JSON

### `describe_claim` (~49 tokens)

Get one MachineClaim's spec and status plus the agent-plane step decision for it right now.

Input parameters:

- `name` (string, required): claim name
- `namespace` (string): Kubernetes namespace; defaults to default

### `detect_edge_anomalies` (~48 tokens)

Rule-based beacon, DNS-tunnel shape, SNI spread and deny-burst findings. Apply is always false.

Input parameters:

- `drops` (array)
- `flows` (array)

### `diagnose` (~83 tokens)

Rank likely causes for a stuck or failed Machine or MachineMigration from its phase, conditions and Warning events, with proposed next steps. Adds a model summary when KAIRON_LLM_URL is configured. Read-only.

Input parameters:

- `namespace` (string): Kubernetes namespace; defaults to default
- `ref` (string, required): machine/NAME or migration/NAME (a bare name is a Machine)

### `explain_drops` (~35 tokens)

Explain attributed eBPF drops and propose a policy change. Apply is always false.

Input parameters:

- `drops` (array, required): Drop samples

### `explain_pending` (~40 tokens)

Explain why a Machine is pending from scheduler reason strings. Does not reschedule.

Input parameters:

- `machine` (string, required): Machine name
- `nodes` (array)

### `get_machine` (~46 tokens)

Get one Machine's full spec and status, including network, edge and conditions.

Input parameters:

- `name` (string, required): Machine name
- `namespace` (string): Kubernetes namespace; defaults to default

### `get_machine_snapshot` (~53 tokens)

Get a MachineSnapshot's phase, readiness and per-volume snapshots (CSI VolumeSnapshot or Atlas snapshot id).

Input parameters:

- `name` (string, required): MachineSnapshot name
- `namespace` (string): Kubernetes namespace; defaults to default

### `list_backups` (~56 tokens)

List MachineBackups and MachineBackupRestores in a namespace: phase, node, size, whether the guest was quiesced, Atlas volume backup ids and messages.

Input parameters:

- `namespace` (string): Kubernetes namespace; defaults to default

### `list_claims` (~48 tokens)

List MachineClaims with pool, tenant, phase, bound Machine and TTL. Scoped to KAIRON_MCP_TENANT when set.

Input parameters:

- `namespace` (string): namespace; omit for all

### `list_machine_pools` (~44 tokens)

List MachinePools (warm, pre-booted Machines) with warm size, ready and claimed counts.

Input parameters:

- `namespace` (string): Kubernetes namespace; defaults to default

### `list_machines` (~52 tokens)

List Kairon Machines (VMs) with phase, power state, node, guest IP and size. Omit namespace to list all namespaces.

Input parameters:

- `namespace` (string): Kubernetes namespace; omit for all

### `list_network_policies` (~44 tokens)

List MachineNetworkPolicies (selector, allow lists, rate limits, status). Omit namespace for all.

Input parameters:

- `namespace` (string): Kubernetes namespace; omit for all

### `machine_edge_identity` (~60 tokens)

The Machine's stable VM-edge identity (FNV-1a of namespace/name), as used in policy and conntrack. Computed locally.

Input parameters:

- `name` (string, required): Machine name
- `namespace` (string): Kubernetes namespace; defaults to default

### `machine_network` (~113 tokens)

Live VM-edge network data for a Machine from FluxVM, via kairon-ui: network-effective (merged policy), network-stats, network-flows, network-drops (attributed drops with reason and policy), network-drop-reasons (kernel reasons) or network-capture (packet capture sessions).

Input parameters:

- `kind` (string, required): which view
- `limit` (integer): max entries for flows and drops
- `name` (string, required): Machine name
- `namespace` (string): Kubernetes namespace; defaults to default

### `machine_volumes` (~76 tokens)

A Machine's volumes: source (pvc, atlas-pvc, atlas-rbd), claim, size, Atlas provisioning phase, backend id (pvc:NAME or rbd:POOL/IMAGE) and error message.

Input parameters:

- `name` (string, required): Machine name
- `namespace` (string): Kubernetes namespace; defaults to default

### `migration_claim` (~45 tokens)

Check a lab matrix report against the v0.7 cases (cold, live, live-ebpf, source-failure, controller-failover).

Input parameters:

- `cases` (array, required)

### `project_confidential` (~45 tokens)

Project sealed/not-sealed from a node attestation report. Does not schedule.

Input parameters:

- `node` (object)
- `requested` (string, required): sev-snp or tdx

### `project_cpu_label` (~65 tokens)

Project kairon.zyvor.dev/pinnable-cpus from cpuset text. Does not label the node.

Input parameters:

- `effective` (string, required): cpuset.cpus.effective
- `node` (string): node name
- `reserved` (string): reserved cpus

### `propose_boot_repair` (~35 tokens)

Propose an offline boot repair from GuestKit-style findings. Does not modify a disk.

Input parameters:

- `findings` (array, required)

### `replay_audit` (~54 tokens)

Replay audit events for one claim (all when claim is empty). Reads the server's verified audit log under --allow-write; otherwise pass events.

Input parameters:

- `claim` (string): claim name
- `events` (array)

### `session_approvals` (~69 tokens)

The session's approval requests (commands matching policy.process.ask) with state pending, approved, denied, consumed or expired. Deciding is for human admins only and has no tool.

Input parameters:

- `name` (string, required): AgentSession name
- `namespace` (string): Kubernetes namespace; defaults to default

### `session_get` (~55 tokens)

Get one AgentSession: spec, compiled policy (including what FluxVM does not enforce), checkpoints, usage and expiry.

Input parameters:

- `name` (string, required): AgentSession name
- `namespace` (string): Kubernetes namespace; defaults to default

### `session_git` (~48 tokens)

Workspace git status, diff or log.

Input parameters:

- `name` (string, required): AgentSession name
- `namespace` (string): Kubernetes namespace; defaults to default
- `view` (string, required): which view

### `session_job_read` (~68 tokens)

Read a background job's state and output from offset (use next_offset to continue).

Input parameters:

- `job` (string, required): job id
- `name` (string, required): AgentSession name
- `namespace` (string): Kubernetes namespace; defaults to default
- `offset` (integer): stdout byte offset

### `session_list` (~52 tokens)

List AgentSessions (FluxVM agent sessions: a sandbox VM with workspace, policy, checkpoints and ledger) with phase, node and FluxVM session id.

Input parameters:

- `namespace` (string): Kubernetes namespace; defaults to default

### `session_probe` (~68 tokens)

Which tools the guest image has (git, python3, node, go, cargo, make, chromium...) and which session features are ready, so you know before building on them.

Input parameters:

- `name` (string, required): AgentSession name
- `namespace` (string): Kubernetes namespace; defaults to default

### `session_read_file` (~75 tokens)

Read a text file from the session (up to 256 KiB), or list a directory with list=true.

Input parameters:

- `list` (boolean): list a directory
- `name` (string, required): AgentSession name
- `namespace` (string): Kubernetes namespace; defaults to default
- `path` (string, required): absolute guest path

### `session_screenshot` (~87 tokens)

Screenshot of a Mac AgentSession's guest display, as an image. Coordinates for session_input are pixels of this image from the top left; pass its width as screenWidth.

Input parameters:

- `maxWidth` (integer): scale the screenshot down to this width (default 1280)
- `name` (string, required): AgentSession name
- `namespace` (string): Kubernetes namespace; defaults to default

### `session_trajectory` (~57 tokens)

The session's numbered steps (execs, checkpoints, forks, policy refusals, VM events) for review or replay.

Input parameters:

- `name` (string, required): AgentSession name
- `namespace` (string): Kubernetes namespace; defaults to default

### `step_agent_claim` (~43 tokens)

Decide bind, hold, wait or expire for one MachineClaim against warm Machines. Does not write.

Input parameters:

- `claim` (object, required)
- `warm` (array)

### `validate_agent_claim` (~42 tokens)

Validate a sealed agent claim: tenant, TTL, egress allowlist, hypervisor, no control-plane tools for the guest.

Input parameters:

- `claim` (object, required)

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities. The full working is on the page: https://verifymcp.io/servers/zyvorai-kairon/ghcr-io-zyvorai-kairon-mcp#diagnostics

## Score history

- 2026-10-19: 38
- 2026-10-18: 38
- 2026-10-17: 37
- 2026-10-16: 37

## Common questions

### What is the Kairon MCP server?

Kairon is an MCP server listed in the public MCP registry as io.github.zyvorai/kairon. Inspect Kairon VMs, network policy and VM-edge flows from an agent. Read-only by default. This page covers its container image (ghcr.io/zyvorai/kairon-mcp).

### Is the Kairon MCP server safe to use?

Kairon scores 38 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 19 October 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Kairon MCP server expose?

Kairon exposes 35 tools: anomaly_events, ask, bind_gateway, compile_network_policy, describe_claim, and 30 more. Their descriptions and schemas cost roughly 1,981 tokens of context every time the server is loaded.

### Is the Kairon MCP server still maintained?

Kairon is still listed as active in the MCP registry. We last reached this channel on 19 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- GitHub Container Registry: https://ghcr.io/zyvorai/kairon-mcp
- Repository: https://github.com/zyvorai/zyvor-kairon
- Changelog RSS feed: https://verifymcp.io/servers/zyvorai-kairon/ghcr-io-zyvorai-kairon-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/zyvorai-kairon/ghcr-io-zyvorai-kairon-mcp.json
- HTML version of this page: https://verifymcp.io/servers/zyvorai-kairon/ghcr-io-zyvorai-kairon-mcp
