public class McpServerSession extends Object implements McpLoggableSession
| Modifier and Type | Class and Description |
|---|---|
static interface |
McpServerSession.Factory
Factory for creating server sessions which delegate to a provided 1:1 transport
with a connected client.
|
static interface |
McpServerSession.InitNotificationHandler
Notification handler for the initialization notification from the client.
|
static interface |
McpServerSession.InitRequestHandler
Deprecated.
|
static class |
McpServerSession.MethodNotFoundError |
static interface |
McpServerSession.NotificationHandler
Deprecated.
|
static interface |
McpServerSession.RequestHandler<T>
Deprecated.
|
| Constructor and Description |
|---|
McpServerSession(String id,
Duration requestTimeout,
McpServerTransport transport,
McpInitRequestHandler initHandler,
Map<String,McpRequestHandler<?>> requestHandlers,
Map<String,McpNotificationHandler> notificationHandlers)
Creates a new server session with the given parameters and the transport to use.
|
McpServerSession(String id,
Duration requestTimeout,
McpServerTransport transport,
McpInitRequestHandler initHandler,
McpServerSession.InitNotificationHandler initNotificationHandler,
Map<String,McpRequestHandler<?>> requestHandlers,
Map<String,McpNotificationHandler> notificationHandlers)
|
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Closes the session and releases any associated resources.
|
reactor.core.publisher.Mono<Void> |
closeGracefully()
Closes the session and releases any associated resources asynchronously.
|
String |
getId()
Retrieve the session id.
|
reactor.core.publisher.Mono<Void> |
handle(McpSchema.JSONRPCMessage message)
Called by the
McpServerTransportProvider once the session is determined. |
void |
init(McpSchema.ClientCapabilities clientCapabilities,
McpSchema.Implementation clientInfo)
Called upon successful initialization sequence between the client and the server
with the client capabilities and information.
|
boolean |
isNotificationForLevelAllowed(McpSchema.LoggingLevel loggingLevel)
Allows checking whether a particular logging level is allowed.
|
reactor.core.publisher.Mono<Void> |
sendNotification(String method,
Object params)
Sends a notification to the model client or server with parameters.
|
<T> reactor.core.publisher.Mono<T> |
sendRequest(String method,
Object requestParams,
com.fasterxml.jackson.core.type.TypeReference<T> typeRef)
Sends a request to the model counterparty and expects a response of type T.
|
void |
setMinLoggingLevel(McpSchema.LoggingLevel minLoggingLevel)
Set the minimum logging level for the client.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitsendNotificationpublic McpServerSession(String id, Duration requestTimeout, McpServerTransport transport, McpInitRequestHandler initHandler, Map<String,McpRequestHandler<?>> requestHandlers, Map<String,McpNotificationHandler> notificationHandlers)
id - session idtransport - the transport to useinitHandler - called when a
McpSchema.InitializeRequest is received by the
serverrequestHandlers - map of request handlers to usenotificationHandlers - map of notification handlers to use@Deprecated public McpServerSession(String id, Duration requestTimeout, McpServerTransport transport, McpInitRequestHandler initHandler, McpServerSession.InitNotificationHandler initNotificationHandler, Map<String,McpRequestHandler<?>> requestHandlers, Map<String,McpNotificationHandler> notificationHandlers)
McpServerSession(String, Duration, McpServerTransport, McpInitRequestHandler, Map, Map)id - session idtransport - the transport to useinitHandler - called when a
McpSchema.InitializeRequest is received by the
serverinitNotificationHandler - called when a
McpSchema.METHOD_NOTIFICATION_INITIALIZED is
received.requestHandlers - map of request handlers to usenotificationHandlers - map of notification handlers to usepublic String getId()
public void init(McpSchema.ClientCapabilities clientCapabilities, McpSchema.Implementation clientInfo)
clientCapabilities - the capabilities the connected client providesclientInfo - the information about the connected clientpublic void setMinLoggingLevel(McpSchema.LoggingLevel minLoggingLevel)
McpLoggableSessionsetMinLoggingLevel in interface McpLoggableSessionminLoggingLevel - The minimum logging levelpublic boolean isNotificationForLevelAllowed(McpSchema.LoggingLevel loggingLevel)
McpLoggableSessionisNotificationForLevelAllowed in interface McpLoggableSessionloggingLevel - the level to checkpublic <T> reactor.core.publisher.Mono<T> sendRequest(String method, Object requestParams, com.fasterxml.jackson.core.type.TypeReference<T> typeRef)
McpSessionThis method handles the request-response pattern where a response is expected from the client or server. The response type is determined by the provided TypeReference.
sendRequest in interface McpSessionT - the type of the expected responsemethod - the name of the method to be called on the counterpartyrequestParams - the parameters to be sent with the requesttypeRef - the TypeReference describing the expected response typepublic reactor.core.publisher.Mono<Void> sendNotification(String method, Object params)
McpSession
Similar to McpSession.sendNotification(String) but allows sending additional
parameters with the notification.
sendNotification in interface McpSessionmethod - the name of the notification method to be sent to the counterpartyparams - parameters to be sent with the notificationpublic reactor.core.publisher.Mono<Void> handle(McpSchema.JSONRPCMessage message)
McpServerTransportProvider once the session is determined.
The purpose of this method is to dispatch the message to an appropriate handler as
specified by the MCP server implementation
(McpAsyncServer or
McpSyncServer) via
McpServerSession.Factory that the server creates.message - the incoming JSON-RPC messagepublic reactor.core.publisher.Mono<Void> closeGracefully()
McpSessioncloseGracefully in interface McpSessionMono that completes when the session has been closed.public void close()
McpSessionclose in interface McpSessionCopyright © 2025. All rights reserved.