kmcp
Renders kmcp MCPServer resources that deploy Model Context Protocol servers on Kubernetes.
- 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".
[](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/kmcpInventory 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: 2search 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
| Version | Built for (schema-checked) |
|---|---|
| 1.0.2 | kmcp 0.4.0 |
| 1.0.1 | kmcp 0.4.0 |
| 1.0.0 | kmcp 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.
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.
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.
Output diff
No output diff recorded: this version was published before the release run recorded one.