fix(sse): preserve base path when resolving message endpoint from SSE #422
+3
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
When using the
sse_client()
transport, the server sends theendpoint
as/messages
. This is resolved usingurljoin(url, sse.data)
, but this strips the full base path (e.g.,/mcp/weather-alerts
) and results in incorrect POSTs to the root/messages
.Solution
This patch updates the
endpoint
resolution to correctly deriveuri_base
from the provided SSE URL by removing/sse
, and then joining the relative path properly:This ensures that if the client connects to:
https://example-mcp-server.com/mcp/weather-alerts/sse
The messages are correctly posted to:
https://example-mcp-server..com/mcp/weather-alerts/messages
instead of:
https://example-mcp-server..com/messages
Notes
This is backward-compatible and only affects the computed POST endpoint.
Patch tested successfully against MCP servers behind API gateways.