|
| 1 | +@startuml Core Components |
| 2 | + |
| 3 | +interface McpTransport { |
| 4 | + +void start() |
| 5 | + +void close() |
| 6 | + +Mono<Void> closeGracefully() |
| 7 | + +void setInboudMessageHandler() |
| 8 | + +void setInboundErrorHandler() |
| 9 | + +Mono<Void> sendMessage() |
| 10 | +} |
| 11 | + |
| 12 | +abstract class AbstractMcpTransport { |
| 13 | + #ObjectMapper objectMapper |
| 14 | + #getInboundSink() |
| 15 | + #getOutboundSink() |
| 16 | + #getErrorSink() |
| 17 | +} |
| 18 | + |
| 19 | +interface McpSession { |
| 20 | + +<T> Mono<T> sendRequest() |
| 21 | + +Mono<Void> sendNotification() |
| 22 | + +Mono<Void> closeGracefully() |
| 23 | +} |
| 24 | + |
| 25 | +class DefaultMcpSession { |
| 26 | + -McpTransport transport |
| 27 | + -ObjectMapper objectMapper |
| 28 | +} |
| 29 | + |
| 30 | +class McpClient { |
| 31 | + +{static} async() |
| 32 | + +{static} sync() |
| 33 | +} |
| 34 | + |
| 35 | +class McpAsyncClient { |
| 36 | + +Mono<InitializeResult> initialize() |
| 37 | + +Mono<CallToolResult> callTool() |
| 38 | + +Mono<ListToolsResult> listTools() |
| 39 | + +Mono<ListResourcesResult> listResources() |
| 40 | + +Mono<ReadResourceResult> readResource() |
| 41 | + +Mono<ListPromptsResult> listPrompts() |
| 42 | + +Mono<GetPromptResult> getPrompt() |
| 43 | +} |
| 44 | + |
| 45 | +class McpSyncClient { |
| 46 | + +InitializeResult initialize() |
| 47 | + +CallToolResult callTool() |
| 48 | + +ListToolsResult listTools() |
| 49 | + +ListResourcesResult listResources() |
| 50 | + +ReadResourceResult readResource() |
| 51 | + +ListPromptsResult listPrompts() |
| 52 | + +GetPromptResult getPrompt() |
| 53 | +} |
| 54 | + |
| 55 | +class StdioServerTransport { |
| 56 | + -Process serverProcess |
| 57 | + -ServerParameters parameters |
| 58 | +} |
| 59 | + |
| 60 | +class McpSchema { |
| 61 | + +class ErrorCodes |
| 62 | + +interface Request |
| 63 | + +interface JSONRPCMessage |
| 64 | + +interface ResourceContents |
| 65 | + +interface Content |
| 66 | +} |
| 67 | + |
| 68 | +class McpError { |
| 69 | + -int code |
| 70 | + -String message |
| 71 | +} |
| 72 | + |
| 73 | +McpTransport <|.. AbstractMcpTransport |
| 74 | +AbstractMcpTransport <|-- StdioServerTransport |
| 75 | +McpSession <|-- DefaultMcpSession |
| 76 | +DefaultMcpSession <|-- McpAsyncClient |
| 77 | +McpClient ..> McpAsyncClient : creates |
| 78 | +McpClient ..> McpSyncClient : creates |
| 79 | +McpSyncClient o-- McpAsyncClient |
| 80 | +DefaultMcpSession o-- McpTransport |
| 81 | +McpSchema <.. McpSession : uses |
| 82 | +McpError ..> McpSession : throws |
| 83 | + |
| 84 | +@enduml |
| 85 | + |
| 86 | +@startuml Message Flow |
| 87 | + |
| 88 | +package "MCP Schema" { |
| 89 | + interface JSONRPCMessage { |
| 90 | + +String jsonrpc() |
| 91 | + } |
| 92 | + |
| 93 | + interface Request { |
| 94 | + } |
| 95 | + |
| 96 | + class InitializeRequest |
| 97 | + class CallToolRequest |
| 98 | + class CreateMessageRequest |
| 99 | + class CompleteRequest |
| 100 | + class GetPromptRequest |
| 101 | +} |
| 102 | + |
| 103 | +package "Resource Types" { |
| 104 | + interface ResourceContents { |
| 105 | + +String uri() |
| 106 | + +String mimeType() |
| 107 | + } |
| 108 | + |
| 109 | + class TextResourceContents |
| 110 | + class BlobResourceContents |
| 111 | + |
| 112 | + interface Content { |
| 113 | + +String type() |
| 114 | + } |
| 115 | + |
| 116 | + class TextContent |
| 117 | + class ImageContent |
| 118 | + class EmbeddedResource |
| 119 | +} |
| 120 | + |
| 121 | +JSONRPCMessage <|.. Request |
| 122 | +Request <|.. InitializeRequest |
| 123 | +Request <|.. CallToolRequest |
| 124 | +Request <|.. CreateMessageRequest |
| 125 | +Request <|.. CompleteRequest |
| 126 | +Request <|.. GetPromptRequest |
| 127 | + |
| 128 | +ResourceContents <|.. TextResourceContents |
| 129 | +ResourceContents <|.. BlobResourceContents |
| 130 | + |
| 131 | +Content <|.. TextContent |
| 132 | +Content <|.. ImageContent |
| 133 | +Content <|.. EmbeddedResource |
| 134 | + |
| 135 | +@enduml |
0 commit comments