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>
|
</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
|
## Usage
|
||||||
|
|
||||||
### Async Client Example
|
### Async Client Example
|
||||||
|
|
@ -135,6 +141,8 @@ The SDK follows a layered architecture:
|
||||||
- **AbstractMcpTransport**: Base transport implementation
|
- **AbstractMcpTransport**: Base transport implementation
|
||||||
- **StdioServerTransport**: Stdio-based server communication
|
- **StdioServerTransport**: Stdio-based server communication
|
||||||
|
|
||||||
|
<img src="docs/spring-ai-mcp-uml-classdiagram.svg" width="600"/>
|
||||||
|
|
||||||
### Key Interactions
|
### Key Interactions
|
||||||
|
|
||||||
1. Client initialization
|
1. Client initialization
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue