Crossplane Compass
Provides tools for inspecting and diagnosing Crossplane resources in a Kubernetes cluster, including CRD/API discovery, resource tracing, ownership checks, composition comparison, and GitOps manifest proposals.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Crossplane CompassWhy is my claim stuck and what resources depend on it?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Crossplane Compass
Understand your control plane. Diagnose with evidence. Propose changes through GitOps.
Crossplane Compass is an independently implemented MCP server for platform engineers and AI assistants. It connects installed Crossplane APIs to 24 focused tools over stdio or authenticated Streamable HTTP. It works from actual CRD schemas, scope and API discovery—not hard-coded cloud resources or guessed plural names.
Release: v0.1.0 · License: Apache-2.0 · Runtime: Python 3.12+ · Deployment: Helm / container / local
Initial release, not a zero-bug guarantee. See validation evidence for checks actually run and live-cluster gates still to run. Published image/chart URLs become available only after you push this repository and the release workflow succeeds.
Why Compass?
Question | Capability |
“Why is this claim or XR stuck?” | Scope-aware dependency tracing, conditions, UID-scoped events and package health |
“Which Azure account does this MR represent?” | Exact external-name lookup with explicit pagination |
“Why does my manually set field keep reverting?” | Controller ownership, owner UID verification and adoption assessment |
“What can developers request?” | Searchable XRD catalog and installed CRD schema inspection |
“Generate an XR without hallucinating fields.” | Required-field scaffolding, typed validation and a redacted review diff |
“What could this composition revision affect?” | Revision comparison and paginated consumer/update-policy inspection |
“Can I migrate this resource safely?” | Observe/Orphan, external identity, scope and ownership checks—without claiming cloud verification |
“Can I expose this to an assistant?” | No persistent mutation tools, explicit cluster/group/namespace policy, authenticated HTTP and minimal chart permissions |
Related MCP server: mctl
Start locally
Install uv, clone or extract this repository, and use a trusted kubeconfig:
uv sync --frozen
uv run crossplane-compass --version
uv run crossplane-compass --context dev=your-kubeconfig-context --groups platform.example.org,cosmosdb.azure.upbound.io --namespaces team-aThe last command starts the stdio MCP server; it waits for an MCP client and does not print a chat UI. Use your actual API groups from kubectl api-resources. Only the explicitly selected context is exposed. When --context is omitted, alias default uses in-cluster credentials or the current kubeconfig context.
MCP client
{
"mcpServers": {
"crossplane-compass": {
"command": "uv",
"args": [
"--directory", "/absolute/path/crossplane-compass",
"run", "--frozen", "crossplane-compass",
"--context", "dev=your-kubeconfig-context",
"--groups", "platform.example.org,cosmosdb.azure.upbound.io"
]
}
}
}For VS Code use servers instead of mcpServers and add "type": "stdio". Desktop clients may need KUBECONFIG and PATH configured to find cloud authentication plugins.
Install with Helm
Build and push your image first, or use the image from your successful GitHub release:
export IMAGE=ghcr.io/YOUR_OWNER/crossplane-compass
# For a local build published manually:
docker build -t "$IMAGE:v0.1.0" .
docker push "$IMAGE:v0.1.0"
kubectl create namespace compass
# Generate locally; do not commit or paste the token into a chat.
umask 077
openssl rand -hex 32 > token
kubectl -n compass create secret generic crossplane-compass-auth --from-file=token
helm upgrade --install compass ./charts/crossplane-compass --namespace compass --set fullnameOverride=crossplane-compass --set image.repository="$IMAGE" --set image.tag=v0.1.0 --set 'access.groups={platform.example.org,cosmosdb.azure.upbound.io}' --wait
kubectl -n compass port-forward svc/crossplane-compass 8080:8080Connect an HTTP-capable MCP client to http://localhost:8080/mcp, with Authorization: Bearer <contents-of-token>. Keep the local token file private or import it into your secret manager and remove it. For remote access, use TLS through your authenticated gateway. The Helm service is ClusterIP; no public ingress is created.
The release workflow also publishes oci://ghcr.io/YOUR_OWNER/charts/crossplane-compass, version 0.1.0, with the released image digest embedded. See installation for Flux, namespace isolation, network policy and dry-run permissions.
Architecture
flowchart TD
Client["MCP client / AI assistant"] --> Transport["stdio or authenticated HTTP"]
Transport --> Policy["Cluster, group and namespace policy"]
Policy --> Tools["24 bounded diagnostic and proposal tools"]
Tools --> Discovery["Cached CRD and API discovery"]
Discovery --> API["Kubernetes API"]
Tools --> Review["Schema checks and GitOps review diff"]The MCP host supplies the language model. Compass does not require an LLM key, vector database or cloud credentials of its own. Provider credentials remain in the cluster; Compass never reads Kubernetes Secrets. Kubeconfig credentials authenticate only to the Kubernetes API.
Tools at a glance
Discover:
clusters_list,discover,catalog_search,resource_schemaInspect:
resources_list,resource_get,resource_events,inventory_summary,external_lookupDiagnose:
resource_trace,diagnose,packages_health,resource_owners,provider_config_check,incident_bundleCompose:
composition_explain,composition_compare,composition_impactPropose:
manifest_scaffold,manifest_validate,manifest_planOperate:
adoption_check,migration_assess,deletion_assess
See the complete tool contract. Every cluster tool requires an explicit cluster alias. A small compass://guide MCP resource and troubleshoot prompt guide evidence-based use.
Design boundaries
No apply, delete, force-reconcile, finalizer removal, shell execution or cloud API calls.
Optional Kubernetes server-side dry-run is disabled by default. Its RBAC needs patch permissions, even though the application always sends
dryRun=All.Local schema validation covers a JSON Schema/OpenAPI subset. It does not execute CEL or admission webhooks, render functions, estimate cost or guarantee provider behavior.
Compact summaries are default; detailed manifests are opt-in. Redaction cannot guarantee removal of credentials embedded in arbitrary strings. Review incident exports.
HTTP uses a shared bearer credential, not OAuth or per-user Kubernetes impersonation. Deploy a separate instance/service account for each trust boundary.
Crossplane v2 can compose ordinary Kubernetes resources; this release traces only allowed CRD-backed resources, not core Secrets, Deployments or arbitrary core objects. Unavailable references are explicit errors.
Documentation
Install · Tools · Architecture · Security · Examples · Reference review · Release process · Contribute · Validation · Changelog
Development
uv sync --frozen
make check
make build
make chart # Helm 3.19+ requiredContributions are welcome. Start with CONTRIBUTING.md: local setup, repository map, tool extension recipe, testing expectations and PR checklist are included.
This server cannot be deployed
Maintenance
Related MCP Connectors
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Give your AI assistant access to real Helm chart data. No more hallucinated values.yaml files.
Fail-closed policy guardrails for AI agents running kubectl, terraform, helm, and argocd.
The Google GKE MCP server is a managed Model Context Protocol server that provides AI applications with tools to manage Google Kubernetes Engine (GKE) clusters and Kubernetes resources. It exposes a structured, discoverable interface that allows AI agents to interact with GKE and Kubernetes APIs, enabling them to inspect cluster configurations, retrieve Kubernetes resource YAMLs, monitor operations like cluster upgrades, diagnose issues, and optimize costs—all without needing to parse text output or use complex kubectl commands.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides read-only access to Kubernetes clusters for AI assistants.23MIT
- AlicenseBqualityDmaintenanceAI-native control plane for Kubernetes and GitOps. Provides 30+ tools for service deployment, database provisioning, and log management via natural language.11MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform DevOps tasks including Kubernetes management, cloud provider operations, CI/CD, security scanning, and infrastructure monitoring through natural language.MIT
- AlicenseAqualityDmaintenanceExposes a Kubernetes cluster to MCP-compatible AI clients, enabling read-only and optional write operations on cluster resources like pods, deployments, and namespaces through natural language.91MIT