Commit graph java-sdk/mcp
Author SHA1 Message Date
Christian Tzolov
86659344fc feat: add structured logging support with severity levels
- Add client and server-side logging capabilities with configurable severity levels
- Implement logging message notifications with DEBUG to EMERGENCY levels
- Add logging consumers for client-side log handling
- Update documentation with logging examples and configuration
- Add comprehensive tests for logging functionality
- Fix typo in README.md (notificaiotn -> notification)

- Centralize MCP method names as constants
  - Move all JSON-RPC method names to McpSchema class as static constants
  - Replace hardcoded method strings with constant references in McpAsyncClient
    and McpAsyncServer
  - Update test cases to use new method name constants

Resolves #35
2024-12-31 14:46:32 +01:00
Christian Tzolov
a5394fffd2 efactor(mcp): reorganize McpAsyncServer and enhance error handling
- Reorganize McpAsyncServer code into logical sections (Lifecycle, Tool, Resource, Prompt Management)
- (bug) Fix resource registration to use URI instead of name as map key
- Improve error logging in StdioServerTransport with helper methods
- Clean up documentation and add transport mode descriptions
- Update sample server configuration with clearer method names and organization
2024-12-30 17:22:26 +01:00
Christian Tzolov
d96222dcaf Next development version 2024-12-30 13:25:53 +01:00
Christian Tzolov
8dc9b979a8 Release version 0.3.1 2024-12-30 13:25:35 +01:00
Christian Tzolov
b6c9973cbf Fix code formatting 2024-12-30 13:16:08 +01:00
Christian Tzolov
c36d4677c1 docs(mcp) Improve McpServer and McpClient javadoc 2024-12-30 13:13:32 +01:00
Christian Tzolov
ad3cdd20a9 fix: Improve MCP server stability and test reliability
- Replace bounded elastic schedulers with single thread executors
- Add timeouts to MCP server tests
- Enhance error handling in StdioServerTransport
- Comment out unused PaginatedRequest unmarshalling
- Simplify shutdown logic in StdioServerTransport
2024-12-30 12:57:36 +01:00
Christian Tzolov
fcf0ff0ae2 refactor: simplify StdioServerTransport to only use System streams
Removes custom stream injection capability from StdioServerTransport and
simplifies it to only use System.in/out.
Updates related tests to use System streams instead of piped streams.
2024-12-30 11:52:48 +01:00
Christian Tzolov
dfa7435ad8 refactor(mcp) Disable stdio server sink draining on close 2024-12-30 09:23:42 +01:00
Christian Tzolov
47b09165c5 refactor(mcp) Increase the server stdio shutdown timeout 2024-12-30 09:08:56 +01:00
Christian Tzolov
9b6a0b537b refactor(mcp): improve StdioServerTransport shutdown and error handling
- Add specific error categorization for pipe closed errors
- Enhance shutdown sequence with proper stream and scheduler cleanup
- Add debug logging for shutdown-related stream errors
- Improve isClosing state management
2024-12-29 21:40:53 +01:00
Christian Tzolov
2de1d637c0 Fix javadoc issues 2024-12-29 21:05:57 +01:00
Christian Tzolov
f7551839c5 docs Update pom version in docs 2024-12-29 18:56:38 +01:00
Christian Tzolov
e6cb56c4b1 Next development version 2024-12-29 18:17:34 +01:00
Christian Tzolov
f5e121f3c0 Release version 0.3.0 2024-12-29 18:16:15 +01:00
Christian Tzolov
36b951558d refactor: improve MCP client code organization and robustness
- Add null parameter validation in client builders
- Enhance JavaDoc documentation for tools and resources
- Reorganize McpAsyncClient methods by functionality
- Fix sampling handler test setup
2024-12-29 17:53:43 +01:00
Christian Tzolov
9130e742fd fix(mcp): Improve transport shutdown and error handling
- Add isClosing flag to coordinate graceful shutdown
- Synchronize output stream writes to prevent race conditions
- Enhance error handling in stream processing
- Add delay for pending message processing during shutdown
- Improve connection state tracking in tests
2024-12-29 10:53:16 +01:00
Christian Tzolov
759fbf13d1 adjust diagram size 2024-12-29 00:25:49 +01:00
Christian Tzolov
bc75b27e53 docs(mcp) add class diagram 2024-12-29 00:25:24 +01:00
Christian Tzolov
347f86ff19 docs Improve MCP readme 2024-12-28 23:56:16 +01:00
Christian Tzolov
abd0facf4e feat: Add MCP server with Server stdio/sse transport improve MCP client
- Implement MCP server with async/sync support and builder pattern configuration
 - Add Server stdio/SSE transport layers with robust error handling
 - Convert McpClient and McpServer to interfaces for better extensibility
 - Add sampling capabilities for LLM interactions (text/image)
 - Implement dynamic root management and runtime tool management
 - Add comprehensive prompt and resource capabilities
 - Add support for dynamic root management (add/remove roots at runtime)

 Architecture Changes

 - Introduce registration records for tools, resources, and prompts
 - Improve thread safety with concurrent collections
 - Enhance resource template handling
 - Implement builder patterns for Server/Client capabilities
 - Add support for server capabilities and implementation info

Transport Layer:
 - Implement SseServerTransport with SSE endpoints
 - Add StdioServerTransport for process-based communication
 - Reorganize transport packages for better organization
 - Improve transport error handling and shutdown processes

Documentation:

 - Add detailed MCP reference documentation
 - Include architecture diagrams and API documentation
 - Add comprehensive test coverage for all components
 - Include sample projects demonstrating stdio/SSE transports

BREAKING CHANGES:

 Transport Package Reorganization

 - Move StdioClientTransport to o.s.ai.mcp.client.transport
 - Move SseClientTransport to o.s.ai.mcp.client.transport
 - Move ServerParameters to o.s.ai.mcp.client.transport
 - StdioClientTransport.errorHandler changed to private with
   setter method Migration: Use setErrorHandler() method
   instead of direct field access

 API Changes

 - Replace static factory methods with builder pattern
 - Update ServerCapabilities to use builder pattern
 - Make StdioClientTransport.errorHandler private with setter
 - Replace rootsListProvider with direct root management
 - Remove deprecated static factory methods

Resolves #27,#25,#24,#11
Related to #12
2024-12-28 21:03:29 +01:00
Christian Tzolov
c83a45f880 Next development version 2024-12-21 18:19:21 +01:00
Christian Tzolov
9d20ca8dc4 Release version 0.2.0 2024-12-21 18:19:01 +01:00
Christian Tzolov
890350c634 minor javadoc 2024-12-21 16:35:22 +01:00
Christian Tzolov
12fd8e51f3 refactor: rename artifacts and restructure modules
- Rename spring-ai-mcp-core to mcp for simpler artifact naming
- Rename spring-ai-mcp-spring to spring-ai-mcp for clarity
- Rename parent artifact from spring-ai-mcp to mcp-parent
- Update artifact references in pom files and documentation
- Update directory structure and paths in GitHub workflow

Resolves #31

chore: improve module descriptions and update dependencies

- Update parent pom description to better reflect overall project scope
- Update mcp module description to detail core Java SDK capabilities
- Update spring-ai-mcp module description to emphasize Spring integration features
- Update dependency versions to stable releases:
  * JUnit: 5.11.3 -> 5.10.2
  * Jackson: 2.18.2 -> 2.17.0
2024-12-21 16:30:19 +01:00
Christian Tzolov
1d7ab91314 rename mcp to mcp-core and spring into mcp-spring 2024-12-10 18:56:38 +01:00
Christian Tzolov
0dec9420c6 Add simple StdioServerTransportTest 2024-12-10 14:20:52 +01:00
Christian Tzolov
7c9cf46e8a Factor out the McpSession into an inteface with DefaultMcpSession impl. 2024-12-10 14:03:11 +01:00
Christian Tzolov
7abf118412 refactor(transport): improve MCP transport layer design
- Rename DefaultMcpTransport to AbstractMcpTransport and make it abstract
- Add graceful shutdown support via closeGracefully() method
- Enhance McpTransport interface with default close() implementation
- Improve documentation across transport layer classes
2024-12-10 13:27:09 +01:00
Christian Tzolov
1b6d661470 code cleaning 2024-12-10 11:46:58 +01:00
Christian Tzolov
b378ab73dd generate some README 2024-12-09 23:40:25 +01:00
Christian Tzolov
c248642d52 another restructuring 2024-12-09 23:31:23 +01:00
Christian Tzolov
68c21d2264 Clean the code and add more tests 2024-12-09 23:05:23 +01:00
Christian Tzolov
1982c39bbc break into multiple modules. The mcp module is the MCP implementation with minimal dependecies 2024-12-09 18:48:51 +01:00
Christian Tzolov
376dd213de WIP 2024-12-09 16:05:21 +01:00