Skip to content

Commit 275244b

Browse files
committed
chore: Add createSession method in McpAsyncClient
Signed-off-by: He-Pin <hepin1989@gmail.com>
1 parent 87bdf1e commit 275244b

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

mcp-core/src/main/java/io/modelcontextprotocol/client/McpAsyncClient.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.slf4j.LoggerFactory;
4242
import reactor.core.publisher.Flux;
4343
import reactor.core.publisher.Mono;
44+
import reactor.util.context.ContextView;
4445

4546
/**
4647
* The Model Context Protocol (MCP) client implementation that provides asynchronous
@@ -314,13 +315,21 @@ public class McpAsyncClient {
314315
};
315316

316317
this.initializer = new LifecycleInitializer(clientCapabilities, clientInfo, transport.protocolVersions(),
317-
initializationTimeout, ctx -> new McpClientSession(requestTimeout, transport, requestHandlers,
318-
notificationHandlers, con -> con.contextWrite(ctx)),
318+
initializationTimeout, ctx -> createSession(ctx, requestTimeout, requestHandlers, notificationHandlers),
319319
postInitializationHook);
320320

321321
this.transport.setExceptionHandler(this.initializer::handleException);
322322
}
323323

324+
/**
325+
* An extension point to create a custom McpClientSession with additional context.
326+
*/
327+
protected McpClientSession createSession(ContextView ctx, Duration requestTimeout,
328+
Map<String, RequestHandler<?>> requestHandlers, Map<String, NotificationHandler> notificationHandlers) {
329+
return new McpClientSession(requestTimeout, transport, requestHandlers, notificationHandlers,
330+
con -> con.contextWrite(ctx));
331+
}
332+
324333
/**
325334
* Get the current initialization result.
326335
* @return the initialization result.

0 commit comments

Comments
 (0)