java-sdk/spring-ai-mcp-core/docs/class-diagrams.puml
Christian Tzolov bc281dee54 feat: add SSE transport and improve documentation
- Add Server-Sent Events (SSE) transport implementation with test coverage
- Add detailed documentation for both SSE and STDIO transports
- Extract common test logic into abstract base classes
- Add testcontainers support for SSE integration tests
- Replace System.out with SLF4J logging
- Externalize dependency versions to properties
- Implement endpoint event handling per MCP spec
- Add message endpoint sink for reliable message routing
- Improve error handling and graceful shutdown
- Update core module README with expanded features and examples
- Add dependency version properties and logging configuration
- Update architecture and class diagrams

Resolves #4
2024-12-15 22:54:48 +01:00

140 lines
2.8 KiB
Text

@startuml Core Components
interface McpTransport {
+void start()
+void close()
+Mono<Void> closeGracefully()
+void setInboudMessageHandler()
+void setInboundErrorHandler()
+Mono<Void> sendMessage()
}
abstract class AbstractMcpTransport {
#ObjectMapper objectMapper
#getInboundSink()
#getOutboundSink()
#getErrorSink()
}
interface McpSession {
+<T> Mono<T> sendRequest()
+Mono<Void> sendNotification()
+Mono<Void> closeGracefully()
}
class DefaultMcpSession {
-McpTransport transport
-ObjectMapper objectMapper
}
class McpClient {
+{static} async()
+{static} sync()
}
class McpAsyncClient {
+Mono<InitializeResult> initialize()
+Mono<CallToolResult> callTool()
+Mono<ListToolsResult> listTools()
+Mono<ListResourcesResult> listResources()
+Mono<ReadResourceResult> readResource()
+Mono<ListPromptsResult> listPrompts()
+Mono<GetPromptResult> getPrompt()
}
class McpSyncClient {
+InitializeResult initialize()
+CallToolResult callTool()
+ListToolsResult listTools()
+ListResourcesResult listResources()
+ReadResourceResult readResource()
+ListPromptsResult listPrompts()
+GetPromptResult getPrompt()
}
class StdioServerTransport {
-Process serverProcess
-ServerParameters parameters
}
class SseServerTransport {
-WebClient webClient
}
class McpSchema {
+class ErrorCodes
+interface Request
+interface JSONRPCMessage
+interface ResourceContents
+interface Content
}
class McpError {
-int code
-String message
}
McpTransport <|.. AbstractMcpTransport
AbstractMcpTransport <|-- StdioServerTransport
AbstractMcpTransport <|-- SseServerTransport
McpSession <|-- DefaultMcpSession
DefaultMcpSession <|-- McpAsyncClient
McpClient ..> McpAsyncClient : creates
McpClient ..> McpSyncClient : creates
McpSyncClient o-- McpAsyncClient
DefaultMcpSession o-- McpTransport
McpSchema <.. McpSession : uses
McpError ..> McpSession : throws
@enduml
@startuml Message Flow
package "MCP Schema" {
interface JSONRPCMessage {
+String jsonrpc()
}
interface Request {
}
class InitializeRequest
class CallToolRequest
class CreateMessageRequest
class CompleteRequest
class GetPromptRequest
}
package "Resource Types" {
interface ResourceContents {
+String uri()
+String mimeType()
}
class TextResourceContents
class BlobResourceContents
interface Content {
+String type()
}
class TextContent
class ImageContent
class EmbeddedResource
}
JSONRPCMessage <|.. Request
Request <|.. InitializeRequest
Request <|.. CallToolRequest
Request <|.. CreateMessageRequest
Request <|.. CompleteRequest
Request <|.. GetPromptRequest
ResourceContents <|.. TextResourceContents
ResourceContents <|.. BlobResourceContents
Content <|.. TextContent
Content <|.. ImageContent
Content <|.. EmbeddedResource
@enduml