Add doc diagrams
This commit is contained in:
parent
7d7923102b
commit
a922b1aa7a
3 changed files with 144 additions and 0 deletions
135
mcp-core/docs/class-diagrams.puml
Normal file
135
mcp-core/docs/class-diagrams.puml
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
@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 McpSchema {
|
||||
+class ErrorCodes
|
||||
+interface Request
|
||||
+interface JSONRPCMessage
|
||||
+interface ResourceContents
|
||||
+interface Content
|
||||
}
|
||||
|
||||
class McpError {
|
||||
-int code
|
||||
-String message
|
||||
}
|
||||
|
||||
McpTransport <|.. AbstractMcpTransport
|
||||
AbstractMcpTransport <|-- StdioServerTransport
|
||||
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
|
||||
1
mcp-core/docs/spring-ai-mcp-uml-classdiagram.svg
Normal file
1
mcp-core/docs/spring-ai-mcp-uml-classdiagram.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 28 KiB |
|
|
@ -30,6 +30,12 @@ Add the following dependency to your Maven project:
|
|||
</dependency>
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
Detailed UML class diagrams showing the relationships between components can be found in [docs/class-diagrams.puml](docs/class-diagrams.puml). The diagrams include:
|
||||
- Core Components: Shows the main interfaces, classes, and their relationships
|
||||
- Message Flow: Illustrates the message and resource type hierarchies
|
||||
|
||||
## Usage
|
||||
|
||||
### Async Client Example
|
||||
|
|
@ -135,6 +141,8 @@ The SDK follows a layered architecture:
|
|||
- **AbstractMcpTransport**: Base transport implementation
|
||||
- **StdioServerTransport**: Stdio-based server communication
|
||||
|
||||
<img src="docs/spring-ai-mcp-uml-classdiagram.svg" width="600"/>
|
||||
|
||||
### Key Interactions
|
||||
|
||||
1. Client initialization
|
||||
|
|
|
|||
Loading…
Reference in a new issue