cxxmcp 1.1.6
C++ MCP SDK
Loading...
Searching...
No Matches
mcp::transport::WebSocketClientTransport Class Referencefinal

WebSocket-based MCP client transport. More...

#include <websocket_transport.hpp>

Inheritance diagram for mcp::transport::WebSocketClientTransport:
mcp::transport::Transport< Role >

Public Member Functions

 WebSocketClientTransport (WebSocketClientTransportOptions options)
 Constructs a client transport with the given options.
 
 ~WebSocketClientTransport () override
 Stops the reader thread and closes the WebSocket connection.
 
 WebSocketClientTransport (const WebSocketClientTransport &)=delete
 
WebSocketClientTransportoperator= (const WebSocketClientTransport &)=delete
 
std::string_view name () const noexcept override
 Returns "websocket-client".
 
protocol::Json diagnostics () const override
 Returns structured diagnostics including connection state and stats.
 
core::Result< core::Unitsend (TxMessage message) override
 Sends a JSON-RPC message over the WebSocket connection.
 
core::Result< std::optional< RxMessage > > receive () override
 Blocks until the next inbound JSON-RPC message is available.
 
core::Result< core::Unitclose () override
 Closes the transport and unblocks any blocked receive().
 
- Public Member Functions inherited from mcp::transport::Transport< Role >
virtual void wait_until_ready ()
 Blocks until the transport is ready to process messages.
 

Additional Inherited Members

- Public Types inherited from mcp::transport::Transport< Role >
using TxMessage = typename MessageTraits< Role >::TxMessage
 
using RxMessage = typename MessageTraits< Role >::RxMessage
 

Detailed Description

WebSocket-based MCP client transport.

Provides a full-duplex JSON-RPC channel over WebSocket with built-in automatic reconnection using exponential backoff.

Thread safety: send() is safe to call from multiple threads. receive() is sequential and must not be called concurrently. close() is safe to call from any thread and will unblock a blocked receive().

options.uri = "ws://127.0.0.1:3001/mcp";
WebSocketClientTransport transport(std::move(options));
auto req = make_initialize_request("my-client", "1.0.0");
auto sent = transport.send(JsonRpcMessage{std::move(req)});
auto received = transport.receive();
WebSocket-based MCP client transport.
Definition websocket_transport.hpp:116
Configuration for the WebSocket client transport.
Definition websocket_transport.hpp:32
std::string uri
Full ws:// or wss:// URI for the MCP endpoint.
Definition websocket_transport.hpp:35

Constructor & Destructor Documentation

◆ WebSocketClientTransport()

mcp::transport::WebSocketClientTransport::WebSocketClientTransport ( WebSocketClientTransportOptions  options)
explicit

Constructs a client transport with the given options.

Parameters
optionsConnection and reconnection configuration.

Member Function Documentation

◆ close()

core::Result< core::Unit > mcp::transport::WebSocketClientTransport::close ( )
overridevirtual

Closes the transport and unblocks any blocked receive().

Implements mcp::transport::Transport< Role >.

◆ diagnostics()

protocol::Json mcp::transport::WebSocketClientTransport::diagnostics ( ) const
overridevirtual

Returns structured diagnostics including connection state and stats.

Reimplemented from mcp::transport::Transport< Role >.

◆ name()

std::string_view mcp::transport::WebSocketClientTransport::name ( ) const
overridevirtualnoexcept

Returns "websocket-client".

Implements mcp::transport::Transport< Role >.

◆ receive()

core::Result< std::optional< RxMessage > > mcp::transport::WebSocketClientTransport::receive ( )
overridevirtual

Blocks until the next inbound JSON-RPC message is available.

Returns std::nullopt when the transport is closed.

Implements mcp::transport::Transport< Role >.

◆ send()

core::Result< core::Unit > mcp::transport::WebSocketClientTransport::send ( TxMessage  message)
overridevirtual

Sends a JSON-RPC message over the WebSocket connection.

For requests, the response is delivered through receive() once the peer replies. If the connection is down and auto_reconnect is enabled, an immediate reconnection attempt is made before sending.

Implements mcp::transport::Transport< Role >.


The documentation for this class was generated from the following file: