Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion src/fastmcp/client/transports.py
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,7 @@ def __init__(
if isinstance(sse_read_timeout, int | float):
sse_read_timeout = datetime.timedelta(seconds=float(sse_read_timeout))
self.sse_read_timeout = sse_read_timeout
self.get_session_id_cb = None

def _set_auth(self, auth: httpx.Auth | Literal["oauth"] | str | None):
if auth == "oauth":
Expand Down Expand Up @@ -287,12 +288,18 @@ async def connect_session(
auth=self.auth,
**client_kwargs,
) as transport:
read_stream, write_stream, _ = transport
read_stream, write_stream, get_session_id = transport
self.get_session_id_cb = get_session_id
async with ClientSession(
read_stream, write_stream, **session_kwargs
) as session:
yield session

def get_session_id(self) -> str | None:
if self.get_session_id_cb:
return self.get_session_id_cb()
return None

def __repr__(self) -> str:
return f"<StreamableHttpTransport(url='{self.url}')>"

Expand Down
9 changes: 9 additions & 0 deletions tests/client/test_streamable_http.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,15 @@ async def test_http_headers(streamable_http_server: str):
assert json_result["x-demo-header"] == "ABC"


async def test_session_id_callback(streamable_http_server: str):
"""Test getting mcp-session-id from the transport."""
transport = StreamableHttpTransport(streamable_http_server)
assert transport.get_session_id() is None
async with Client(transport=transport):
session_id = transport.get_session_id()
assert session_id is not None


@pytest.mark.parametrize("streamable_http_server", [True, False], indirect=True)
async def test_greet_with_progress_tool(streamable_http_server: str):
"""Test calling the greet tool."""
Expand Down
Loading