@@ -89,7 +89,7 @@ class SSEConnection(TypedDict):
89
89
sse_read_timeout : NotRequired [float ]
90
90
"""SSE read timeout.
91
91
92
- Default is 300 seconds (5 minutes). This is how long the client will
92
+ Default is 300 seconds (5 minutes). This is how long the client will
93
93
wait for a new event before disconnecting.
94
94
"""
95
95
@@ -281,11 +281,12 @@ async def _create_websocket_session(
281
281
try :
282
282
from mcp .client .websocket import websocket_client
283
283
except ImportError :
284
- raise ImportError (
285
- "Could not import websocket_client. " ,
286
- "To use Websocket connections, please install the required dependency with: " ,
287
- "'pip install mcp[ws]' or 'pip install websockets'" ,
288
- ) from None
284
+ msg = (
285
+ "Could not import websocket_client. "
286
+ "To use Websocket connections, please install the required dependency with: "
287
+ "'pip install mcp[ws]' or 'pip install websockets'"
288
+ )
289
+ raise ImportError (msg ) from None
289
290
290
291
async with websocket_client (url ) as (read , write ):
291
292
async with ClientSession (read , write , ** (session_kwargs or {})) as session :
@@ -307,40 +308,47 @@ async def create_session(connection: Connection) -> AsyncIterator[ClientSession]
307
308
A ClientSession
308
309
"""
309
310
if "transport" not in connection :
310
- raise ValueError (
311
+ msg = (
311
312
"Configuration error: Missing 'transport' key in server configuration. "
312
313
"Each server must include 'transport' with one of: "
313
314
"'stdio', 'sse', 'websocket', 'streamable_http'. "
314
315
"Please refer to the langchain-mcp-adapters documentation for more details."
315
316
)
317
+ raise ValueError (msg )
316
318
317
319
transport = connection ["transport" ]
318
320
params = {k : v for k , v in connection .items () if k != "transport" }
319
321
320
322
if transport == "sse" :
321
323
if "url" not in params :
322
- raise ValueError ("'url' parameter is required for SSE connection" )
324
+ msg = "'url' parameter is required for SSE connection"
325
+ raise ValueError (msg )
323
326
async with _create_sse_session (** params ) as session :
324
327
yield session
325
328
elif transport == "streamable_http" :
326
329
if "url" not in params :
327
- raise ValueError ("'url' parameter is required for Streamable HTTP connection" )
330
+ msg = "'url' parameter is required for Streamable HTTP connection"
331
+ raise ValueError (msg )
328
332
async with _create_streamable_http_session (** params ) as session :
329
333
yield session
330
334
elif transport == "stdio" :
331
335
if "command" not in params :
332
- raise ValueError ("'command' parameter is required for stdio connection" )
336
+ msg = "'command' parameter is required for stdio connection"
337
+ raise ValueError (msg )
333
338
if "args" not in params :
334
- raise ValueError ("'args' parameter is required for stdio connection" )
339
+ msg = "'args' parameter is required for stdio connection"
340
+ raise ValueError (msg )
335
341
async with _create_stdio_session (** params ) as session :
336
342
yield session
337
343
elif transport == "websocket" :
338
344
if "url" not in params :
339
- raise ValueError ("'url' parameter is required for Websocket connection" )
345
+ msg = "'url' parameter is required for Websocket connection"
346
+ raise ValueError (msg )
340
347
async with _create_websocket_session (** params ) as session :
341
348
yield session
342
349
else :
343
- raise ValueError (
350
+ msg = (
344
351
f"Unsupported transport: { transport } . "
345
352
f"Must be one of: 'stdio', 'sse', 'websocket', 'streamable_http'"
346
353
)
354
+ raise ValueError (msg )
0 commit comments