From 887678717f97bf6167871649faf1d8bfad8fb795 Mon Sep 17 00:00:00 2001 From: sterankin Date: Thu, 3 Apr 2025 22:00:38 +0100 Subject: [PATCH 1/2] Update sse.py to preserve url base fix: preserve base path when joining /messages from SSE endpoint Previous behavour, a MCP server at: https://my-mcp-server.com/mcp/weather-alerts/sse would fail to connect to messages as the endpoint would be called as: https://my-mcp-server.com/messages It should be: https://my-mcp-server.com/mcp/weather-alerts/messages --- src/mcp/client/sse.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mcp/client/sse.py b/src/mcp/client/sse.py index 4f6241a72..b5be98451 100644 --- a/src/mcp/client/sse.py +++ b/src/mcp/client/sse.py @@ -61,7 +61,8 @@ async def sse_reader( logger.debug(f"Received SSE event: {sse.event}") match sse.event: case "endpoint": - endpoint_url = urljoin(url, sse.data) + uri_base = url.rsplit("/sse", 1)[0] + endpoint_url = urljoin(uri_base + "/", sse.data.lstrip("/")) logger.info( f"Received endpoint URL: {endpoint_url}" ) From f2adf13769d9da87d0c52535fe78531c3c386495 Mon Sep 17 00:00:00 2001 From: sterankin Date: Fri, 4 Apr 2025 16:16:45 +0100 Subject: [PATCH 2/2] Update sse.py line length fix --- src/mcp/client/sse.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mcp/client/sse.py b/src/mcp/client/sse.py index b5be98451..b2fbc33df 100644 --- a/src/mcp/client/sse.py +++ b/src/mcp/client/sse.py @@ -62,7 +62,8 @@ async def sse_reader( match sse.event: case "endpoint": uri_base = url.rsplit("/sse", 1)[0] - endpoint_url = urljoin(uri_base + "/", sse.data.lstrip("/")) + endpoint_url = urljoin(uri_base + "/", + sse.data.lstrip("/")) logger.info( f"Received endpoint URL: {endpoint_url}" )