Skip to content

Commit ce96da0

Browse files
suluyanasuluyan
andauthored
fix mcp type matching (#727)
Co-authored-by: suluyan <[email protected]>
1 parent 4e580c6 commit ce96da0

File tree

1 file changed

+32
-23
lines changed

1 file changed

+32
-23
lines changed

ms_agent/tools/mcp_client.py

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,38 @@ async def connect_to_server(self, server_name: str, timeout: int,
123123
url = kwargs.get('url')
124124
session_kwargs = kwargs.get('session_kwargs')
125125
if url:
126-
if transport == 'streamable_http':
126+
if transport and transport.lower() == 'sse':
127+
logger.info(
128+
'`transport` or `type` is configured as "sse", using sse transport.'
129+
)
130+
sse_transport = await self.exit_stack.enter_async_context(
131+
sse_client(
132+
url, kwargs.get('headers'),
133+
kwargs.get('timeout', DEFAULT_HTTP_TIMEOUT),
134+
kwargs.get('sse_read_timeout',
135+
DEFAULT_SSE_READ_TIMEOUT)))
136+
read, write = sse_transport
137+
138+
elif transport and transport.lower() == 'websocket':
139+
logger.info(
140+
'`transport` or `type` is configured as "websocket", using websocket transport.'
141+
)
142+
try:
143+
from mcp.client.websocket import websocket_client
144+
except ImportError:
145+
raise ImportError(
146+
'Could not import websocket_client. '
147+
'To use Websocket connections, please install the required dependency with: '
148+
"'pip install mcp[ws]' or 'pip install websockets'"
149+
) from None
150+
websocket_transport = await self.exit_stack.enter_async_context(
151+
websocket_client(url))
152+
read, write = websocket_transport
153+
154+
else:
155+
logger.info(
156+
'Using streamable_http transport. To configure a different transport such as sse, please'
157+
'set the `type` or `transport` variable to "sse".')
127158
try:
128159
from mcp.client.streamable_http import streamablehttp_client
129160
except ImportError:
@@ -147,28 +178,6 @@ async def connect_to_server(self, server_name: str, timeout: int,
147178
**other_kwargs))
148179
read, write, _ = streamable_transport
149180

150-
elif transport == 'websocket':
151-
try:
152-
from mcp.client.websocket import websocket_client
153-
except ImportError:
154-
raise ImportError(
155-
'Could not import websocket_client. '
156-
'To use Websocket connections, please install the required dependency with: '
157-
"'pip install mcp[ws]' or 'pip install websockets'"
158-
) from None
159-
websocket_transport = await self.exit_stack.enter_async_context(
160-
websocket_client(url))
161-
read, write = websocket_transport
162-
163-
else:
164-
sse_transport = await self.exit_stack.enter_async_context(
165-
sse_client(
166-
url, kwargs.get('headers'),
167-
kwargs.get('timeout', DEFAULT_HTTP_TIMEOUT),
168-
kwargs.get('sse_read_timeout',
169-
DEFAULT_SSE_READ_TIMEOUT)))
170-
read, write = sse_transport
171-
172181
session_kwargs = session_kwargs or {}
173182
timeout = max(
174183
session_kwargs.pop('read_timeout_seconds', timeout), 1)

0 commit comments

Comments
 (0)