Skip to content

KUBECONFIG env variable not honored in npx child process #67

@adietish

Description

@adietish

Steps:

  1. ASSERT: have the KUBECONFIG env var set:
KUBECONFIG=${HOME}/.kube/config:${HOME}/.kube/minikube.yaml

config:

apiVersion: "v1"
kind: "Config"
current-context: "minikube"
preferences: {}

minikube.yaml

apiVersion: v1
clusters:
- cluster:
    certificate-authority: /Users/adietish/.minikube/ca.crt
    extensions:
    - extension:
        last-update: Wed, 08 Jan 2025 15:05:54 CET
        provider: minikube.sigs.k8s.io
        version: v1.34.0
      name: cluster_info
    server: https://127.0.0.1:41825
  name: minikube
contexts:
- context:
    cluster: minikube
    extensions:
    - extension:
        last-update: Wed, 08 Jan 2025 15:05:54 CET
        provider: minikube.sigs.k8s.io
        version: v1.34.0
      name: context_info
    namespace: kube-node-lease
    user: minikube
  name: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: /Users/adietish/.minikube/profiles/minikube/client.crt
    client-key: /Users/adietish/.minikube/profiles/minikube/client.key
  1. ASSERT: have kubernetes mcp server added to the vscode config:
"mcp": {
	"servers": {
		"kubernetes": {
			"command": "npx",
			"args": [
				"kubernetes-mcp-server@latest"
			]
		}
  1. EXEC: start the kubernetes mcp server (json editor for the settings.json file displays a "Start" hint on top of the property)

Result:
The mcp server fails to start because it cannot find the context that the config file is pointing to

2025-04-30 16:11:50.259 [warning] Failed to parse message: "Failed to initialize MCP server: invalid configuration: [context was not found for specified context: kind-kind-cluster, cluster has no server defined]\n"
2025-04-30 16:11:50.262 [warning] [server stderr] node:child_process:921
2025-04-30 16:11:50.262 [warning] [server stderr]     throw err;
2025-04-30 16:11:50.262 [warning] [server stderr]     ^
2025-04-30 16:11:50.262 [warning] [server stderr] 
2025-04-30 16:11:50.262 [warning] [server stderr] Error: Command failed: /Users/adietish/.npm/_npx/acdc49484db51b02/node_modules/kubernetes-mcp-server-darwin-arm64/bin/kubernetes-mcp-server-darwin-arm64
2025-04-30 16:11:50.262 [warning] [server stderr]     at genericNodeError (node:internal/errors:983:15)
2025-04-30 16:11:50.262 [warning] [server stderr]     at wrappedFn (node:internal/errors:537:14)
2025-04-30 16:11:50.262 [warning] [server stderr]     at checkExecSyncError (node:child_process:882:11)
2025-04-30 16:11:50.262 [warning] [server stderr]     at Object.execFileSync (node:child_process:918:15)
2025-04-30 16:11:50.263 [warning] [server stderr]     at Object.<anonymous> (/Users/adietish/.npm/_npx/acdc49484db51b02/node_modules/kubernetes-mcp-server/bin/index.js:24:14)
2025-04-30 16:11:50.263 [warning] [server stderr]     at Module._compile (node:internal/modules/cjs/loader:1734:14)
2025-04-30 16:11:50.263 [warning] [server stderr]     at Object..js (node:internal/modules/cjs/loader:1899:10)
2025-04-30 16:11:50.263 [warning] [server stderr]     at Module.load (node:internal/modules/cjs/loader:1469:32)
2025-04-30 16:11:50.263 [warning] [server stderr]     at Function._load (node:internal/modules/cjs/loader:1286:12)
2025-04-30 16:11:50.263 [warning] [server stderr]     at TracingChannel.traceSync (node:diagnostics_channel:322:14) {
2025-04-30 16:11:50.263 [warning] [server stderr]   status: 1,
2025-04-30 16:11:50.263 [warning] [server stderr]   signal: null,
2025-04-30 16:11:50.263 [warning] [server stderr]   output: [ null, null, null ],
2025-04-30 16:11:50.263 [warning] [server stderr]   pid: 33753,
2025-04-30 16:11:50.263 [warning] [server stderr]   stdout: null,
2025-04-30 16:11:50.263 [warning] [server stderr]   stderr: null
2025-04-30 16:11:50.263 [warning] [server stderr] }
2025-04-30 16:11:50.263 [warning] [server stderr] 
2025-04-30 16:11:50.263 [warning] [server stderr] Node.js v23.9.0
2025-04-30 16:11:50.270 [info] Connection state: Error Process exited with code 1

Once you add the context to the config file (instead of having it in a separate file), the mcp server starts just fine.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions