create_moduleLABSCO SUMMARY
Schema-first is the guardrail, and it is built into the tool descriptions rather than left to the prompt.
An agent writing Kubernetes manifests directly has a large surface for silent mistakes; making it fetch the template schema and then fill a validated Module shrinks that to the fields the template actually accepts. The in-cluster SSE deployment is worth preferring over per-developer binaries — one server, one set of namespace settings, rather than everyone's local kubeconfig.
What it is
An MCP server for Cyclops, which sits over Kubernetes as a template layer. Instead of an agent editing Deployments, Services and Ingresses line by line, it creates and updates Cyclops Modules — high-level resources validated against a template's JSON schema. The workflow the tool descriptions enforce is to read the schema before writing, so misconfiguration is caught before it reaches the cluster.
What you get
- Modules created and updated against a template, with the tool descriptions requiring a schema check first —
create_module,update_module - The JSON schema for a template, which is what makes those values verifiable rather than guessed —
get_template_schema - Existing modules listed and fetched by name —
list_modules,get_module - Template stores listed and fetched by name, so an agent can see which templates the cluster offers —
list_template_store,get_template_store
Requirements
A Kubernetes cluster with Cyclops and its CRDs installed — modules.cyclops-ui.com, templateauthrules.cyclops-ui.com and templatestores.cyclops-ui.com should be present. The easiest install is through the Cyclops UI under Addon > MCP server, which needs Cyclops v0.20.1 or greater; there is also a manifest to kubectl apply and a binary installable with go install github.com/cyclops-ui/mcp-cyclops/cmd/mcp-cyclops@latest. In-cluster, expose it with kubectl port-forward -n cyclops svc/cyclops-mcp 8000:8000 and point the client at http://localhost:8000/sse. The binary connects with your .kube/config by default; KUBECONFIG and CYCLOPS_KUBE_CONTEXT override that, and CYCLOPS_MODULE_NAMESPACE, CYCLOPS_HELM_RELEASE_NAMESPACE and CYCLOPS_MODULE_TARGET_NAMESPACE place the resources it creates.
Setup effort
One command — GOBIN="$HOME/go/bin" go install github.com/cyclops-ui/mcp-cyclops/cmd/mcp-cyclops@latest
USE CASES
Deploying an application from a conversation
Read the template's schema, then create the Module with values that match it — instead of hand-writing Deployment, Service and Ingress YAML.
Changing a running application safely
Fetch the current Module, re-check the template schema, and update only the values that need to change.
Seeing what is deployed
List the Modules in the cluster and read one by name, at the level of the application rather than its underlying resources.
Finding out what the platform team allows
List the template stores and read one, so the agent proposes only templates your cluster actually offers.
7 tools
Listed in project docs. Your client may show a different list.
get_modulelist_modulesupdate_moduleget_template_schemaget_template_storelist_template_storeBEFORE YOU INSTALL
What to know first
Tools you get
7 tools named in the project's documentation.
Requires
- Cyclops installed in your Kubernetes cluster (https://cyclops-ui.com/docs/installation/install/manifest)
- kubectl access to that cluster
- Go, for the go install route (mcp-cyclops then runs from $HOME/go/bin)
INSTALLATION
Connect your client
Server setup
GOBIN="$HOME/go/bin" go install github.com/cyclops-ui/mcp-cyclops/cmd/mcp-cyclops@latestMCP Clients
Cursor
In the Cyclops UI (Cyclops v0.20.1 or later), open Addon → MCP server and click Install Cyclops MCP server
kubectl port-forward -n cyclops svc/cyclops-mcp 8000:8000{
"mcpServers": {
"cyclops-kubernetes": {
"url": "http://localhost:8000/sse"
}
}
}This setup runs the server inside your Kubernetes cluster; the port-forward is what makes http://localhost:8000/sse reach it, so keep it running while you use the client.
Any MCP client — stdio
{
"mcpServers": {
"mcp-cyclops": {
"command": "mcp-cyclops",
"env": {
"KUBECONFIG": "<YOUR_KUBECONFIG>"
}
}
}
}