Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
8 changes: 7 additions & 1 deletion src/fastmcp/client/transports.py
Original file line number Diff line number Diff line change
Expand Up @@ -287,12 +287,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
8 changes: 8 additions & 0 deletions tests/client/test_streamable_http.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,14 @@ 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)
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