cxxmcp 1.1.6
C++ MCP SDK
Loading...
Searching...
No Matches
peer.hpp File Reference

Role-aware peer execution boundaries for MCP client and server SDK users. More...

#include <atomic>
#include <chrono>
#include <condition_variable>
#include <cstdint>
#include <exception>
#include <iostream>
#include <memory>
#include <mutex>
#include <optional>
#include <string>
#include <string_view>
#include <thread>
#include <unordered_map>
#include <utility>
#include <variant>
#include <vector>
#include "cxxmcp/cancellation.hpp"
#include "cxxmcp/client/client.hpp"
#include "cxxmcp/client/session.hpp"
#include "cxxmcp/client/transport_adapter_fwd.hpp"
#include "cxxmcp/config.hpp"
#include "cxxmcp/error.hpp"
#include "cxxmcp/handler.hpp"
#include "cxxmcp/protocol/initialize.hpp"
#include "cxxmcp/roles.hpp"
#include "cxxmcp/server/authoring.hpp"
#include "cxxmcp/server/peer.hpp"
#include "cxxmcp/server/transport_adapter_fwd.hpp"
#include "cxxmcp/transport/process_stdio_transport.hpp"
#include "cxxmcp/transport/stdio_transport.hpp"
#include "cxxmcp/transport/transport.hpp"

Go to the source code of this file.

Classes

struct  mcp::detail::ClientNativeReceiveState
 
class  mcp::Peer< RoleClient >
 Client-side peer boundary for talking to an MCP server. More...
 
class  mcp::Peer< RoleClient >::TaskHandle
 
class  mcp::Peer< RoleClient >::Builder
 Fluent builder for common client peer construction. More...
 
class  mcp::Peer< RoleServer >
 Server-side peer boundary for exposing MCP capabilities. More...
 
class  mcp::Peer< RoleServer >::Builder
 Fluent builder for common server peer construction. More...
 

Typedefs

using mcp::ClientPeer = Peer< RoleClient >
 
using mcp::ServerPeer = Peer< RoleServer >
 

Functions

core::Error mcp::detail::peer_dispatch_error (std::string_view message)
 
core::Error mcp::detail::peer_transport_error (std::string_view message)
 
protocol::ErrorObject mcp::detail::peer_error_object_from_core_error (const core::Error &error)
 
protocol::JsonRpcResponse mcp::detail::peer_error_response (const protocol::JsonRpcRequest &request, const core::Error &error)
 
protocol::JsonRpcResponse mcp::detail::peer_auth_error_response (const protocol::JsonRpcRequest &request, const core::Error &error)
 
core::Error mcp::detail::peer_params_error (core::Error error)
 
protocol::JsonRpcResponse mcp::detail::peer_params_error_response (const protocol::JsonRpcRequest &request, core::Error error)
 
std::string mcp::detail::peer_request_cancellation_key (const protocol::RequestId &request_id)
 
core::Result< protocol::Jsonmcp::detail::peer_require_result_payload (const protocol::JsonRpcResponse &response)
 
template<class Transport , class Dispatch >
core::Result< core::Unitmcp::detail::serve_transport_loop (Transport &transport, CancellationToken cancellation, Dispatch dispatch)
 
void mcp::detail::keep_first_service_error (std::optional< core::Error > &first_error, std::mutex &mutex, core::Error error) noexcept
 
server::SessionContext mcp::detail::context_for_received_server_message (transport::ServerTransport &transport, const server::SessionContext &fallback)
 
std::unique_ptr< client::Transportmcp::detail::make_peer_client_transport_adapter (std::unique_ptr< transport::ClientTransport > &transport)
 
protocol::ClientCapabilities mcp::detail::default_peer_client_capabilities (const std::optional< protocol::ClientCapabilities > &capabilities)
 
protocol::Json mcp::detail::make_peer_initialize_params (std::string client_name, std::string client_version, const std::optional< protocol::ClientCapabilities > &capabilities)
 
core::Result< protocol::Jsonmcp::detail::require_peer_initialize_payload (const protocol::Json &payload)
 
core::Result< core::Unitmcp::detail::validate_peer_server_initialize_params (const protocol::Json &params)
 
protocol::Json mcp::detail::make_peer_server_initialize_result (const server::ServerInfo &info, const protocol::ServerCapabilities &capabilities, std::string_view protocol_version=protocol::McpProtocolVersion)
 

Detailed Description

Role-aware peer execution boundaries for MCP client and server SDK users.

Peer<RoleClient> and Peer<RoleServer> are the SDK-facing MCP execution boundary. They expose role-generic message dispatch loops so Transport<Role> can be the public service boundary while concrete Client and Server types remain lower-level convenience APIs.