kadet-hub logokadet-hub

kmcp

Renders kmcp MCPServer resources that deploy Model Context Protocol servers on Kubernetes.

kubernetesoperators

Latest
1.0.2 ·
License
Apache-2.0
Owners
Moep90
Source
github.com/kadet-hub/generators · 0 repo stars, shared by 35 generators
Thumbs up
👍 0 on GitHub Discussions
Popularity
17 · 400 pulls

Request a feature Report a problem

Badge

Show the latest listed version in your README. shields.io draws the badge from this page's badge.json, which every catalog build updates; once no version is listed, it reads "not listed".

[![kadet-hub](https://img.shields.io/endpoint?url=https://kadet-hub.org/generators/kmcp/badge.json)](https://kadet-hub.org/generators/kmcp/)

kmcp Generator

Published on kadet-hub: pin a released version by digest from its catalog page.

Kapitan kadet generator for kmcp MCPServer resources (kagent.dev/v1alpha1). Built for kmcp 0.4.0. Each entry under mcpservers becomes one MCPServer; the kmcp controller turns it into a Deployment, Service and ConfigMap that run the MCP server, for stdio servers behind the agentgateway transport adapter.

Secrets and ConfigMaps referenced by secret_refs and configmap_refs belong in the kubernetes generator.

Usage

Kapitan Configuration

parameters:
  kapitan:
    dependencies:
      - type: oci
        source: ghcr.io/kadet-hub/kmcp@sha256:<digest>
        output_path: lib/kmcp
    compile:
      - output_path: manifests/kmcp/
        input_type: kadet
        output_type: yml
        input_paths:
          - lib/kmcp

Inventory Contract

Servers are read from parameters.generators.kmcp.mcpservers.<name> and written to <namespace>/<name>-mcpserver. The namespace resolves from the server’s namespace, then parameters.generators.kmcp.namespace, then parameters.namespace, then default.

Key Default Result
namespace, labels, annotations metadata; the labels name, app.kubernetes.io/managed-by: kmcp and app.kubernetes.io/component: mcp-server are always added
transport_type stdio spec.transportType, stdio or http; other values raise an error
stdio_transport {} spec.stdioTransport (stdio only)
http_transport.target_port deployment.port spec.httpTransport.targetPort (http only)
http_transport.target_path (alias path) spec.httpTransport.path
deployment.port 3000 spec.deployment.port
deployment.image, image_pull_policy, cmd, args, env, volume_mounts, volumes the camelCase spec.deployment field, verbatim
deployment.secret_refs, configmap_refs secretRefs, configMapRefs; a list of names becomes [{name: ...}]
deployment.init_container (image, image_pull_policy) spec.deployment.initContainer, the transport adapter image for stdio
deployment.service_account (annotations, labels) spec.deployment.serviceAccount
spec raw MCPServer spec, for fields without a flat key (replicas, resources, sidecars, serviceAccountName, timeout, httpTransport.tls, …)

Precedence is generator defaults, then spec, then flat keys; a flat key that overrides a spec value logs a warning.

Defaults the generator adds, because the controller rejects the resource without them: transportType falls back to stdio, since the CRD has no default and the controller fails with “unsupported transport type” (translator); httpTransport.targetPort falls back to the deployment port, since the controller fails with “HTTP transport requires a target port”, and for http the Service forwards to that port on the server container (translator). deployment.port is always emitted with its CRD default 3000 so the derived target port matches it. With cmd: npx or cmd: uvx and no image, the controller picks a Node or uv image itself (translator).

Example

parameters:
  namespace: mcp
  generators:
    kmcp:
      mcpservers:
        everything:
          deployment:
            cmd: npx
            args: ["-y", "@modelcontextprotocol/server-everything"]
        search:
          transport_type: http
          deployment:
            image: registry.example.com/mcp/search:1.2.0
            port: 8080
            secret_refs: [search-api-credentials]
            configmap_refs: [search-config]
          http_transport:
            target_path: /mcp
          spec:
            deployment:
              replicas: 2

search gets httpTransport: {targetPort: 8080, path: /mcp} without repeating the port.

Output Files

Output key Kind
<namespace>/<name>-mcpserver kagent.dev/v1alpha1 MCPServer

The compiled output is validated against the upstream CRD schema in schemas/kagent.dev/.

Versions

Add a version's inventory entry, then compile with the consumer workflow, which verifies the artifact and runs Kapitan in the sandbox.

Free of charge, as is and on a best-effort basis: use at your own risk, and review the compiled output before you apply it. Terms

This catalog was built from index serial 47. Set index_serial: 47 in .kapitan-sandbox.yaml and the consumer workflow refuses any older index, so a rolled-back index cannot bring back a yanked version.

Checks find known patterns; they do not prove a generator safe. What a listing covers

VersionBuilt for (schema-checked)
1.0.2kmcp 0.4.0
1.0.1kmcp 0.4.0
1.0.0kmcp 0.4.0
1.0.2

Inventory

parameters:
  kapitan:
    dependencies:
      - type: oci
        source: ghcr.io/kadet-hub/kmcp:1.0.2@sha256:7aff878061750e5d23ebd6efd7d52cdc002296ec0e4152f4b7ebfe1498e08501
        output_path: lib/kmcp

Verify

gh attestation verify \
  oci://ghcr.io/kadet-hub/kmcp@sha256:7aff878061750e5d23ebd6efd7d52cdc002296ec0e4152f4b7ebfe1498e08501 \
  --owner kadet-hub \
  --cert-identity https://github.com/kadet-hub/registry/.github/workflows/release.yml@refs/heads/main

Transparency log: Rekor entry 3250237844, in Sigstore's public, append-only log, so the attestation stays checkable independent of this site.

Kapitan declared
>=0.36.3,<0.37
Kapitan checked
0.36.3
Backends checked
not recorded
With --cache
not recorded
krab
compatible
Built for (schema-checked)
kmcp 0.4.0
Source
kmcp-v1.0.2 · e4891e8fd85ca0a19ebf361e8b54fd6473fd8a2f · kmcp
Binaries
none
Output capabilities
none
Digest
sha256:7aff878061750e5d23ebd6efd7d52cdc002296ec0e4152f4b7ebfe1498e08501

Checks

Checked by the release run on , gate at 8fbfd22097fa.

  • Secrets gitleaks 8.30.1
    No secret matched the marketplace's gitleaks rules.
  • Malware ClamAV 1.5.4
    No file matched a ClamAV signature.
  • Malicious package heuristics GuardDog 3.2.0
    No GuardDog threat rule matched.
  • Dangerous code Semgrep 1.180.0
    No marketplace Semgrep rule matched, such as eval, subprocess or network calls.
  • Python errors Ruff 0.17.0
    No syntax error or undefined name (Ruff, error rules only).
  • File tree tree_check.py
    No symlink, executable or banned file; imports within the allowlist.
  • Sandboxed compile gVisor 20261005, Kapitan 0.36.3
    The fixture compiled without network, with decoy credentials; no undeclared program ran, no decoy was read.
  • Output capabilities Conftest 0.71.1
    The compiled output uses only the capabilities the manifest declares.
  • CI detection Kapitan 0.36.3
    The output is the same with CI variables set.

SBOM (SPDX 2.3)

Output diff

No output diff recorded: this version was published before the release run recorded one.

1.0.1

Inventory

parameters:
  kapitan:
    dependencies:
      - type: oci
        source: ghcr.io/kadet-hub/kmcp:1.0.1@sha256:303f91a7a0d3feaf3e8ffa8cd3ddabc33da81be319b47f98422f5afd290556bb
        output_path: lib/kmcp

Verify

gh attestation verify \
  oci://ghcr.io/kadet-hub/kmcp@sha256:303f91a7a0d3feaf3e8ffa8cd3ddabc33da81be319b47f98422f5afd290556bb \
  --owner kadet-hub \
  --cert-identity https://github.com/kadet-hub/registry/.github/workflows/release.yml@refs/heads/main

Transparency log: Rekor entry 3244111530, in Sigstore's public, append-only log, so the attestation stays checkable independent of this site.

Kapitan declared
>=0.36.3,<0.37
Kapitan checked
0.36.3
Backends checked
not recorded
With --cache
not recorded
krab
compatible
Built for (schema-checked)
kmcp 0.4.0
Source
kmcp-v1.0.1 · 9166cb30e0ae4874bc8f229c6a6823eff7451d04 · kmcp
Binaries
none
Output capabilities
none
Digest
sha256:303f91a7a0d3feaf3e8ffa8cd3ddabc33da81be319b47f98422f5afd290556bb

Checks

Checked by the release run on , gate at ebaee1d1d6a0.

  • Secrets gitleaks 8.30.1
    No secret matched the marketplace's gitleaks rules.
  • Malware ClamAV 1.5.4
    No file matched a ClamAV signature.
  • Malicious package heuristics GuardDog 3.2.0
    No GuardDog threat rule matched.
  • Dangerous code Semgrep 1.180.0
    No marketplace Semgrep rule matched, such as eval, subprocess or network calls.
  • Python errors Ruff 0.17.0
    No syntax error or undefined name (Ruff, error rules only).
  • File tree tree_check.py
    No symlink, executable or banned file; imports within the allowlist.
  • Sandboxed compile gVisor 20261005, Kapitan 0.36.3
    The fixture compiled without network, with decoy credentials; no undeclared program ran, no decoy was read.
  • Output capabilities Conftest 0.71.1
    The compiled output uses only the capabilities the manifest declares.
  • CI detection Kapitan 0.36.3
    The output is the same with CI variables set.

SBOM (SPDX 2.3)

Output diff

No output diff recorded: this version was published before the release run recorded one.

1.0.0

Inventory

parameters:
  kapitan:
    dependencies:
      - type: oci
        source: ghcr.io/kadet-hub/kmcp:1.0.0@sha256:770908511b485b761d1bb903203542aca42e23defa717b970689d7e00f97fcfa
        output_path: lib/kmcp

Verify

gh attestation verify \
  oci://ghcr.io/kadet-hub/kmcp@sha256:770908511b485b761d1bb903203542aca42e23defa717b970689d7e00f97fcfa \
  --owner kadet-hub \
  --cert-identity https://github.com/kadet-hub/registry/.github/workflows/release.yml@refs/heads/main

Transparency log: Rekor entry 3223832625, in Sigstore's public, append-only log, so the attestation stays checkable independent of this site.

Kapitan declared
>=0.36.3,<0.37
Kapitan checked
0.36.3
Backends checked
not recorded
With --cache
not recorded
krab
compatible
Built for (schema-checked)
kmcp 0.4.0
Source
kmcp-v1.0.0 · ca99da41af01d25182ca2c036625b32c62701a0b · kmcp
Binaries
none
Output capabilities
none
Digest
sha256:770908511b485b761d1bb903203542aca42e23defa717b970689d7e00f97fcfa

Checks

Checked by the release run on , gate at 94c8af83804f.

  • Secrets gitleaks 8.30.1
    No secret matched the marketplace's gitleaks rules.
  • Malware ClamAV 1.5.4
    No file matched a ClamAV signature.
  • Malicious package heuristics GuardDog 3.2.0
    No GuardDog threat rule matched.
  • Dangerous code Semgrep 1.180.0
    No marketplace Semgrep rule matched, such as eval, subprocess or network calls.
  • Python errors Ruff 0.17.0
    No syntax error or undefined name (Ruff, error rules only).
  • File tree tree_check.py
    No symlink, executable or banned file; imports within the allowlist.
  • Sandboxed compile gVisor 20261005, Kapitan 0.36.3
    The fixture compiled without network, with decoy credentials; no undeclared program ran, no decoy was read.
  • Output capabilities Conftest 0.71.1
    The compiled output uses only the capabilities the manifest declares.
  • CI detection Kapitan 0.36.3
    The output is the same with CI variables set.

SBOM (SPDX 2.3)

Output diff

No output diff recorded: this version was published before the release run recorded one.