diff --git a/0.5.0-BREAKING-CHANGES.md b/0.5.0-BREAKING-CHANGES.md
new file mode 100644
index 0000000..7321b16
--- /dev/null
+++ b/0.5.0-BREAKING-CHANGES.md
@@ -0,0 +1,105 @@
+# Breaking Changes for Spring AI MCP 0.5.0-SNAPSHOT
+
+## Major Changes
+
+1. Transport Implementation Modularization
+ - SSE transport implementations have been moved to dedicated modules:
+ - `mcp-webflux-sse-transport`: WebFlux-based SSE transport
+ - `mcp-webmvc-sse-transport`: WebMVC-based SSE transport
+ - Base MCP module no longer includes transport implementations
+
+2. Class Renames
+ - `SseClientTransport` → `WebFluxSseClientTransport`
+ - `SseServerTransport` → `WebFluxSseServerTransport`
+
+3. Project Structure
+ - Test utilities moved to new `mcp-test` module
+ - Sample application moved to `samples/` directory
+
+## Migration Guide
+
+### 1. Update Dependencies
+
+If using SSE transport, add the appropriate transport module to your pom.xml:
+
+For WebFlux SSE transport:
+```xml
+
+ org.springframework.experimental
+ mcp-webflux-sse-transport
+ 0.5.0-SNAPSHOT
+
+```
+
+For WebMVC SSE transport:
+```xml
+
+ org.springframework.experimental
+ mcp-webmvc-sse-transport
+ 0.5.0-SNAPSHOT
+
+```
+
+### 2. Update Transport Class References
+
+Replace:
+```java
+import org.springframework.ai.mcp.client.transport.SseClientTransport;
+import org.springframework.ai.mcp.server.transport.SseServerTransport;
+```
+
+With:
+```java
+// For WebFlux
+import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport;
+import org.springframework.ai.mcp.server.transport.WebFluxSseServerTransport;
+
+// Or for WebMVC
+import org.springframework.ai.mcp.server.transport.WebMvcSseServerTransport;
+```
+
+### 3. Update Transport Instantiation
+
+Replace:
+```java
+var transport = new SseClientTransport(webClientBuilder);
+```
+
+With:
+```java
+var transport = new WebFluxSseClientTransport(webClientBuilder);
+```
+
+Replace:
+```java
+var serverTransport = new SseServerTransport(objectMapper, messageEndpoint);
+```
+
+With:
+```java
+// For WebFlux
+var serverTransport = new WebFluxSseServerTransport(objectMapper, messageEndpoint);
+
+// Or for WebMVC
+var serverTransport = new WebMvcSseServerTransport(objectMapper, messageEndpoint);
+```
+
+### 4. Test Dependencies
+
+If you're using MCP test utilities, add the test module dependency:
+
+```xml
+
+ org.springframework.experimental
+ mcp-test
+ 0.5.0-SNAPSHOT
+ test
+
+```
+
+## Other Changes
+
+- Spring AI dependency updated to 1.0.0-M5
+- Improved dependency management and reduced transitive dependencies
+- Sample application restructured under samples/ directory
+- New test utilities and base test classes in mcp-test module
diff --git a/README.md b/README.md
index 486e2be..404d899 100644
--- a/README.md
+++ b/README.md
@@ -68,7 +68,7 @@ Explore these MCP examples in the [spring-ai-examples/model-context-protocol](ht
- [SQLite Chatbot](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/chatbot) - Interactive chatbot with SQLite database interaction
- [Filesystem](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/filesystem) - Enables LLM interaction with local filesystem folders and files
- [Brave](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave) - Enables natural language interactions with Brave Search, allowing you to perform internet searches.
-- [Spring-ai-mcp-sample](./spring-ai-mcp-sample/) - Showcases how to create and use MCP servers and clients with different transport modes and capabilities.
+- [Spring-ai-mcp-sample](./samples/spring-ai-mcp-sample/) - Showcases how to create and use MCP servers and clients with different transport modes and capabilities.
## Documentation
- [Java MCP SDK documentation](mcp/README.md)
diff --git a/docs/CLIENT.SSE.TRANSPORT.md b/docs/CLIENT.SSE.TRANSPORT.md
deleted file mode 100644
index e65794f..0000000
--- a/docs/CLIENT.SSE.TRANSPORT.md
+++ /dev/null
@@ -1,144 +0,0 @@
-# SSE Server Transport Implementation for MCP
-
-## Overview
-
-The `SseClientTransport` class implements the Model Context Protocol (MCP) HTTP with SSE transport specification, providing a bidirectional communication channel between clients and servers. This implementation is part of the Spring AI MCP Core library and follows the [MCP HTTP with SSE Transport Specification](https://spec.modelcontextprotocol.io/specification/basic/transports/#http-with-sse).
-
-## Key Features
-
-- **Bidirectional Communication**:
- - Inbound: Receives messages through SSE connection
- - Outbound: Sends messages via HTTP POST requests
-
-- **Error Handling**:
- - Automatic reconnection for transient failures
- - Graceful shutdown capabilities
- - Comprehensive error reporting
-
-- **Message Flow**:
- 1. Client establishes SSE connection to `/sse` endpoint
- 2. Server sends 'endpoint' event with message URI
- 3. Client uses provided URI for outbound messages
-
-## Technical Details
-
-### Transport Architecture
-
-The transport consists of two main processing pipelines:
-
-1. **Inbound Processing**:
- - Establishes SSE connection to `/sse` endpoint
- - Handles two types of events:
- - `message`: JSON-RPC protocol messages
- - `endpoint`: Server-provided URI for outbound messages
- - Implements automatic retry logic for connection failures
-
-2. **Outbound Processing**:
- - Sends messages via HTTP POST to server-provided endpoint
- - Uses dedicated scheduler for sequential message processing
- - Handles JSON serialization and HTTP communication
-
-### Key Components
-
-- **WebClient**: Handles HTTP communications for both SSE and POST requests
-- **ObjectMapper**: Manages JSON serialization/deserialization
-- **Scheduler**: Ensures sequential outbound message processing
-- **Message Endpoint Sink**: Manages server-provided endpoint URI
-
-## Usage Example
-
-```java
-// Create WebClient builder with base URL
-WebClient.Builder webClientBuilder = WebClient.builder()
- .baseUrl("http://localhost:3001");
-
-// Initialize transport
-SseClientTransport transport = new SseClientTransport(webClientBuilder);
-
-// Create a JSON-RPC request
-JSONRPCRequest request = new JSONRPCRequest(
- McpSchema.JSONRPC_VERSION,
- "method-name",
- "request-id",
- Map.of("key", "value")
-);
-
-// Send message
-transport.sendMessage(request)
- .subscribe(
- success -> System.out.println("Message sent successfully"),
- error -> System.err.println("Error sending message: " + error)
- );
-
-// Graceful shutdown when done
-transport.closeGracefully()
- .subscribe();
-```
-
-## Implementation Details
-
-### Message Processing
-
-1. **Inbound Messages**:
- - Received through SSE connection
- - Automatically deserialized from JSON
- - Routed to appropriate handlers based on event type
-
-2. **Outbound Messages**:
- - Serialized to JSON
- - Sent via HTTP POST
- - Processed sequentially on dedicated thread
-
-### Error Handling
-
-- **Connection Failures**:
- - Automatic retry for transient failures
- - Configurable retry policies
- - Graceful handling of permanent failures
-
-- **Message Processing Errors**:
- - Comprehensive error reporting
- - Clean failure handling
- - Maintains system stability
-
-### Shutdown Process
-
-The transport implements a graceful shutdown mechanism that:
-1. Marks transport as closing
-2. Disposes of all subscriptions
-3. Cleans up schedulers
-4. Completes message endpoint sink
-
-## Technical Specifications
-
-- **Protocol**: HTTP with Server-Sent Events (SSE)
-- **Message Format**: JSON-RPC 2.0
-- **Content Type**: application/json for outbound, text/event-stream for inbound
-- **Endpoints**:
- - SSE Connection: `/sse`
- - Message Endpoint: Dynamically provided by server
-
-## Dependencies
-
-- Spring WebFlux for reactive HTTP client
-- Jackson for JSON processing
-- Project Reactor for reactive streams
-- SLF4J for logging
-
-## Thread Safety
-
-The implementation is thread-safe and designed for concurrent use:
-- Inbound processing uses SSE event loop
-- Outbound processing uses dedicated single-threaded scheduler
-- State management uses thread-safe constructs
-
-## Testing
-
-The implementation includes comprehensive tests covering:
-- Message processing
-- Error handling
-- Connection management
-- Shutdown procedures
-- Edge cases and failure scenarios
-
-For detailed test examples, see `SseClientTransportTests.java`.
diff --git a/docs/CLIENT.STDIO.TRANSPORT.md b/docs/CLIENT.STDIO.TRANSPORT.md
deleted file mode 100644
index 1c2dc6f..0000000
--- a/docs/CLIENT.STDIO.TRANSPORT.md
+++ /dev/null
@@ -1,123 +0,0 @@
-# StdioClientTransport
-
-The `StdioClientTransport` class implements the [MCP Stdio Transport](https://spec.modelcontextprotocol.io/specification/basic/transports/#stdio) specification, providing communication with MCP servers over standard input/output streams.
-
-## Overview
-
-The Stdio transport uses standard input/output streams for bidirectional communication between the client and server:
-- Messages are sent to the server via stdout
-- Messages are received from the server via stdin
-- Error and debug information is sent via stderr
-
-## Message Format
-
-Messages are exchanged as newline-delimited JSON-RPC messages:
-- Each message is a single line of JSON text
-- Messages are terminated with a newline character (`\n`)
-- Messages follow the JSON-RPC 2.0 specification
-- UTF-8 encoding is used for all messages
-
-### Message Types
-
-The transport handles three types of JSON-RPC messages:
-
-1. **Requests** - Messages with both `method` and `id` fields:
-```json
-{
- "jsonrpc": "2.0",
- "id": 1,
- "method": "example.method",
- "params": {}
-}
-```
-
-2. **Notifications** - Messages with `method` but no `id` field:
-```json
-{
- "jsonrpc": "2.0",
- "method": "example.notification",
- "params": {}
-}
-```
-
-3. **Responses** - Messages with either `result` or `error` fields:
-```json
-{
- "jsonrpc": "2.0",
- "id": 1,
- "result": {}
-}
-```
-
-## Implementation Details
-
-### Process Management
-
-The transport manages a server process with:
-- Command and arguments specified via `ServerParameters`
-- Environment variables for configuration
-- Proper process cleanup on shutdown
-
-### Threading Model
-
-The implementation uses three dedicated threads:
-1. **Inbound** - Reads and processes messages from stdin
-2. **Outbound** - Writes messages to stdout
-3. **Error** - Handles stderr messages
-
-### Error Handling
-
-Errors are handled at multiple levels:
-- Process startup failures
-- Stream I/O errors
-- Message parsing errors
-- Process termination handling
-
-## Usage Example
-
-```java
-// Create server parameters
-ServerParameters params = ServerParameters.builder()
- .command("path/to/server")
- .args(List.of("--arg1", "value1"))
- .env(Map.of("ENV_VAR", "value"))
- .build();
-
-// Create transport
-StdioClientTransport transport = new StdioClientTransport(params);
-
-// Start transport
-transport.start();
-
-// Send message
-JSONRPCRequest request = new JSONRPCRequest();
-request.setId(1);
-request.setMethod("example.method");
-request.setParams(new HashMap<>());
-transport.send(request);
-
-// Close transport
-transport.closeGracefully().block();
-```
-
-## Error Messages
-
-Error messages from the server process are:
-- Written to stderr
-- Logged at ERROR level
-- Emitted through the error sink for handling
-- UTF-8 encoded
-
-## Debugging
-
-For debugging purposes:
-1. Enable DEBUG level logging to see detailed message flow
-2. Monitor stderr for server process errors
-3. Check process exit codes for abnormal termination
-
-## Implementation Notes
-
-- The transport ensures thread safety through dedicated schedulers
-- Messages are processed asynchronously using Project Reactor
-- Resources are properly cleaned up on shutdown
-- The implementation is resilient to various failure modes
diff --git a/docs/class-diagrams.puml b/docs/class-diagrams.puml
deleted file mode 100644
index e68059c..0000000
--- a/docs/class-diagrams.puml
+++ /dev/null
@@ -1,204 +0,0 @@
-@startuml Core Components
-
-' Core Interfaces
-interface McpTransport {
- +Mono connect(Function, Mono> handler)
- +Mono sendMessage(JSONRPCMessage message)
- +void close()
- +Mono closeGracefully()
- + T unmarshalFrom(Object data, TypeReference typeRef)
-}
-
-interface McpSession {
- + Mono sendRequest(String method, Object requestParams, TypeReference typeRef)
- +Mono sendNotification(String method, Map params)
- +Mono closeGracefully()
- +void close()
-}
-
-' Core Implementation Classes
-class DefaultMcpSession {
- -McpTransport transport
- -ObjectMapper objectMapper
- +interface RequestHandler
- +interface NotificationHandler
-}
-
-' Client Classes
-class McpClient {
- +{static} Builder using(McpTransport transport)
- +{static} McpAsyncClient async(McpTransport transport)
- +{static} McpSyncClient sync(McpTransport transport)
-}
-
-class McpAsyncClient {
- +Mono initialize()
- +Mono callTool(CallToolRequest request)
- +Mono listTools()
- +Mono listResources()
- +Mono readResource(ReadResourceRequest request)
- +Mono listResourceTemplates()
- +Mono listPrompts()
- +Mono getPrompt(GetPromptRequest request)
-}
-
-class McpSyncClient {
- +InitializeResult initialize()
- +CallToolResult callTool(CallToolRequest request)
- +ListToolsResult listTools()
- +ListResourcesResult listResources()
- +ReadResourceResult readResource(ReadResourceRequest request)
- +ListResourceTemplatesResult listResourceTemplates()
- +ListPromptsResult listPrompts()
- +GetPromptResult getPrompt(GetPromptRequest request)
-}
-
-' Server Classes
-class McpServer {
- +{static} Builder using(McpTransport transport)
-}
-
-class McpAsyncServer {
- +Mono addTool(ToolHandler toolHandler)
- +Mono removeTool(String toolName)
- +Mono notifyToolsListChanged()
- +Mono notifyResourcesListChanged()
- +Mono notifyPromptsListChanged()
- +interface ToolHandler
-}
-
-class McpSyncServer {
- +void addTool(ToolHandler toolHandler)
- +void removeTool(String toolName)
- +void notifyToolsListChanged()
- +void notifyResourcesListChanged()
- +void notifyPromptsListChanged()
- +McpAsyncServer getAsyncServer()
-}
-
-' Transport Implementations
-class StdioClientTransport {
- -Process serverProcess
- -ServerParameters parameters
-}
-
-class SseClientTransport {
- -WebClient webClient
-}
-
-class StdioServerTransport {
-}
-
-class SseServerTransport {
-}
-
-' Schema and Error Classes
-class McpSchema {
- +class ErrorCodes
- +interface Request
- +interface JSONRPCMessage
- +interface ResourceContents
- +interface Content
- +interface ServerCapabilities
- +{static} JSONRPCMessage deserializeJsonRpcMessage()
-}
-
-class McpError {
- -int code
- -String message
-}
-
-' Relationships
-McpTransport <|.. StdioClientTransport
-McpTransport <|.. SseClientTransport
-McpTransport <|.. StdioServerTransport
-McpTransport <|.. SseServerTransport
-
-McpSession <|.. DefaultMcpSession
-DefaultMcpSession --o McpAsyncClient
-DefaultMcpSession --o McpAsyncServer
-
-McpClient ..> McpAsyncClient : creates
-McpClient ..> McpSyncClient : creates
-McpSyncClient o-- McpAsyncClient
-
-McpServer ..> McpAsyncServer : creates
-McpServer ..> McpSyncServer : creates
-McpSyncServer o-- McpAsyncServer
-
-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 ListToolsRequest
- class ListResourcesRequest
- class ReadResourceRequest
- class ListResourceTemplatesRequest
- class ListPromptsRequest
- 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
-
- interface Annotated {
- +Annotations annotations()
- }
-
- interface PromptOrResourceReference {
- +String type()
- }
-
- class PromptReference
- class ResourceReference
-}
-
-JSONRPCMessage <|.. Request
-Request <|.. InitializeRequest
-Request <|.. CallToolRequest
-Request <|.. ListToolsRequest
-Request <|.. ListResourcesRequest
-Request <|.. ReadResourceRequest
-Request <|.. ListResourceTemplatesRequest
-Request <|.. ListPromptsRequest
-Request <|.. GetPromptRequest
-
-ResourceContents <|.. TextResourceContents
-ResourceContents <|.. BlobResourceContents
-
-Content <|.. TextContent
-Content <|.. ImageContent
-Content <|.. EmbeddedResource
-
-PromptOrResourceReference <|.. PromptReference
-PromptOrResourceReference <|.. ResourceReference
-
-@enduml
diff --git a/docs/ref-client.md b/docs/ref-client.md
deleted file mode 100644
index f0767bd..0000000
--- a/docs/ref-client.md
+++ /dev/null
@@ -1,299 +0,0 @@
-# MCP Client Reference
-
-## McpClient Factory
-
-`org.springframework.ai.mcp.client.McpClient`
-
-The `McpClient` class serves as a factory for creating Model Context Protocol (MCP) clients. It provides the main entry point for establishing connections with MCP servers, offering both synchronous and asynchronous client implementations.
-
-### Overview
-
-The client factory uses a builder pattern for flexible configuration, allowing you to customize various aspects of the client including timeout durations, notification handlers, and more.
-
-### Client Types
-
-The factory can create two types of clients:
-- `McpAsyncClient` for non-blocking operations
-- `McpSyncClient` for blocking operations
-
-### Builder Configuration
-
-#### Basic Usage
-```java
-McpClient.using(transport)
- .requestTimeout(Duration.ofSeconds(5))
- .sync(); // or .async()
-```
-
-#### Builder Methods
-
-##### using(McpTransport transport)
-```java
-public static Builder using(McpTransport transport)
-```
-Start building an MCP client with the specified transport.
-
-##### requestTimeout(Duration requestTimeout)
-```java
-public Builder requestTimeout(Duration requestTimeout)
-```
-Set the request timeout duration (default is 20 seconds).
-
-##### capabilities(ClientCapabilities capabilities)
-```java
-public Builder capabilities(ClientCapabilities capabilities)
-```
-Set the client capabilities that define what features the client supports.
-
-##### clientInfo(Implementation clientInfo)
-```java
-public Builder clientInfo(Implementation clientInfo)
-```
-Set the client implementation information (name and version).
-
-##### roots(List roots)
-```java
-public Builder roots(List roots)
-```
-Add a list of roots that define filesystem boundaries for server operations.
-
-##### roots(Root... roots)
-```java
-public Builder roots(Root... roots)
-```
-Add roots that define filesystem boundaries for server operations.
-
-##### toolsChangeConsumer(Consumer> consumer)
-```java
-public Builder toolsChangeConsumer(Consumer> toolsChangeConsumer)
-```
-Add a consumer for tool changes notifications.
-
-##### resourcesChangeConsumer(Consumer> consumer)
-```java
-public Builder resourcesChangeConsumer(Consumer> resourcesChangeConsumer)
-```
-Add a consumer for resource changes notifications.
-
-##### promptsChangeConsumer(Consumer> consumer)
-```java
-public Builder promptsChangeConsumer(Consumer> promptsChangeConsumer)
-```
-Add a consumer for prompt changes notifications.
-
-##### sync()
-```java
-public McpSyncClient sync()
-```
-Build and return a synchronous MCP client.
-
-##### async()
-```java
-public McpAsyncClient async()
-```
-Build and return an asynchronous MCP client.
-
-### Usage Examples
-
-#### Creating a Synchronous Client
-```java
-McpTransport transport = // obtain transport instance
-
-// Configure client capabilities
-ClientCapabilities capabilities = ClientCapabilities.builder()
- .experimental(Map.of("feature", "value"))
- .roots(true)
- .sampling()
- .build();
-
-McpSyncClient client = McpClient.using(transport)
- .requestTimeout(Duration.ofSeconds(10))
- .rootsListChangedNotification(true)
- .toolsChangeConsumer(tools -> {
- System.out.println("Tools updated: " + tools);
- })
- .sync();
-
-// Initialize client with capabilities
-client.initialize(LATEST_PROTOCOL_VERSION, capabilities,
- new Implementation("client-name", "1.0.0"));
-```
-
-#### Creating an Asynchronous Client
-```java
-McpTransport transport = // obtain transport instance
-McpAsyncClient client = McpClient.using(transport)
- .requestTimeout(Duration.ofSeconds(5))
- .resourcesChangeConsumer(resources -> {
- System.out.println("Resources updated: " + resources);
- })
- .async();
-```
-
-#### Using Multiple Change Consumers
-```java
-McpClient.using(transport)
- .toolsChangeConsumer(tools -> {
- // Handle tool changes
- })
- .toolsChangeConsumer(tools -> {
- // Additional tool change handling
- })
- .resourcesChangeConsumer(resources -> {
- // Handle resource changes
- })
- .sync();
-```
-
-### Client Capabilities
-
-The `ClientCapabilities` class represents features that clients can implement to enrich connected MCP servers. It uses a builder pattern for easy configuration.
-
-#### ClientCapabilities Builder
-
-```java
-ClientCapabilities capabilities = ClientCapabilities.builder()
- .experimental(experimentalMap)
- .roots(true)
- .sampling()
- .build();
-```
-
-##### Builder Methods
-
-###### experimental(Map experimental)
-```java
-public Builder experimental(Map experimental)
-```
-Set experimental features map for work-in-progress capabilities.
-
-###### roots(Boolean listChanged)
-```java
-public Builder roots(Boolean listChanged)
-```
-Configure root capabilities with listChanged parameter. Roots define the boundaries of where servers can operate within the filesystem.
-
-###### sampling()
-```java
-public Builder sampling()
-```
-Add sampling capabilities that allow servers to request LLM sampling from language models via clients.
-
-### Client Operations
-
-#### Root Management
-
-Both synchronous and asynchronous clients provide methods for managing filesystem roots:
-
-##### Synchronous API
-```java
-void addRoot(Root root) // Add a new root
-void removeRoot(String rootUri) // Remove a root by URI
-void rootsListChangedNotification() // Notify about roots list changes
-```
-
-##### Asynchronous API
-```java
-Mono addRoot(Root root) // Add a new root
-Mono removeRoot(String rootUri) // Remove a root by URI
-Mono rootsListChangedNotification() // Notify about roots list changes
-```
-
-#### Tools API
-
-Methods for interacting with server tools:
-
-##### Synchronous API
-```java
-CallToolResult callTool(CallToolRequest request) // Execute a tool
-ListToolsResult listTools() // List all available tools
-ListToolsResult listTools(String cursor) // List tools with pagination
-```
-
-##### Asynchronous API
-```java
-Mono callTool(CallToolRequest request)
-Mono listTools()
-Mono listTools(String cursor)
-```
-
-#### Resources API
-
-Methods for working with server resources:
-
-##### Synchronous API
-```java
-ListResourcesResult listResources() // List all resources
-ListResourcesResult listResources(String cursor) // List resources with pagination
-ReadResourceResult readResource(Resource resource) // Read a resource
-ReadResourceResult readResource(ReadResourceRequest request) // Read a resource by request
-ListResourceTemplatesResult listResourceTemplates() // List resource templates
-void subscribeResource(SubscribeRequest request) // Subscribe to resource updates
-void unsubscribeResource(UnsubscribeRequest request) // Unsubscribe from updates
-void sendResourcesListChanged() // Notify about resource changes
-```
-
-##### Asynchronous API
-```java
-Mono listResources()
-Mono listResources(String cursor)
-Mono readResource(Resource resource)
-Mono readResource(ReadResourceRequest request)
-Mono listResourceTemplates()
-Mono subscribeResource(SubscribeRequest request)
-Mono unsubscribeResource(UnsubscribeRequest request)
-Mono sendResourcesListChanged()
-```
-
-#### Prompts API
-
-Methods for working with server prompts:
-
-##### Synchronous API
-```java
-ListPromptsResult listPrompts() // List all prompts
-ListPromptsResult listPrompts(String cursor) // List prompts with pagination
-GetPromptResult getPrompt(GetPromptRequest request) // Get a specific prompt
-void promptListChangedNotification() // Notify about prompt changes
-```
-
-##### Asynchronous API
-```java
-Mono listPrompts()
-Mono listPrompts(String cursor)
-Mono getPrompt(GetPromptRequest request)
-Mono promptListChangedNotification()
-```
-
-#### Lifecycle Management
-
-Methods for managing client lifecycle:
-
-##### Synchronous API
-```java
-InitializeResult initialize() // Initialize client connection
-void close() // Close client immediately
-boolean closeGracefully() // Close client with graceful shutdown
-Object ping() // Send ping request
-```
-
-##### Asynchronous API
-```java
-Mono initialize()
-void close()
-Mono closeGracefully()
-Mono