From 282e482a08a670999232bd7ed2052c9abd9cc1a2 Mon Sep 17 00:00:00 2001 From: codeboyzhou Date: Fri, 28 Mar 2025 16:14:17 +0800 Subject: [PATCH 1/2] fix(tests): Failed to start process with command npx on Windows platform while running mvn test --- .../client/StdioMcpAsyncClientTests.java | 6 +++++- .../client/StdioMcpSyncClientTests.java | 7 +++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java index 95230942..4ff01006 100644 --- a/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java @@ -25,7 +25,11 @@ protected McpClientTransport createMcpTransport() { ServerParameters stdioParams = ServerParameters.builder("npx") .args("-y", "@modelcontextprotocol/server-everything", "dir") .build(); - return new StdioClientTransport(stdioParams); + ServerParameters windowsStdioParams = ServerParameters.builder("cmd.exe") + .args("/c", "npx.cmd", "-y", "@modelcontextprotocol/server-everything", "dir") + .build(); + boolean isWindows = System.getProperty("os.name").toLowerCase().contains("win"); + return new StdioClientTransport(isWindows ? windowsStdioParams : stdioParams); } protected Duration getInitializationTimeout() { diff --git a/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java index 925852b5..1b4dbb26 100644 --- a/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java @@ -33,8 +33,11 @@ protected McpClientTransport createMcpTransport() { ServerParameters stdioParams = ServerParameters.builder("npx") .args("-y", "@modelcontextprotocol/server-everything", "dir") .build(); - - return new StdioClientTransport(stdioParams); + ServerParameters windowsStdioParams = ServerParameters.builder("cmd.exe") + .args("/c", "npx.cmd", "-y", "@modelcontextprotocol/server-everything", "dir") + .build(); + boolean isWindows = System.getProperty("os.name").toLowerCase().contains("win"); + return new StdioClientTransport(isWindows ? windowsStdioParams : stdioParams); } @Test From 961b1ec23edfedb6e0ef2e8173fbc4897ddf3729 Mon Sep 17 00:00:00 2001 From: codeboyzhou Date: Sat, 29 Mar 2025 02:25:55 +0800 Subject: [PATCH 2/2] fix(tests): Failed to start process with command npx on Windows platform while running mvn test --- .../client/StdioMcpAsyncClientTests.java | 20 +++++++++++-------- .../client/StdioMcpSyncClientTests.java | 20 +++++++++++-------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java index 4ff01006..c3908013 100644 --- a/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java @@ -22,14 +22,18 @@ class StdioMcpAsyncClientTests extends AbstractMcpAsyncClientTests { @Override protected McpClientTransport createMcpTransport() { - ServerParameters stdioParams = ServerParameters.builder("npx") - .args("-y", "@modelcontextprotocol/server-everything", "dir") - .build(); - ServerParameters windowsStdioParams = ServerParameters.builder("cmd.exe") - .args("/c", "npx.cmd", "-y", "@modelcontextprotocol/server-everything", "dir") - .build(); - boolean isWindows = System.getProperty("os.name").toLowerCase().contains("win"); - return new StdioClientTransport(isWindows ? windowsStdioParams : stdioParams); + ServerParameters stdioParams; + if (System.getProperty("os.name").toLowerCase().contains("win")) { + stdioParams = ServerParameters.builder("cmd.exe") + .args("/c", "npx.cmd", "-y", "@modelcontextprotocol/server-everything", "dir") + .build(); + } + else { + stdioParams = ServerParameters.builder("npx") + .args("-y", "@modelcontextprotocol/server-everything", "dir") + .build(); + } + return new StdioClientTransport(stdioParams); } protected Duration getInitializationTimeout() { diff --git a/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java index 1b4dbb26..8e75c4a3 100644 --- a/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java @@ -30,14 +30,18 @@ class StdioMcpSyncClientTests extends AbstractMcpSyncClientTests { @Override protected McpClientTransport createMcpTransport() { - ServerParameters stdioParams = ServerParameters.builder("npx") - .args("-y", "@modelcontextprotocol/server-everything", "dir") - .build(); - ServerParameters windowsStdioParams = ServerParameters.builder("cmd.exe") - .args("/c", "npx.cmd", "-y", "@modelcontextprotocol/server-everything", "dir") - .build(); - boolean isWindows = System.getProperty("os.name").toLowerCase().contains("win"); - return new StdioClientTransport(isWindows ? windowsStdioParams : stdioParams); + ServerParameters stdioParams; + if (System.getProperty("os.name").toLowerCase().contains("win")) { + stdioParams = ServerParameters.builder("cmd.exe") + .args("/c", "npx.cmd", "-y", "@modelcontextprotocol/server-everything", "dir") + .build(); + } + else { + stdioParams = ServerParameters.builder("npx") + .args("-y", "@modelcontextprotocol/server-everything", "dir") + .build(); + } + return new StdioClientTransport(stdioParams); } @Test