@@ -108,20 +108,28 @@ async def stdio_client(server: StdioServerParameters, errlog: TextIO = sys.stder
108108 read_stream_writer , read_stream = anyio .create_memory_object_stream (0 )
109109 write_stream , write_stream_reader = anyio .create_memory_object_stream (0 )
110110
111- command = _get_executable_command (server .command )
112-
113- # Open process with stderr piped for capture
114- process = await _create_platform_compatible_process (
115- command = command ,
116- args = server .args ,
117- env = (
118- {** get_default_environment (), ** server .env }
119- if server .env is not None
120- else get_default_environment ()
121- ),
122- errlog = errlog ,
123- cwd = server .cwd ,
124- )
111+ try :
112+ command = _get_executable_command (server .command )
113+
114+ # Open process with stderr piped for capture
115+ process = await _create_platform_compatible_process (
116+ command = command ,
117+ args = server .args ,
118+ env = (
119+ {** get_default_environment (), ** server .env }
120+ if server .env is not None
121+ else get_default_environment ()
122+ ),
123+ errlog = errlog ,
124+ cwd = server .cwd ,
125+ )
126+ except OSError :
127+ # Clean up streams if process creation fails
128+ await read_stream .aclose ()
129+ await write_stream .aclose ()
130+ await read_stream_writer .aclose ()
131+ await write_stream_reader .aclose ()
132+ raise
125133
126134 async def stdout_reader ():
127135 assert process .stdout , "Opened process is missing stdout"
0 commit comments