fix: preserve PATHEXT for stdio mcp servers on windows (#5822)

* fix: preserve PATHEXT for stdio mcp servers on windows

* chore: delete test_mcp_client.py

---------

Co-authored-by: Soulter <905617992@qq.com>
This commit is contained in:
晴空
2026-03-21 00:27:54 +08:00
committed by GitHub
co-authored by Soulter
parent dde02815c2
commit d2e0bc778a
+19
View File
@@ -1,5 +1,7 @@
import asyncio
import logging
import os
import sys
from contextlib import AsyncExitStack
from datetime import timedelta
from typing import Generic
@@ -45,6 +47,22 @@ def _prepare_config(config: dict) -> dict:
return config
def _prepare_stdio_env(config: dict) -> dict:
"""Preserve Windows executable resolution for stdio subprocesses."""
if sys.platform != "win32":
return config
pathext = os.environ.get("PATHEXT")
if not pathext:
return config
prepared = config.copy()
env = dict(prepared.get("env") or {})
env.setdefault("PATHEXT", pathext)
prepared["env"] = env
return prepared
async def _quick_test_mcp_connection(config: dict) -> tuple[bool, str]:
"""Quick test MCP server connectivity"""
import aiohttp
@@ -214,6 +232,7 @@ class MCPClient:
)
else:
cfg = _prepare_stdio_env(cfg)
server_params = mcp.StdioServerParameters(
**cfg,
)