feat: expose resumableStreams and openConnectionOnStartup on McpClientBuilder#2004
Closed
wkflash wants to merge 2 commits into
Closed
feat: expose resumableStreams and openConnectionOnStartup on McpClientBuilder#2004wkflash wants to merge 2 commits into
wkflash wants to merge 2 commits into
Conversation
…tBuilder Adds two new methods to McpClientBuilder for StreamableHTTP transport: - resumableStreams(boolean) — disable SSE streams for POST-only servers - openConnectionOnStartup(boolean) — skip persistent connection probe Both default to null (SDK built-in default), fully backward compatible. Fixes: tool calls hanging on Streamable HTTP MCP servers that disable SSE.
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
jujn
suggested changes
Jul 4, 2026
Comment on lines
193
to
+201
| public McpClientBuilder streamableHttpTransport(String url) { | ||
| this.transportConfig = new StreamableHttpTransportConfig(url); | ||
| StreamableHttpTransportConfig config = new StreamableHttpTransportConfig(url); | ||
| if (resumableStreams != null) { | ||
| config.resumableStreams = resumableStreams; | ||
| } | ||
| if (openConnectionOnStartup != null) { | ||
| config.openConnectionOnStartup = openConnectionOnStartup; | ||
| } | ||
| this.transportConfig = config; |
Contributor
There was a problem hiding this comment.
McpClientBuilder.create("mcp")
.streamableHttpTransport(url)
.resumableStreams(false)
.openConnectionOnStartup(false)
In this order, resumableStreams(false) and openConnectionOnStartup(false) are ignored because they update only the builder-level fields, not the already-created StreamableHttpTransportConfig, leaving the config fields null and thus falling back to SDK defaults.
Recommend the following:
public McpClientBuilder resumableStreams(boolean value) {
this.resumableStreams = value;
if (transportConfig instanceof StreamableHttpTransportConfig config) {
config.resumableStreams = value;
}
return this;
}
public McpClientBuilder openConnectionOnStartup(boolean value) {
this.openConnectionOnStartup = value;
if (transportConfig instanceof StreamableHttpTransportConfig config) {
config.openConnectionOnStartup = value;
}
return this;
}
Contributor
|
Additionally, it is recommended to supplement corresponding tests |
…eamable HTTP transport - Add resumableStreams(boolean) and openConnectionOnStartup(boolean) to McpClientBuilder with bidirectional safety: builder field + instanceof check covers both call orders - Wire options through to HttpClientStreamableHttpTransport.Builder - Add resumableStreams and openConnectionOnStartup to tools.json McpServerConfig - Wire JSON config through McpServerRegistrar - Add tests covering both call orders, SSE ignore, no-transport safety, and JSON parsing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Expose
resumableStreamsandopenConnectionOnStartuponMcpClientBuilderfor Streamable HTTP transport, withbidirectional call-order safety.
Closes #2003.
Problem
When connecting to a Streamable HTTP MCP server that disables SSE and only accepts POST, tool calls hang indefinitely. The
underlying MCP Java SDK (
HttpClientStreamableHttpTransport.Builder) already supports these options, but AgentScope'sbuilder did not expose them.
Solution
Two new fluent methods +
tools.jsonconfig support:Java API