Windows MCP SSH stdio transport closes after initialize when PROGRAMDATA is missing from inherited environment
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 1/5
- Geschätzter Aufwand
- Unter einer Stunde
- Anfängerfreundlichkeit
- 25/100
Rechercherichtung
Beginne in src/mcp/client/stdio.py und überprüfe die Windows-Liste DEFAULT_INHERITED_ENV_VARS. Führe die stdio-Client-Tests aus und verifiziere, dass der gestartete Prozess PROGRAMDATA erbt; der Abschluss ist durch die gemeldeten 25 bestandenen und 8 übersprungenen Tests sowie ein sauberes git diff --check gekennzeichnet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Description
On Windows, an MCP server launched through the stdio client can terminate shortly after the initialize message when the spawned process is given the SDK's restricted inherited environment.
During investigation of Windows MCP + SSH behavior, I found that PROGRAMDATA is missing from DEFAULT_INHERITED_ENV_VARS in src/mcp/client/stdio.py.
Environment
- Windows 11
- MCP Python SDK
- MCP server launched through stdio
- SSH-based MCP server
Observed behavior
The MCP SSH subprocess can close shortly after the initialize message with a transport-closed error.
The same SSH setup works when launched manually and behaves differently when the expected Windows environment is available.
Investigation
The stdio client constructs a restricted environment for spawned processes.
PROGRAMDATA was not included in the Windows inherited environment list:
DEFAULT_INHERITED_ENV_VARS = (
[
"APPDATA",
"HOMEDRIVE",
"HOMEPATH",
"LOCALAPPDATA",
"PATH",
"PATHEXT",
"PROCESSOR_ARCHITECTURE",
"SYSTEMDRIVE",
"SYSTEMROOT",
"TEMP",
"USERNAME",
"USERPROFILE",
]
if sys.platform == "win32"
else ...
)
Adding PROGRAMDATA allows the spawned Windows process to receive this standard environment variable.
Proposed fix
Add:
"PROGRAMDATA",
to the Windows DEFAULT_INHERITED_ENV_VARS list in:
src/mcp/client/stdio.py
Testing
I reproduced the Windows MCP + SSH behavior and investigated the restricted subprocess environment.
After adding PROGRAMDATA:
- Verified that
PROGRAMDATAis inherited by the spawned process. - Tested the restricted environment with
Popen. - Ran the stdio client tests successfully: 25 passed, 8 skipped.
git diff --checkpasses.
I have prepared PR #3334 with this change.
Related issue
This investigation was motivated by MCP SSH transport closing immediately after initialize on Windows.
I would appreciate maintainer confirmation that this is the appropriate fix and whether this issue can be assigned to me so PR #3334 can be reopened.
- Vorherrschende Sprache
- Python
- Sterne
- 24.3k
- Forks
- 4k
- Ø Merge
- 1 T. 19 Min.
- Gemergte PRs (30 T.)
- 29
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus modelcontextprotocol/python-sdk
-
v1 v2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
modelcontextprotocol/python-sdk#3546 · 5 Kommentare ·
-
v1 v2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
modelcontextprotocol/python-sdk#3545 · 1 Kommentar ·
-
v1 v2
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 91/100
modelcontextprotocol/python-sdk#3508 · 2 Kommentare ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
modelcontextprotocol/python-sdk#3504 ·
-
v1 v2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
modelcontextprotocol/python-sdk#3492 · 1 Kommentar ·
Alle Issues in modelcontextprotocol/python-sdk
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
syfoud/Simulated_Scepter#172 ·
-
A cancelled tests run makes the coverage comment workflow fail and reports it as a red check on main Offenarea: ci bug perceived difficulty: 3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Nitjsefnie-Harness-Commons/daedalus#921 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
EleutherAI/lm-evaluation-harness#4207 ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 92/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
ClickHouse/clickhouse-connect#1057 ·