fix(server) Differentiate command resolution by platform

This commit is contained in:
Jack Steam
2024-12-17 16:49:55 -06:00
parent eb70539958
commit 0fa56e14d9

View File

@@ -4,6 +4,7 @@ import cors from "cors";
import EventSource from "eventsource"; import EventSource from "eventsource";
import { parseArgs } from "node:util"; import { parseArgs } from "node:util";
import { parse as shellParseArgs } from "shell-quote"; import { parse as shellParseArgs } from "shell-quote";
import { platform } from "node:os";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js"; import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
import { import {
@@ -42,7 +43,12 @@ const createTransport = async (query: express.Request["query"]) => {
const origArgs = shellParseArgs(query.args as string) as string[]; const origArgs = shellParseArgs(query.args as string) as string[];
const env = query.env ? JSON.parse(query.env as string) : undefined; const env = query.env ? JSON.parse(query.env as string) : undefined;
const { cmd, args } = findActualExecutable(command, origArgs); // On Windows, we need to find the actual executable to run
// On other platforms, we can just use the command as-is
const { cmd, args } =
platform() === "win32"
? findActualExecutable(command, origArgs)
: { cmd: command, args: origArgs };
console.log( console.log(
`Stdio transport: command=${cmd}, args=${args}, env=${JSON.stringify(env)}`, `Stdio transport: command=${cmd}, args=${args}, env=${JSON.stringify(env)}`,