From e381261026e4b0a8b9253a5b40b21aada7543fa3 Mon Sep 17 00:00:00 2001 From: kongqi <32472226+kongqi404@users.noreply.github.com> Date: Wed, 16 Apr 2025 13:24:30 +0000 Subject: [PATCH 1/2] Add npx validation --- src/fastmcp/client/transports.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/fastmcp/client/transports.py b/src/fastmcp/client/transports.py index 27b885688..c3c2b797b 100644 --- a/src/fastmcp/client/transports.py +++ b/src/fastmcp/client/transports.py @@ -7,7 +7,7 @@ from pathlib import Path from typing import ( TypedDict, ) - +import shutil from mcp import ClientSession, StdioServerParameters from mcp.client.session import ( ListRootsFnT, @@ -341,6 +341,10 @@ class NpxStdioTransport(StdioTransport): env_vars: Additional environment variables use_package_lock: Whether to use package-lock.json (--prefer-offline) """ + # verify npx is installed + if shutil.which("npx") is None: + raise ValueError("Command 'npx' not found") + # Basic validation if project_directory and not Path(project_directory).exists(): raise NotADirectoryError( From b4c53c9f883deb58d0b298b3a11c8b15d9ec5a8f Mon Sep 17 00:00:00 2001 From: Jeremiah Lowin <153965+jlowin@users.noreply.github.com> Date: Wed, 16 Apr 2025 09:34:59 -0400 Subject: [PATCH 2/2] Fix static checks --- src/fastmcp/client/transports.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/fastmcp/client/transports.py b/src/fastmcp/client/transports.py index c3c2b797b..cea14a0b9 100644 --- a/src/fastmcp/client/transports.py +++ b/src/fastmcp/client/transports.py @@ -2,12 +2,13 @@ import abc import contextlib import datetime import os +import shutil from collections.abc import AsyncIterator from pathlib import Path from typing import ( TypedDict, ) -import shutil + from mcp import ClientSession, StdioServerParameters from mcp.client.session import ( ListRootsFnT,