{"id":36967425,"url":"https://github.com/hyperpolymath/poly-k8s-mcp","last_synced_at":"2026-01-13T20:03:39.669Z","repository":{"id":329048308,"uuid":"1117860616","full_name":"hyperpolymath/poly-k8s-mcp","owner":"hyperpolymath","description":"Unified MCP server for Kubernetes orchestration. Tools for kubectl, Helm, and Kustomize.","archived":false,"fork":false,"pushed_at":"2025-12-31T17:21:10.000Z","size":16021,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-31T22:52:51.635Z","etag":null,"topics":["deno","helm","hyperpolymath","kubectl","kubernetes","kustomize","mcp","mcp-server","model-context-protocol","poly-mcp","rescript"],"latest_commit_sha":null,"homepage":null,"language":"ReScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hyperpolymath.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-16T23:25:24.000Z","updated_at":"2025-12-31T17:21:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hyperpolymath/poly-k8s-mcp","commit_stats":null,"previous_names":["hyperpolymath/poly-k8s-mcp"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/hyperpolymath/poly-k8s-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fpoly-k8s-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fpoly-k8s-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fpoly-k8s-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fpoly-k8s-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyperpolymath","download_url":"https://codeload.github.com/hyperpolymath/poly-k8s-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fpoly-k8s-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28399512,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deno","helm","hyperpolymath","kubectl","kubernetes","kustomize","mcp","mcp-server","model-context-protocol","poly-mcp","rescript"],"created_at":"2026-01-13T20:03:38.711Z","updated_at":"2026-01-13T20:03:39.663Z","avatar_url":"https://github.com/hyperpolymath.png","language":"ReScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"= poly-k8s-mcp\n\nimage:https://img.shields.io/badge/License-MPL_2.0-blue.svg[MPL-2.0,link=\"https://opensource.org/licenses/MPL-2.0\"]\nimage:https://img.shields.io/badge/Philosophy-Palimpsest-purple.svg[Palimpsest,link=\"https://github.com/hyperpolymath/palimpsest-licence\"]\n\n\n:toc:\n:toc-placement!:\n\nimage:https://img.shields.io/badge/RSR-compliant-gold[RSR Compliant,link=https://github.com/hyperpolymath/rhodium-standard-repositories]\nimage:https://img.shields.io/badge/MCP-server-blue[MCP Server,link=https://github.com/modelcontextprotocol]\n\nUnified MCP server for Kubernetes orchestration. Provides Model Context Protocol tools for managing Kubernetes clusters through kubectl, Helm, and Kustomize.\n\ntoc::[]\n\n== Overview\n\npoly-k8s-mcp exposes Kubernetes management capabilities through the Model Context Protocol (MCP), enabling AI assistants and other MCP clients to interact with Kubernetes clusters programmatically.\n\n== Adapters\n\n=== kubectl (12 tools)\nCore Kubernetes CLI operations:\n\n* `kubectl_get` - Get resources (pods, deployments, services, etc.)\n* `kubectl_describe` - Show detailed resource information\n* `kubectl_logs` - View container logs\n* `kubectl_apply` - Apply manifests\n* `kubectl_delete` - Delete resources\n* `kubectl_exec` - Execute commands in containers\n* `kubectl_scale` - Scale deployments/replicasets\n* `kubectl_rollout` - Manage rollouts (status, history, undo, restart)\n* `kubectl_port_forward` - Forward ports (returns command to run)\n* `kubectl_context` - Manage kubectl contexts\n* `kubectl_top` - Show resource usage (CPU/memory)\n* `kubectl_create` - Create resources\n\n=== Helm (14 tools)\nKubernetes package manager:\n\n* `helm_install` - Install charts\n* `helm_upgrade` - Upgrade releases\n* `helm_uninstall` - Uninstall releases\n* `helm_list` - List releases\n* `helm_status` - Get release status\n* `helm_history` - View release history\n* `helm_rollback` - Rollback to previous revision\n* `helm_repo_add` - Add chart repositories\n* `helm_repo_list` - List repositories\n* `helm_repo_update` - Update repository cache\n* `helm_search` - Search for charts\n* `helm_show` - Show chart information\n* `helm_template` - Render templates locally\n* `helm_get` - Get release information\n\n=== Kustomize (8 tools)\nKubernetes configuration management:\n\n* `kustomize_build` - Build kustomization into manifests\n* `kustomize_apply` - Build and apply to cluster\n* `kustomize_create` - Create kustomization.yaml\n* `kustomize_edit_add` - Add resources/patches/configmaps\n* `kustomize_edit_set` - Set namespace/nameprefix/image\n* `kustomize_edit_remove` - Remove items\n* `kustomize_cfg` - Run cfg commands (cat, count, grep, tree)\n* `kustomize_version` - Show version\n\n== Runtime Mode\n\n[IMPORTANT]\n====\n**Local-Agent Mode Only** — This MCP server wraps CLI tools (`kubectl`, `helm`, `kustomize`) and requires `--allow-run` permission. It cannot run in Hosted-HTTP mode.\n====\n\n|===\n|Mode |Supported |Notes\n\n|Local-Agent (stdio)\n|✓ Yes\n|Primary mode. Runs locally, executes CLI commands.\n\n|Hosted-HTTP\n|✗ No\n|Cannot wrap CLI tools from a hosted environment.\n|===\n\n== Security Boundary\n\n[WARNING]\n====\nThis MCP server executes external CLI commands using Deno's `--allow-run` permission. The security boundary is your local kubectl/helm/kustomize configuration.\n====\n\n**What this means:**\n\n* Commands run with your current kubeconfig and credentials\n* The MCP client (e.g., Claude) can perform any kubectl/helm/kustomize action you can\n* Cluster access is determined by your local `~/.kube/config`\n* No additional authentication layer between MCP and the CLIs\n\n**Recommendations:**\n\n1. Use a restricted kubeconfig for MCP access if possible\n2. Consider namespace-scoped RBAC roles\n3. Avoid running this MCP server with cluster-admin credentials\n4. Review tool calls before approving in your MCP client\n\n== Requirements\n\n* https://deno.land/[Deno] runtime (v2.0+)\n* https://kubernetes.io/docs/reference/kubectl/[kubectl] CLI\n* https://helm.sh/[Helm] CLI (optional, for Helm tools)\n* https://kustomize.io/[Kustomize] CLI (optional, for Kustomize tools)\n* Valid kubeconfig (`~/.kube/config` or `KUBECONFIG` env var)\n\n== Installation\n\n[source,bash]\n----\ngit clone https://github.com/hyperpolymath/poly-k8s-mcp\ncd poly-k8s-mcp\n----\n\n== Usage\n\nRun as MCP server (Local-Agent mode):\n\n[source,bash]\n----\ndeno run --allow-run --allow-read --allow-env --allow-write main.js\n----\n\nOr use the systemd service:\n\n[source,bash]\n----\nsystemctl --user enable poly-k8s-mcp\nsystemctl --user start poly-k8s-mcp\n----\n\n== Smoke Test\n\nVerify the server is working correctly:\n\n[source,bash]\n----\n# 1. Check Deno can run the server\ndeno run --allow-run --allow-read --allow-env --allow-write main.js \u0026\nSERVER_PID=$!\n\n# 2. Verify kubectl is accessible\nkubectl version --client\n\n# 3. Test basic tool (requires cluster access)\n# The MCP client should be able to call kubectl_get\n\n# 4. Cleanup\nkill $SERVER_PID\n----\n\n**Expected smoke test results:**\n\n|===\n|Check |Expected Result\n\n|Server starts\n|No errors, listens on stdio\n\n|kubectl available\n|`kubectl version --client` returns version\n\n|kubectl_get works\n|Returns pod list (if cluster accessible)\n\n|Helm available (optional)\n|`helm version` returns version\n\n|Kustomize available (optional)\n|`kustomize version` returns version\n|===\n\n== License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperpolymath%2Fpoly-k8s-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperpolymath%2Fpoly-k8s-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperpolymath%2Fpoly-k8s-mcp/lists"}