Commit graph java-sdk/mcp-transport
Author SHA1 Message Date
Christian Tzolov
e7505ba247 Release version 0.6.0
Some checks failed
Deploy Docs / build (push) Has been cancelled
2025-01-24 18:39:38 +01:00
Dariusz Jędrzejczyk
a83f41381a
Align abstract tests in mcp-test with mcp-core (#70)
Signed-off-by: Dariusz Jędrzejczyk <dariusz.jedrzejczyk@broadcom.com>
2025-01-23 14:57:25 +01:00
Dariusz Jędrzejczyk
6839d3b740 Refactor McpClient for async and sync interactions
Introduce new builder patterns and enhance type safety

- Add new builder patterns for McpClient and McpServer with sync/async variants
- Introduce dedicated McpClientFeatures and McpServerFeatures classes
- Enhance type safety and reactive support with proper Mono integration
- Add migration guide for 0.6.0 release
- Mark old builder methods as deprecated
- Update documentation to reflect new APIs

BREAKING CHANGE: The old builder patterns using McpClient.using() and McpServer.using()
are now deprecated in favor of new sync() and async() builders that provide
better type safety and clearer sync/async separation. Follow the migration guide.

Resolves #48

Signed-off-by: Dariusz Jędrzejczyk <dariusz.jedrzejczyk@broadcom.com>
Co-authored-by: Christian Tzolov <ctzolov@vmware.com>
2025-01-23 12:27:06 +01:00
Alexandros Pappas
c2ece20cc2 feat: Make SSE endpoint configurable in server transports
This commit updates the WebFluxSseServerTransport, WebMvcSseServerTransport, and HttpServletSseServerTransport classes to accept the SSE endpoint path as a constructor argument.

This change provides more flexibility in configuring the SSE endpoint, allowing it to be customized instead of being hardcoded to "/sse".
It also aligns the Java SDK's behavior with the Python SDK's SseServerTransport, which already supports this customization.

A default SSE endpoint of "/sse" is maintained for backward compatibility.

Also, addressed minor code quality issues identified by SonarLint and reordered modifiers for static final fields to conform with the Java Language Specification.

Signed-off-by: Alexandros Pappas <alexandros.pappas@yiluhub.com>
2025-01-16 19:05:57 +01:00
Christian Tzolov
9d90e4875f Next development version 2025-01-13 12:27:18 +01:00
Christian Tzolov
c4e2c79845 Release version 0.5.0
Some checks failed
Deploy Docs / build (push) Has been cancelled
2025-01-13 12:27:03 +01:00
Christian Tzolov
ea49afccf5 docs: Minor documentation improvements 2025-01-13 11:34:16 +01:00
Christian Tzolov
0c8968044c refactor: Add HttpServletSseServerTransport for generic Servlet integration
Introduces a new Server-Sent Events (SSE) Server transport implementation
based on the Servlet API that enables MCP integration with any Java HTTP
server application supporting Servlets.

This implementation complements the existing WebFlux and WebMvc transports
by providing a generic Servlet-based option that works with any Java web
server, not just Spring applications.

Key changes:

- Add HttpServletSseServerTransport with async Servlet 6.0 support
- Add integration tests with embedded Tomcat
- Add servlet dependencies with externalized versions:
  - jakarta.servlet-api 6.1.0 (provided)
  - tomcat-embed-core 11.0.2 (test)
  - tomcat-embed-websocket 11.0.2 (test)

Resolves #61
2025-01-12 19:33:46 +01:00
Christian Tzolov
fbcd51b332 docs: improve documentation clarity and add WebFlux SSE transport example
- Streamline overview documentation structure and content
- Consolidate installation instructions
- Simplify examples section descriptions
- Add WebFlux SSE transport dependency and configuration example
2025-01-12 09:34:12 +01:00
Christian Tzolov
299eee944a docs: improve transport layer documentation and code cleanup
- Add comprehensive Javadoc for SSE transport implementations
- Document key features and implementation details for WebFlux/WebMVC transports
- Refactor FlowSseClient to use records for better immutability
- Fix typo in prompt property name
- Remove unused code and improve readability
2025-01-12 08:46:43 +01:00
Christian Tzolov
bfd07b4cda refactor(transport): Simplify WebMvc SSE transport with native Spring SseBuilder
Replaces custom BlockingQueue-based SSE implementation with Spring's native
SseBuilder for simpler and more reliable event handling.

This change:
- Removes custom SSEEvent and queue implementation
- Uses Spring's SseBuilder directly for SSE event management
- Improves error handling with direct error reporting
- Reduces complexity in session management
2025-01-11 18:25:19 +01:00
Christian Tzolov
edbd78465c refactor(transport): Replace SseEmitter with queue-based SSE implementation in WebMvc transport
Replaces Spring's SseEmitter with a custom BlockingQueue-based SSE implementation in
WebMvcSseServerTransport for improved event delivery control and connection management.

The new implementation:
- Uses BlockingQueue for reliable event queuing and delivery
- Adds proper session management with dedicated SSEEvent record
- Improves error handling and timeout management
- Adds comprehensive integration tests

Resolves #57
2025-01-11 15:12:14 +01:00
Christian Tzolov
05b572b855 Update tomcat test version 2025-01-09 19:32:28 +01:00
Christian Tzolov
37029523cb imporve test logging configuraitons 2025-01-09 18:30:34 +01:00
Christian Tzolov
611f3258d6 refactor: Split transport implementations into modules
Split the  transport implementations into dedicated modules to improve modularity
and reduce core dependencies.

Added shared test module for common test utilities.

Key changes:

- Create mcp-transport/mcp-webflux-sse-transport module
 - Move SseClientTransport → WebFluxSseClientTransport
 - Move SseServerTransport → WebFluxSseServerTransport
 - Move related tests and utilities

- Create mcp-transport/mcp-webmvc-sse-transport module
 - Add new WebMvcSseServerTransport implementation
 - Add corresponding tests and integration tests

- Add framework-independent SSE client implementations to core module
 - Add FlowSseClient using java.net.http
 - Add HttpClientSseClientTransport using java.net.http

- Keep StdioClientTransport/StdioServerTransport in core (no external deps)

- Create mcp-test module for shared test infrastructure
 - Move abstract test base classes
 - Move shared test utilities and mocks
 - Update test dependencies

The modular approach allows users to choose between:

- Framework-specific implementations (WebFlux/WebMVC)
- Pure Java implementations (java.net.http)
- Basic implementations (STDIO)

Add breaking changes readme: 0.5.0-BREAKING-CHANGES.md

Resolves #54
2025-01-09 15:38:34 +01:00