Class WebSocketMcpTransport
java.lang.Object
dev.langchain4j.mcp.client.transport.websocket.WebSocketMcpTransport
- All Implemented Interfaces:
McpTransport, Closeable, AutoCloseable
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbuilder()voidPerforms transport-specific health checks, if applicable.voidclose()voidDeprecated, for removal: This API element is subject to removal in a future version.voidDeprecated, for removal: This API element is subject to removal in a future version.usesendMessage(McpClientMessage)instead, which does not expose Jackson types.CompletableFuture<com.fasterxml.jackson.databind.JsonNode> Deprecated, for removal: This API element is subject to removal in a future version.usesendRequest(McpCallContext)instead, which does not expose Jackson types.CompletableFuture<com.fasterxml.jackson.databind.JsonNode> Deprecated, for removal: This API element is subject to removal in a future version.usesendRequest(McpClientMessage)instead, which does not expose Jackson types.CompletableFuture<com.fasterxml.jackson.databind.JsonNode> initialize(McpInitializeRequest request) Deprecated, for removal: This API element is subject to removal in a future version.usesendInitializeRequest(McpInitializeRequest)instead, which does not expose Jackson types.voidvoidreloadSslContext(SSLContext sslContext) Reloads the SSL context used by the transport.booleanReturns whether this transport requires an explicitnotifications/cancelledmessage to cancel an in-progress request.sendInitializeRequest(McpInitializeRequest operation) Sends the MCPInitializeRequestand returns the server's response as unparsed JSON text, so that a transport does not need a JSON library.voidsendMessage(McpCallContext context) Sends a message that does not expect a reply - in MCP terms a notification, or a response to a server-initiated request.voidsendMessage(McpClientMessage request) Sends a message that does not expect a reply - in MCP terms a notification, or a response to a server-initiated request.sendRequest(McpCallContext context) Sends a JSON-RPC request and returns the server's response as unparsed JSON text.sendRequest(McpClientMessage request) Sends a JSON-RPC request and returns the server's response as unparsed JSON text.voidstart(McpOperationHandler operationHandler) Creates a connection to the MCP server (runs the server as a subprocess if needed).Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface McpTransport
setModernProtocol, setProtocolVersion
-
Constructor Details
-
WebSocketMcpTransport
-
-
Method Details
-
start
Description copied from interface:McpTransportCreates a connection to the MCP server (runs the server as a subprocess if needed). This does NOT yet send the "initialize" message to negotiate capabilities.- Specified by:
startin interfaceMcpTransport
-
sendInitializeRequest
Description copied from interface:McpTransportSends the MCPInitializeRequestand returns the server's response as unparsed JSON text, so that a transport does not need a JSON library. Only used with the legacy MCP protocol (versions up to 2025-11-25); the modern protocol usesserver/discover.- Specified by:
sendInitializeRequestin interfaceMcpTransport
-
sendRequest
Description copied from interface:McpTransportSends a JSON-RPC request and returns the server's response as unparsed JSON text.- Specified by:
sendRequestin interfaceMcpTransport
-
sendRequest
Description copied from interface:McpTransportSends a JSON-RPC request and returns the server's response as unparsed JSON text.- Specified by:
sendRequestin interfaceMcpTransport
-
sendMessage
Description copied from interface:McpTransportSends a message that does not expect a reply - in MCP terms a notification, or a response to a server-initiated request.- Specified by:
sendMessagein interfaceMcpTransport
-
sendMessage
Description copied from interface:McpTransportSends a message that does not expect a reply - in MCP terms a notification, or a response to a server-initiated request.- Specified by:
sendMessagein interfaceMcpTransport
-
checkHealth
public void checkHealth()Description copied from interface:McpTransportPerforms transport-specific health checks, if applicable. This is called by `McpClient.checkHealth()` as the first check before performing a check by sending a 'ping' over the MCP protocol. The purpose is that the transport may have some specific and faster ways to detect that it is broken, like for example, the STDIO transport can fail the check if it detects that the server subprocess isn't alive anymore.- Specified by:
checkHealthin interfaceMcpTransport
-
requiresCancellationNotification
public boolean requiresCancellationNotification()Description copied from interface:McpTransportReturns whether this transport requires an explicitnotifications/cancelledmessage to cancel an in-progress request. Transports that use per-request SSE streams (like Streamable HTTP) cancel by closing the stream and should returnfalse. Transports that share a single channel (like stdio) must returntrueso the server knows which request to cancel.Note: when using the legacy protocol (2025-11-25), the client always sends
notifications/cancelledregardless of this value, because the legacy spec states that disconnection should not be interpreted as cancellation.Defaults to
true, which is the safe answer for a transport that shares a single channel; per-request-stream transports override it.- Specified by:
requiresCancellationNotificationin interfaceMcpTransport
-
onFailure
- Specified by:
onFailurein interfaceMcpTransport
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
reloadSslContext
Reloads the SSL context used by the transport. From this point on, new websocket connections will use the updated SSL context. This does NOT cancel or restart the existing connection, so this takes effect only after the existing connection stops working. -
builder
-
initialize
@Deprecated(since="1.20.0", forRemoval=true) public CompletableFuture<com.fasterxml.jackson.databind.JsonNode> initialize(McpInitializeRequest request) Deprecated, for removal: This API element is subject to removal in a future version.usesendInitializeRequest(McpInitializeRequest)instead, which does not expose Jackson types.Description copied from interface:McpTransportSends the "initialize" message to the MCP server to negotiate capabilities, supported protocol version etc. When this method returns successfully, the transport is fully initialized and ready to be used. This has to be called AFTER the "start" method. Only used with the legacy MCP protocol (versions up to 2025-11-25). Modern protocol usesserver/discoverinstead.- Specified by:
initializein interfaceMcpTransport
-
executeOperationWithResponse
@Deprecated(since="1.20.0", forRemoval=true) public CompletableFuture<com.fasterxml.jackson.databind.JsonNode> executeOperationWithResponse(McpClientMessage request) Deprecated, for removal: This API element is subject to removal in a future version.usesendRequest(McpClientMessage)instead, which does not expose Jackson types.Description copied from interface:McpTransportExecutes an operation that expects a response from the server.- Specified by:
executeOperationWithResponsein interfaceMcpTransport
-
executeOperationWithResponse
@Deprecated(since="1.20.0", forRemoval=true) public CompletableFuture<com.fasterxml.jackson.databind.JsonNode> executeOperationWithResponse(McpCallContext context) Deprecated, for removal: This API element is subject to removal in a future version.usesendRequest(McpCallContext)instead, which does not expose Jackson types.Description copied from interface:McpTransportExecutes an operation that expects a response from the server.- Specified by:
executeOperationWithResponsein interfaceMcpTransport
-
executeOperationWithoutResponse
@Deprecated(since="1.20.0", forRemoval=true) public void executeOperationWithoutResponse(McpClientMessage request) Deprecated, for removal: This API element is subject to removal in a future version.usesendMessage(McpClientMessage)instead, which does not expose Jackson types.Description copied from interface:McpTransportSends a message that does not expect a reply.- Specified by:
executeOperationWithoutResponsein interfaceMcpTransport
-
executeOperationWithoutResponse
@Deprecated(since="1.20.0", forRemoval=true) public void executeOperationWithoutResponse(McpCallContext context) Deprecated, for removal: This API element is subject to removal in a future version.usesendMessage(McpCallContext)instead, which does not expose Jackson types.Description copied from interface:McpTransportSends a message that does not expect a reply.- Specified by:
executeOperationWithoutResponsein interfaceMcpTransport
-
sendMessage(McpCallContext)instead, which does not expose Jackson types.