Enable using 'npx' as your command on Windows

This commit is contained in:
Ani Betts
2024-11-27 17:04:52 +01:00
parent c770d217e7
commit 853a3b4faf

View File

@@ -12,6 +12,7 @@ import {
import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js"; import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
import express from "express"; import express from "express";
import mcpProxy from "./mcpProxy.js"; import mcpProxy from "./mcpProxy.js";
import { findActualExecutable } from "spawn-rx";
// Polyfill EventSource for an SSE client in Node.js // Polyfill EventSource for an SSE client in Node.js
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -37,14 +38,17 @@ const createTransport = async (query: express.Request["query"]) => {
if (transportType === "stdio") { if (transportType === "stdio") {
const command = query.command as string; const command = query.command as string;
const args = (query.args as string).split(/\s+/); const origArgs = (query.args as string).split(/\s+/);
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);
console.log( console.log(
`Stdio transport: command=${command}, args=${args}, env=${JSON.stringify(env)}`, `Stdio transport: command=${cmd}, args=${args}, env=${JSON.stringify(env)}`,
); );
const transport = new StdioClientTransport({ const transport = new StdioClientTransport({
command, command: cmd,
args, args,
env, env,
stderr: "pipe", stderr: "pipe",