fix: client initial GET sse include requestInit (modelcontextprotocol#895) #896
+28
−3
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.
Updated the
_startOrAuthSse
method ofStreamableHTTPClientTransport
to include therequestInit
parameters that were provided in the constructor.Motivation and Context
To include credentials in HTTP calls you need to configure options like
credentials
andmode
in therequestInit
options. Currently therequestInit
options are included in all the requests except the initial GET request when setting up SSE. Since this request usesAccept: text/eventsource
it will not include the credentials without settingscredentials: "include"
.How Has This Been Tested?
Added unit tests and updated this in our application that uses the client to connect to an MCP server that is where we noticed it was not including the headers. Since I could not include the change without an official release in our system I had to test is by implementing a workaround that overrides fetch:
Breaking Changes
No, it is possible that users may have implemented a similar workaround but their workaround will still override the default init options in that case.
Types of changes
Checklist
Additional context
None