{"id":29901,"recorded_at":"2026-10-26T14:36:01.840681Z","observed_at":"2026-10-26T14:36:01.840628Z","subject_kind":"source_record","subject":"mcp_registry:io.github.NanaGyamfiPrempeh30/k8s-troubleshoot-mcp","kind":"listing","method":"baseline/1","body":{"endpoints":[["web","https://github.com/NanaGyamfiPrempeh30/k8s-troubleshoot-mcp"]],"name":"Kubernetes Troubleshoot","owner_address":null,"raw":{"_meta":{"io.modelcontextprotocol.registry/official":{"isLatest":true,"publishedAt":"2026-08-24T20:12:54.510649Z","status":"active","statusChangedAt":"2026-08-24T20:12:54.510649Z","updatedAt":"2026-08-24T20:12:54.510649Z"}},"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","description":"Read-only Kubernetes diagnostics: pods, logs, events, workloads, services, PVCs and nodes.","name":"io.github.NanaGyamfiPrempeh30/k8s-troubleshoot-mcp","packages":[{"environmentVariables":[{"default":"/kubeconfig","description":"Path to the kubeconfig inside the container. Must match the mount destination. There is no fallback to ~/.kube/config and no in-cluster config: a missing, unreadable or malformed file is a startup failure rather than a silent downgrade to an ambient credential.","isRequired":true,"name":"KUBECONFIG"},{"description":"Comma-separated namespaces the server may read, e.g. staging,production. Wildcards (* and all) are rejected at startup, and kube-system and kube-public are stripped even if listed. This is defense-in-depth, not the security boundary — the boundary is the ServiceAccount's RBAC bindings.","format":"string","isRequired":true,"name":"ALLOWED_NAMESPACES"},{"default":"INFO","description":"DEBUG, INFO, WARNING or ERROR. All logging goes to stderr; stdout carries the JSON-RPC stream exclusively.","name":"LOG_LEVEL"},{"default":"30","description":"Kubernetes API request timeout. Must be a positive integer.","name":"API_TIMEOUT_SECONDS"},{"default":"200","description":"Maximum log lines any single get_pod_logs call may return. Must be a positive integer; clamped to a hard ceiling of 1000 with a warning.","name":"MAX_LOG_LINES"}],"identifier":"docker.io/yawgyamfiprem32/k8s-troubleshoot-mcp:1.0.0","registryType":"oci","runtimeArguments":[{"description":"Mount the kubeconfig read-only. This server performs no writes of any kind, so a writable mount would grant privilege it has no use for.","isRequired":true,"name":"--mount","type":"named","value":"type=bind,src={kubeconfig_path},dst=/kubeconfig,readonly","variables":{"kubeconfig_path":{"description":"Absolute path on the host to a kubeconfig scoped to the diagnostic ServiceAccount. Generate it with scripts/generate-kubeconfig.sh — do not mount an admin kubeconfig. The file must be readable by UID 10001, which the container runs as.","format":"filepath","isRequired":true}}}],"runtimeHint":"docker","transport":{"type":"stdio"}}],"repository":{"source":"github","url":"https://github.com/NanaGyamfiPrempeh30/k8s-troubleshoot-mcp"},"title":"Kubernetes Troubleshoot","version":"1.0.0","websiteUrl":"https://github.com/NanaGyamfiPrempeh30/k8s-troubleshoot-mcp#readme"}},"source":"mcp_registry","summary":"Read-only Kubernetes diagnostics: pods, logs, events, workloads, services, PVCs and nodes."},"body_sha256":"ea6b074ab6726b5be308ffbcbee2531dfbc8c26531880dde162d7f858270a941","prev_id":null,"leaf":"0x72d4076dcef774c84ee1e397bd180fbc2968f6ee0df0c7e9a8a03eae161bc1e5","leaf_text":"{\"body\":\"ea6b074ab6726b5be308ffbcbee2531dfbc8c26531880dde162d7f858270a941\",\"id\":29901,\"kind\":\"listing\",\"method\":\"baseline/1\",\"observed_us\":1793025361840628,\"prev\":null,\"subject\":\"mcp_registry:io.github.NanaGyamfiPrempeh30/k8s-troubleshoot-mcp\",\"subject_kind\":\"source_record\"}","day":null,"proof":[]}