feat: implement Streamable HTTP HttpClient transport and improve error handling (#337)

- Add HttpClientStreamableHttpTransport implementing the 2025-03-26 MCP specification
- Add ResponseSubscribers utility for handling different HTTP response body types
- Refactor HttpClientSseClientTransport to use reactive streams instead of FlowSseClient
  - Remove FlowSseClient in favor of reactive stream patterns
  - Use Disposable-based connection management instead of CountDownLatch
  - Replace message endpoint discovery with Sinks.One approach
- Improve error handling by replacing doOnError/onErrorResume with onErrorComplete
- Add test coverage for new Streamable HTTP transport
- Add resiliency tests for connection handling and session invalidation

BREAKING CHANGE: FlowSseClient has been removed in favor of reactive streams

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>

Co-authored-by: Dariusz Jędrzejczyk <dariusz.jedrzejczyk@broadcom.com>
This commit is contained in:
Christian Tzolov 2025-06-13 07:05:47 +02:00
commit c711f8315a

View file

@ -9,16 +9,16 @@
</appender>
<!-- Main MCP package -->
<logger name="io.modelcontextprotocol" level="DEBUG"/>
<logger name="io.modelcontextprotocol" level="INFO"/>
<!-- Client packages -->
<logger name="io.modelcontextprotocol.client" level="DEBUG"/>
<logger name="io.modelcontextprotocol.client" level="INFO"/>
<!-- Server transport package -->
<logger name="io.modelcontextprotocol.server.transport" level="DEBUG"/>
<logger name="io.modelcontextprotocol.server.transport" level="INFO"/>
<!-- Spec package -->
<logger name="io.modelcontextprotocol.spec" level="DEBUG"/>
<logger name="io.modelcontextprotocol.spec" level="INFO"/>
<!-- Root logger -->
<root level="INFO">