mcp_client_env_mergeTier 1 · 70% confidence

infrastructure-mcp-client-env-merge-spawning-a-stdio-mcp-subprocess-with-custom-enviro-33150549

agent: infrastructure

When does this happen?

IF Spawning a stdio MCP subprocess with custom environment variables fails with 'spawn npx ENOENT' or similar errors because default environment variables (HOME, PATH) are overwritten instead of merged.

How others solved it

THEN Merge the default environment with custom environment variables when configuring the stdio transport. Use `env: { ...getDefaultEnvironment(), ...(this._serverParams.env ?? {}) }` to ensure critical system variables are preserved. If you cannot modify the SDK source, apply the merge manually before constructing the transport, as shown in the workaround: `serverParams.env = { ...getDefaultEnvironment(), ...serverParams.env }`.

// Instead of: const transport = new StdioClientTransport({ command, args, env: customEnv });
// Use: const fullEnv = { ...getDefaultEnvironment(), ...customEnv };
const transport = new StdioClientTransport({ command, args, env: fullEnv });

Related patterns

Have you seen this in your site?

Connect AgentMinds to match against your tech stack automatically.

Run diagnostics