{"name":"io.github.inhuman/mcp-k8s-ephemeral-job","slug":"inhuman-mcp-k8s-ephemeral-job","title":"Kubernetes Ephemeral Job","description":"Runs a command in a throwaway Kubernetes pod and returns exit code, output and artifacts.","url":"https://mcp.market/server/inhuman-mcp-k8s-ephemeral-job","rating":null,"grade":"C","score":65,"certified":false,"status":"active","category":"devtools","tags":["devtools"],"presence":{"score":10,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-07-20T09:37:53.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"oci","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/inhuman/mcp-k8s-ephemeral-job","website":null,"version":"0.7.1","remotes":[],"packages":[{"registryType":"oci","identifier":"docker.io/idconstruct/mcp-k8s-ephemeral-job:v0.7.1","runtimeHint":"docker","transport":{"type":"stdio"},"runtimeArguments":[{"description":"Mount the kubeconfig directory read-only so the server can reach the cluster.","value":"{kubeconfig_dir}:/kube:ro","variables":{"kubeconfig_dir":{"description":"Host directory holding your kubeconfig, e.g. /home/you/.kube","isRequired":true}},"type":"named","name":"--volume"},{"description":"Read-only root filesystem — the server writes nothing locally.","type":"named","name":"--read-only"},{"description":"Drop all Linux capabilities.","value":"ALL","type":"named","name":"--cap-drop"},{"description":"Block privilege escalation.","value":"no-new-privileges","type":"named","name":"--security-opt"},{"description":"Memory limit for the server process itself.","value":"256m","type":"named","name":"--memory"}],"environmentVariables":[{"description":"Strict image allowlist (CSV). Empty means every call is rejected, so this must be set.","isRequired":true,"name":"MCP_K8S_ALLOWED_IMAGES"},{"description":"Path to the kubeconfig inside the container. Empty = use in-cluster credentials.","default":"/kube/config","name":"MCP_K8S_KUBECONFIG"},{"description":"Namespace the ephemeral pods are created in. Needs a Role/RoleBinding for jobs and pods.","default":"mcp-ephemeral","name":"MCP_K8S_NAMESPACE"},{"description":"MCP transport: stdio | http | sse. Must be 'stdio' for direct docker/stdio use.","default":"stdio","name":"MCP_K8S_TRANSPORT"},{"description":"Default wall-clock timeout per job, seconds.","default":"60","name":"MCP_K8S_DEFAULT_TIMEOUT_S"},{"description":"Maximum wall-clock timeout a caller may request, seconds.","default":"600","name":"MCP_K8S_MAX_TIMEOUT_S"},{"description":"Cap on combined stdout/stderr before truncation.","default":"1048576","name":"MCP_K8S_MAX_OUTPUT_BYTES"},{"description":"Cap on the total size of returned artifacts.","default":"10485760","name":"MCP_K8S_MAX_ARTIFACT_BYTES"},{"description":"Maximum ephemeral pods running at the same time.","default":"10","name":"MCP_K8S_MAX_CONCURRENT"},{"description":"Pod CPU request; limits come from the caller or the namespace LimitRange.","default":"1","name":"MCP_K8S_DEFAULT_CPU"},{"description":"Pod memory request; limits come from the caller or the namespace LimitRange.","default":"512Mi","name":"MCP_K8S_DEFAULT_MEMORY"},{"description":"Helper image used to inject input files and collect artifacts.","default":"busybox:1.36","name":"MCP_K8S_SIDECAR_IMAGE"},{"description":"Image carrying git for the clone init container. Empty disables the clone field.","name":"MCP_K8S_CLONE_IMAGE"},{"description":"Secret with git tokens, mounted only on the cloner. Empty disables the clone field.","isSecret":true,"name":"MCP_K8S_CLONE_SECRET"},{"description":"Existing PVC mounted into every job pod as a shared cache. Empty = no cache.","name":"MCP_K8S_CACHE_PVC"},{"description":"Where the cache PVC is mounted, e.g. /go/pkg/mod. Empty = no cache.","name":"MCP_K8S_CACHE_MOUNT_PATH"},{"description":"JSON object of env vars added to every job pod; caller keys win on collision.","name":"MCP_K8S_JOB_EXTRA_ENV"},{"description":"Optional X-MCP-AUTH token required on every request (http/sse transports only).","isSecret":true,"name":"MCP_K8S_AUTH_TOKEN"}]}],"tools":[],"scan":{"score":65,"grade":"C","scanned_at":"2026-09-25T17:24:00.284Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-25T17:24:00.250Z","components":{"code":{"score":-1,"max":25,"notes":["package could not be scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":12,"max":15,"notes":["last push 67 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[],"repo":{"found":true,"owner":"inhuman","repo":"mcp-k8s-ephemeral-job","archived":false,"pushedAt":"2026-07-20T09:37:53Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/2518263?v=4","ownerCreatedAt":"2012-10-09T08:00:33Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/2518263?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-07-20T09:37:53.000Z","score":10}}}},"grade_history":[],"reviews":[]}