16namespace mcp::server {
81 void stop() noexcept override;
84 std::string_view
name() const noexcept override;
88 std::ostream* output_;
89 std::mutex output_mutex_;
90 mutable std::mutex client_capabilities_mutex_;
91 std::atomic_bool running_{
false};
92 bool initialized_ =
false;
93 std::optional<protocol::ClientCapabilities> client_capabilities_;
Blocking stdio transport for local MCP clients.
Definition stdio_transport.hpp:42
std::string_view name() const noexcept override
Return the diagnostic transport name "stdio".
StdioTransport(std::istream &input, std::ostream &output)
Construct a transport over caller-owned streams.
core::Result< core::Unit > start(RequestHandler handler, NotificationHandler notification_handler={}) override
Run the stdio message loop.
void stop() noexcept override
Stop the read loop after the current blocking read completes.
core::Result< core::Unit > send_notification(const protocol::JsonRpcNotification ¬ification) override
Write an outbound server notification to the output stream.
std::optional< protocol::ClientCapabilities > client_capabilities() const override
Return capabilities from the most recent initialize request.
StdioTransport()
Construct a transport using std::cin and std::cout.
Abstract server transport for receiving client JSON-RPC messages.
Definition transport.hpp:99
tl::expected< T, Error > Result
Alias for the SDK result type.
Definition result.hpp:64
Server-side transport abstraction for MCP JSON-RPC traffic.
std::function< core::Result< protocol::JsonRpcResponse >(const protocol::JsonRpcRequest &, const SessionContext &)> RequestHandler
Callback used by transports to dispatch inbound JSON-RPC requests.
Definition transport.hpp:74
std::function< core::Result< core::Unit >(const protocol::JsonRpcNotification &, const SessionContext &)> NotificationHandler
Callback used by transports to dispatch inbound JSON-RPC notifications.
Definition transport.hpp:84
JSON-RPC notification envelope for one-way MCP messages.
Definition types.hpp:137