public interface McpClient
This class serves as the main entry point for establishing connections with MCP servers, implementing the client-side of the MCP specification. The protocol follows a client-server architecture where:
The class provides factory methods to create either:
McpAsyncClient
for non-blocking operations with CompletableFuture responses
McpSyncClient
for blocking operations with direct responses
Example of creating a basic synchronous client:
McpClient.sync(transport)
.requestTimeout(Duration.ofSeconds(5))
.build();
Example of creating a basic asynchronous client:
McpClient.async(transport)
.requestTimeout(Duration.ofSeconds(5))
.build();
Example with advanced asynchronous configuration:
McpClient.async(transport)
.requestTimeout(Duration.ofSeconds(10))
.capabilities(new ClientCapabilities(...))
.clientInfo(new Implementation("My Client", "1.0.0"))
.roots(new Root("file://workspace", "Workspace Files"))
.toolsChangeConsumer(tools -> Mono.fromRunnable(() -> System.out.println("Tools updated: " + tools)))
.resourcesChangeConsumer(resources -> Mono.fromRunnable(() -> System.out.println("Resources updated: " + resources)))
.promptsChangeConsumer(prompts -> Mono.fromRunnable(() -> System.out.println("Prompts updated: " + prompts)))
.loggingConsumer(message -> Mono.fromRunnable(() -> System.out.println("Log message: " + message)))
.build();
The client supports:
The client supports structured logging through the MCP logging utility:
McpAsyncClient
,
McpSyncClient
,
McpTransport
限定符和类型 | 接口和说明 |
---|---|
static class |
McpClient.AsyncSpec
Asynchronous client specification.
|
static class |
McpClient.SyncSpec
Synchronous client specification.
|
限定符和类型 | 方法和说明 |
---|---|
static McpClient.AsyncSpec |
async(ClientMcpTransport transport)
已过时。
This method will be removed in 0.9.0. Use
async(McpClientTransport) |
static McpClient.AsyncSpec |
async(McpClientTransport transport)
Start building an asynchronous MCP client with the specified transport layer.
|
static McpClient.SyncSpec |
sync(ClientMcpTransport transport)
已过时。
This method will be removed in 0.9.0. Use
sync(McpClientTransport) |
static McpClient.SyncSpec |
sync(McpClientTransport transport)
Start building a synchronous MCP client with the specified transport layer.
|
@Deprecated static McpClient.SyncSpec sync(ClientMcpTransport transport)
sync(McpClientTransport)
transport
- The transport layer implementation for MCP communication. Common
implementations include StdioClientTransport
for stdio-based communication
and SseClientTransport
for SSE-based communication.java.lang.IllegalArgumentException
- if transport is nullstatic McpClient.SyncSpec sync(McpClientTransport transport)
transport
- The transport layer implementation for MCP communication. Common
implementations include StdioClientTransport
for stdio-based communication
and SseClientTransport
for SSE-based communication.java.lang.IllegalArgumentException
- if transport is null@Deprecated static McpClient.AsyncSpec async(ClientMcpTransport transport)
async(McpClientTransport)
transport
- The transport layer implementation for MCP communication. Common
implementations include StdioClientTransport
for stdio-based communication
and SseClientTransport
for SSE-based communication.java.lang.IllegalArgumentException
- if transport is nullstatic McpClient.AsyncSpec async(McpClientTransport transport)
transport
- The transport layer implementation for MCP communication. Common
implementations include StdioClientTransport
for stdio-based communication
and SseClientTransport
for SSE-based communication.java.lang.IllegalArgumentException
- if transport is null