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
This commit is contained in:
parent
195f79076e
commit
7ea47c0caa
3 changed files with 41 additions and 2 deletions
|
|
@ -28,8 +28,15 @@ function getClientUrl(port, authDisabled, sessionToken, serverPort) {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function startDevServer(serverOptions) {
|
async function startDevServer(serverOptions) {
|
||||||
const { SERVER_PORT, CLIENT_PORT, sessionToken, envVars, abort } =
|
const {
|
||||||
serverOptions;
|
SERVER_PORT,
|
||||||
|
CLIENT_PORT,
|
||||||
|
sessionToken,
|
||||||
|
envVars,
|
||||||
|
abort,
|
||||||
|
transport,
|
||||||
|
serverUrl,
|
||||||
|
} = serverOptions;
|
||||||
const serverCommand = "npx";
|
const serverCommand = "npx";
|
||||||
const serverArgs = ["tsx", "watch", "--clear-screen=false", "src/index.ts"];
|
const serverArgs = ["tsx", "watch", "--clear-screen=false", "src/index.ts"];
|
||||||
const isWindows = process.platform === "win32";
|
const isWindows = process.platform === "win32";
|
||||||
|
|
@ -42,6 +49,8 @@ async function startDevServer(serverOptions) {
|
||||||
CLIENT_PORT,
|
CLIENT_PORT,
|
||||||
MCP_PROXY_AUTH_TOKEN: sessionToken,
|
MCP_PROXY_AUTH_TOKEN: sessionToken,
|
||||||
MCP_ENV_VARS: JSON.stringify(envVars),
|
MCP_ENV_VARS: JSON.stringify(envVars),
|
||||||
|
...(transport ? { MCP_TRANSPORT: transport } : {}),
|
||||||
|
...(serverUrl ? { MCP_SERVER_URL: serverUrl } : {}),
|
||||||
},
|
},
|
||||||
signal: abort.signal,
|
signal: abort.signal,
|
||||||
echoOutput: true,
|
echoOutput: true,
|
||||||
|
|
@ -78,6 +87,8 @@ async function startProdServer(serverOptions) {
|
||||||
abort,
|
abort,
|
||||||
command,
|
command,
|
||||||
mcpServerArgs,
|
mcpServerArgs,
|
||||||
|
transport,
|
||||||
|
serverUrl,
|
||||||
} = serverOptions;
|
} = serverOptions;
|
||||||
const inspectorServerPath = resolve(
|
const inspectorServerPath = resolve(
|
||||||
__dirname,
|
__dirname,
|
||||||
|
|
@ -95,6 +106,8 @@ async function startProdServer(serverOptions) {
|
||||||
...(mcpServerArgs && mcpServerArgs.length > 0
|
...(mcpServerArgs && mcpServerArgs.length > 0
|
||||||
? [`--args=${mcpServerArgs.join(" ")}`]
|
? [`--args=${mcpServerArgs.join(" ")}`]
|
||||||
: []),
|
: []),
|
||||||
|
...(transport ? [`--transport=${transport}`] : []),
|
||||||
|
...(serverUrl ? [`--server-url=${serverUrl}`] : []),
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
env: {
|
env: {
|
||||||
|
|
@ -208,6 +221,8 @@ async function main() {
|
||||||
let command = null;
|
let command = null;
|
||||||
let parsingFlags = true;
|
let parsingFlags = true;
|
||||||
let isDev = false;
|
let isDev = false;
|
||||||
|
let transport = null;
|
||||||
|
let serverUrl = null;
|
||||||
|
|
||||||
for (let i = 0; i < args.length; i++) {
|
for (let i = 0; i < args.length; i++) {
|
||||||
const arg = args[i];
|
const arg = args[i];
|
||||||
|
|
@ -222,6 +237,16 @@ async function main() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parsingFlags && arg === "--transport" && i + 1 < args.length) {
|
||||||
|
transport = args[++i];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parsingFlags && arg === "--server-url" && i + 1 < args.length) {
|
||||||
|
serverUrl = args[++i];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (parsingFlags && arg === "-e" && i + 1 < args.length) {
|
if (parsingFlags && arg === "-e" && i + 1 < args.length) {
|
||||||
const envVar = args[++i];
|
const envVar = args[++i];
|
||||||
const equalsIndex = envVar.indexOf("=");
|
const equalsIndex = envVar.indexOf("=");
|
||||||
|
|
@ -273,6 +298,8 @@ async function main() {
|
||||||
abort,
|
abort,
|
||||||
command,
|
command,
|
||||||
mcpServerArgs,
|
mcpServerArgs,
|
||||||
|
transport,
|
||||||
|
serverUrl,
|
||||||
};
|
};
|
||||||
|
|
||||||
const result = isDev
|
const result = isDev
|
||||||
|
|
|
||||||
|
|
@ -455,6 +455,14 @@ const App = () => {
|
||||||
if (data.defaultArgs) {
|
if (data.defaultArgs) {
|
||||||
setArgs(data.defaultArgs);
|
setArgs(data.defaultArgs);
|
||||||
}
|
}
|
||||||
|
if (data.defaultTransport) {
|
||||||
|
setTransportType(
|
||||||
|
data.defaultTransport as "stdio" | "sse" | "streamable-http",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (data.defaultServerUrl) {
|
||||||
|
setSseUrl(data.defaultServerUrl);
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.catch((error) =>
|
.catch((error) =>
|
||||||
console.error("Error fetching default environment:", error),
|
console.error("Error fetching default environment:", error),
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,8 @@ const { values } = parseArgs({
|
||||||
env: { type: "string", default: "" },
|
env: { type: "string", default: "" },
|
||||||
args: { type: "string", default: "" },
|
args: { type: "string", default: "" },
|
||||||
command: { type: "string", default: "" },
|
command: { type: "string", default: "" },
|
||||||
|
transport: { type: "string", default: "" },
|
||||||
|
"server-url": { type: "string", default: "" },
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -523,6 +525,8 @@ app.get("/config", originValidationMiddleware, authMiddleware, (req, res) => {
|
||||||
defaultEnvironment,
|
defaultEnvironment,
|
||||||
defaultCommand: values.command,
|
defaultCommand: values.command,
|
||||||
defaultArgs: values.args,
|
defaultArgs: values.args,
|
||||||
|
defaultTransport: values.transport,
|
||||||
|
defaultServerUrl: values["server-url"],
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error in /config route:", error);
|
console.error("Error in /config route:", error);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue