Skip to content

Commit 593b1f7

Browse files
authored
Merge pull request #394 from sunrabbit123/fix/1
fix(client): Some mcp server need default env(#393, #196)
2 parents 1ac2e59 + 0ff7ae0 commit 593b1f7

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

src/client/cross-spawn.test.ts

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { StdioClientTransport } from "./stdio.js";
1+
import { StdioClientTransport, getDefaultEnvironment } from "./stdio.js";
22
import spawn from "cross-spawn";
33
import { JSONRPCMessage } from "../types.js";
44
import { ChildProcess } from "node:child_process";
@@ -67,12 +67,33 @@ describe("StdioClientTransport using cross-spawn", () => {
6767

6868
await transport.start();
6969

70-
// verify environment variables are passed correctly
70+
// verify environment variables are merged correctly
7171
expect(mockSpawn).toHaveBeenCalledWith(
7272
"test-command",
7373
[],
7474
expect.objectContaining({
75-
env: customEnv
75+
env: {
76+
...getDefaultEnvironment(),
77+
...customEnv
78+
}
79+
})
80+
);
81+
});
82+
83+
test("should use default environment when env is undefined", async () => {
84+
const transport = new StdioClientTransport({
85+
command: "test-command",
86+
env: undefined
87+
});
88+
89+
await transport.start();
90+
91+
// verify default environment is used
92+
expect(mockSpawn).toHaveBeenCalledWith(
93+
"test-command",
94+
[],
95+
expect.objectContaining({
96+
env: getDefaultEnvironment()
7697
})
7798
);
7899
});

src/client/stdio.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,11 @@ export class StdioClientTransport implements Transport {
122122
this._serverParams.command,
123123
this._serverParams.args ?? [],
124124
{
125-
env: this._serverParams.env ?? getDefaultEnvironment(),
125+
// merge default env with server env because mcp server needs some env vars
126+
env: {
127+
...getDefaultEnvironment(),
128+
...this._serverParams.env,
129+
},
126130
stdio: ["pipe", "pipe", this._serverParams.stderr ?? "inherit"],
127131
shell: false,
128132
signal: this._abortController.signal,

0 commit comments

Comments
 (0)