Skip to content

Commit 7ea47c0

Browse files
Fix transport type propagation from CLI to web client
- Add --transport and --server-url support to client/bin/start.js - Pass transport configuration through server to client via /config endpoint - Update client App.tsx to use defaultTransport and defaultServerUrl from server - Ensure SSE and HTTP transport configs work properly from CLI
1 parent 195f790 commit 7ea47c0

File tree

3 files changed

+41
-2
lines changed

3 files changed

+41
-2
lines changed

client/bin/start.js

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,15 @@ function getClientUrl(port, authDisabled, sessionToken, serverPort) {
2828
}
2929

3030
async function startDevServer(serverOptions) {
31-
const { SERVER_PORT, CLIENT_PORT, sessionToken, envVars, abort } =
32-
serverOptions;
31+
const {
32+
SERVER_PORT,
33+
CLIENT_PORT,
34+
sessionToken,
35+
envVars,
36+
abort,
37+
transport,
38+
serverUrl,
39+
} = serverOptions;
3340
const serverCommand = "npx";
3441
const serverArgs = ["tsx", "watch", "--clear-screen=false", "src/index.ts"];
3542
const isWindows = process.platform === "win32";
@@ -42,6 +49,8 @@ async function startDevServer(serverOptions) {
4249
CLIENT_PORT,
4350
MCP_PROXY_AUTH_TOKEN: sessionToken,
4451
MCP_ENV_VARS: JSON.stringify(envVars),
52+
...(transport ? { MCP_TRANSPORT: transport } : {}),
53+
...(serverUrl ? { MCP_SERVER_URL: serverUrl } : {}),
4554
},
4655
signal: abort.signal,
4756
echoOutput: true,
@@ -78,6 +87,8 @@ async function startProdServer(serverOptions) {
7887
abort,
7988
command,
8089
mcpServerArgs,
90+
transport,
91+
serverUrl,
8192
} = serverOptions;
8293
const inspectorServerPath = resolve(
8394
__dirname,
@@ -95,6 +106,8 @@ async function startProdServer(serverOptions) {
95106
...(mcpServerArgs && mcpServerArgs.length > 0
96107
? [`--args=${mcpServerArgs.join(" ")}`]
97108
: []),
109+
...(transport ? [`--transport=${transport}`] : []),
110+
...(serverUrl ? [`--server-url=${serverUrl}`] : []),
98111
],
99112
{
100113
env: {
@@ -208,6 +221,8 @@ async function main() {
208221
let command = null;
209222
let parsingFlags = true;
210223
let isDev = false;
224+
let transport = null;
225+
let serverUrl = null;
211226

212227
for (let i = 0; i < args.length; i++) {
213228
const arg = args[i];
@@ -222,6 +237,16 @@ async function main() {
222237
continue;
223238
}
224239

240+
if (parsingFlags && arg === "--transport" && i + 1 < args.length) {
241+
transport = args[++i];
242+
continue;
243+
}
244+
245+
if (parsingFlags && arg === "--server-url" && i + 1 < args.length) {
246+
serverUrl = args[++i];
247+
continue;
248+
}
249+
225250
if (parsingFlags && arg === "-e" && i + 1 < args.length) {
226251
const envVar = args[++i];
227252
const equalsIndex = envVar.indexOf("=");
@@ -273,6 +298,8 @@ async function main() {
273298
abort,
274299
command,
275300
mcpServerArgs,
301+
transport,
302+
serverUrl,
276303
};
277304

278305
const result = isDev

client/src/App.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,14 @@ const App = () => {
455455
if (data.defaultArgs) {
456456
setArgs(data.defaultArgs);
457457
}
458+
if (data.defaultTransport) {
459+
setTransportType(
460+
data.defaultTransport as "stdio" | "sse" | "streamable-http",
461+
);
462+
}
463+
if (data.defaultServerUrl) {
464+
setSseUrl(data.defaultServerUrl);
465+
}
458466
})
459467
.catch((error) =>
460468
console.error("Error fetching default environment:", error),

server/src/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ const { values } = parseArgs({
4040
env: { type: "string", default: "" },
4141
args: { type: "string", default: "" },
4242
command: { type: "string", default: "" },
43+
transport: { type: "string", default: "" },
44+
"server-url": { type: "string", default: "" },
4345
},
4446
});
4547

@@ -523,6 +525,8 @@ app.get("/config", originValidationMiddleware, authMiddleware, (req, res) => {
523525
defaultEnvironment,
524526
defaultCommand: values.command,
525527
defaultArgs: values.args,
528+
defaultTransport: values.transport,
529+
defaultServerUrl: values["server-url"],
526530
});
527531
} catch (error) {
528532
console.error("Error in /config route:", error);

0 commit comments

Comments
 (0)