cxxmcp 1.3.0
C++ MCP SDK
Loading...
Searching...
No Matches
mcp::Peer< RoleClient > Class Reference

Client-side peer boundary for talking to an MCP server. More...

#include <peer.hpp>

Classes

class  Builder
 Fluent builder for common client peer construction. More...
 
class  TaskHandle
 

Public Member Functions

 Peer (std::unique_ptr< client::Transport > transport)
 Creates a client peer from an owned transport.
 
 Peer (std::unique_ptr< transport::ClientTransport > transport)
 Creates a client peer from an owned role-generic transport.
 
 Peer (client::Client client)
 Creates a client peer from an existing client implementation.
 
 CXXMCP_DEPRECATED ("client() is a compatibility escape hatch; prefer ClientPeer methods") client
 
void stop () noexcept
 
core::Result< protocol::Json > initialize (std::string client_name="cxxmcp", std::string client_version="0")
 
core::Result< protocol::Json > initialize (std::string client_name, std::string client_version, RequestOptions options)
 
std::optional< protocol::ServerCapabilities > server_capabilities () const
 
core::Result< core::Unit > notify_initialized ()
 
core::Result< core::Unit > notify_initialized (RequestOptions options)
 
core::Result< core::Unit > notify_cancelled (protocol::RequestId request_id, std::string reason={})
 
core::Result< core::Unit > notify_progress (protocol::ProgressToken progress_token, double progress, std::optional< double > total=std::nullopt, std::string message={})
 
core::Result< core::Unit > notify_roots_list_changed ()
 
core::Result< core::Unit > ping ()
 
std::vector< protocol::Root > list_roots () const
 
Peer & set_roots (std::vector< protocol::Root > roots)
 
Peer & set_capabilities (protocol::ClientCapabilities capabilities)
 
Peer & on_initialized (client::Client::InitializedHandler handler)
 
Peer & on_cancelled (client::Client::CancelledHandler handler)
 
Peer & on_logging_message (client::Client::LoggingMessageHandler handler)
 
Peer & on_tool_list_changed (client::Client::ListChangedHandler handler)
 
Peer & on_prompt_list_changed (client::Client::ListChangedHandler handler)
 
Peer & on_resource_list_changed (client::Client::ListChangedHandler handler)
 
Peer & on_resource_updated (client::Client::ResourceUpdatedHandler handler)
 
Peer & on_progress (client::Client::ProgressHandler handler)
 
Peer & on_elicitation_complete (client::Client::ElicitationCompleteHandler handler)
 
Peer & on_task_status (client::Client::TaskStatusHandler handler)
 
Peer & on_roots_list_changed (client::Client::ListChangedHandler handler)
 
Peer & on_list_roots_request (client::Client::ListRootsRequestHandler handler)
 
Peer & on_list_roots_request (client::Client::RootsListRequestCancellationHandler handler)
 
Peer & on_create_message_request (client::Client::CreateMessageRequestHandler handler)
 
Peer & on_create_message_request (client::Client::SamplingRequestCancellationHandler handler)
 
Peer & on_create_elicitation_request (client::Client::CreateElicitationRequestHandler handler)
 
Peer & on_create_elicitation_request (client::Client::ElicitationRequestCancellationHandler handler)
 
Peer & on_custom_request (client::Client::CustomRequestHandler handler)
 
Peer & on_custom_request (client::Client::CustomRequestCancellationHandler handler)
 
Peer & on_raw_notification (client::Client::RawNotificationHandler handler)
 
Peer & set_handler (const client::ClientHandler &handler)
 
Peer & set_handler (const client::ClientHandlerInterface &handler)
 
core::Result< std::vector< protocol::ToolDefinition > > list_tools ()
 
core::Result< protocol::ToolsListResult > list_tools_page (const protocol::PaginatedRequestParams &params={})
 
core::Result< std::vector< protocol::ToolDefinition > > list_all_tools ()
 
core::Result< protocol::ToolResult > call_tool (const protocol::ToolCall &call)
 
core::Result< protocol::CreateTaskResult > call_tool_task (const protocol::ToolCall &call)
 
core::Result< TaskHandle > call_tool_task_handle (const protocol::ToolCall &call)
 
core::Result< protocol::ToolResult > call_tool (std::string_view name, const protocol::Json &arguments=protocol::Json::object())
 
core::Result< std::vector< protocol::Prompt > > list_prompts ()
 
core::Result< protocol::PromptsListResult > list_prompts_page (const protocol::PaginatedRequestParams &params={})
 
core::Result< std::vector< protocol::Prompt > > list_all_prompts ()
 
core::Result< protocol::PromptsGetResult > get_prompt (const protocol::PromptsGetParams &params)
 
core::Result< protocol::PromptsGetResult > get_prompt (std::string_view name, const protocol::Json &arguments=protocol::Json::object())
 
core::Result< std::vector< protocol::Resource > > list_resources ()
 
core::Result< protocol::ResourcesListResult > list_resources_page (const protocol::PaginatedRequestParams &params={})
 
core::Result< std::vector< protocol::Resource > > list_all_resources ()
 
core::Result< std::vector< protocol::ResourceTemplate > > list_resource_templates ()
 
core::Result< protocol::ResourceTemplatesListResult > list_resource_templates_page (const protocol::PaginatedRequestParams &params={})
 
core::Result< std::vector< protocol::ResourceTemplate > > list_all_resource_templates ()
 
core::Result< protocol::ResourcesReadResult > read_resource (const protocol::ResourcesReadParams &params)
 
core::Result< protocol::ResourcesReadResult > read_resource (std::string_view uri)
 
core::Result< protocol::CompleteResult > complete (const protocol::CompleteParams &request)
 
core::Result< protocol::Json > complete (const protocol::Json &request)
 
core::Result< protocol::CompletionResult > complete_prompt_argument (std::string_view prompt_name, std::string_view argument_name, std::string current_value, protocol::Json context=protocol::Json::object())
 
core::Result< protocol::CompletionResult > complete_resource_argument (std::string_view uri_template, std::string_view argument_name, std::string current_value, protocol::Json context=protocol::Json::object())
 
core::Result< std::vector< std::string > > complete_prompt_simple (std::string_view prompt_name, std::string_view argument_name, std::string current_value, protocol::Json context=protocol::Json::object())
 
core::Result< std::vector< std::string > > complete_resource_simple (std::string_view uri_template, std::string_view argument_name, std::string current_value, protocol::Json context=protocol::Json::object())
 
core::Result< protocol::CreateMessageResult > create_message (const protocol::CreateMessageParams &request)
 
core::Result< protocol::Json > create_message (const protocol::Json &request)
 
core::Result< protocol::CreateElicitationResult > create_elicitation (const protocol::CreateElicitationRequestParam &request)
 
core::Result< protocol::Json > create_elicitation (const protocol::Json &request)
 
core::Result< std::vector< protocol::Task > > list_tasks ()
 
core::Result< protocol::TaskListResult > list_tasks_page (const protocol::TaskListParams &params={})
 
core::Result< std::vector< protocol::Task > > list_all_tasks ()
 
core::Result< protocol::Task > get_task (std::string_view task_id)
 
core::Result< protocol::Task > cancel_task (std::string_view task_id)
 
core::Result< protocol::Json > task_result (std::string_view task_id)
 
core::Result< core::Unit > set_level (std::string_view level)
 
core::Result< core::Unit > subscribe (std::string_view uri)
 
core::Result< core::Unit > unsubscribe (std::string_view uri)
 
core::Result< protocol::Json > raw_request (const protocol::JsonRpcRequest &request)
 
RequestHandle< protocol::Json > request_async (std::string method, protocol::Json params=protocol::Json::object(), RequestOptions options={})
 
template<class T , class Parser >
RequestHandle< T > request_async (std::string method, protocol::Json params, Parser parser, RequestOptions options={})
 
RequestHandle< std::vector< protocol::ToolDefinition > > list_tools_async (RequestOptions options={})
 
RequestHandle< std::vector< protocol::Prompt > > list_prompts_async (RequestOptions options={})
 
RequestHandle< std::vector< protocol::Resource > > list_resources_async (RequestOptions options={})
 
RequestHandle< std::vector< protocol::ResourceTemplate > > list_resource_templates_async (RequestOptions options={})
 
RequestHandle< protocol::ToolResult > call_tool_async (const protocol::ToolCall &call, RequestOptions options={})
 
RequestHandle< protocol::ToolResult > call_tool_async (std::string_view name, const protocol::Json &arguments=protocol::Json::object(), RequestOptions options={})
 
RequestHandle< protocol::CreateTaskResult > call_tool_task_async (const protocol::ToolCall &call, RequestOptions options={})
 
RequestHandle< protocol::PromptsGetResult > get_prompt_async (const protocol::PromptsGetParams &params, RequestOptions options={})
 
RequestHandle< protocol::PromptsGetResult > get_prompt_async (std::string_view name, const protocol::Json &arguments=protocol::Json::object(), RequestOptions options={})
 
RequestHandle< protocol::ResourcesReadResult > read_resource_async (const protocol::ResourcesReadParams &params, RequestOptions options={})
 
RequestHandle< protocol::ResourcesReadResult > read_resource_async (std::string_view uri, RequestOptions options={})
 
RequestHandle< protocol::CompleteResult > complete_async (const protocol::CompleteParams &request, RequestOptions options={})
 
RequestHandle< protocol::Json > complete_async (const protocol::Json &request, RequestOptions options={})
 
RequestHandle< protocol::CreateMessageResult > create_message_async (const protocol::CreateMessageParams &request, RequestOptions options={})
 
RequestHandle< protocol::Json > create_message_async (const protocol::Json &request, RequestOptions options={})
 
RequestHandle< protocol::CreateElicitationResult > create_elicitation_async (const protocol::CreateElicitationRequestParam &request, RequestOptions options={})
 
RequestHandle< protocol::Json > create_elicitation_async (const protocol::Json &request, RequestOptions options={})
 
RequestHandle< std::vector< protocol::Task > > list_tasks_async (RequestOptions options={})
 
RequestHandle< protocol::Task > get_task_async (const protocol::TaskGetParams &request, RequestOptions options={})
 
RequestHandle< protocol::Task > get_task_async (std::string_view task_id, RequestOptions options={})
 
RequestHandle< protocol::Task > cancel_task_async (const protocol::TaskCancelParams &request, RequestOptions options={})
 
RequestHandle< protocol::Task > cancel_task_async (std::string_view task_id, RequestOptions options={})
 
RequestHandle< protocol::Json > task_result_async (const protocol::TaskResultParams &request, RequestOptions options={})
 
RequestHandle< protocol::Json > task_result_async (std::string_view task_id, RequestOptions options={})
 
core::Result< core::Unit > raw_notification (const protocol::JsonRpcNotification &notification)
 
core::Result< std::optional< protocol::JsonRpcMessage > > dispatch_message (const protocol::JsonRpcMessage &message)
 Dispatches one inbound role-generic transport message.
 
core::Result< core::Unit > serve_transport (transport::ClientTransport &transport, CancellationToken cancellation=CancellationToken::none())
 Runs a sequential receive loop over a role-generic client transport.
 

Static Public Member Functions

static Peer connect_stdio (client::Client::StdioEndpoint endpoint)
 
static Builder builder ()
 Starts a fluent builder for common client peer construction.
 

Detailed Description

Client-side peer boundary for talking to an MCP server.

When constructed with a role-generic ClientTransport, request/response helpers serialize native transport access. This preserves the transport contract that receive() is single-consumer and avoids competing receive loops until a dedicated client receive pump is introduced.

Member Function Documentation

◆ dispatch_message()

core::Result< std::optional< protocol::JsonRpcMessage > > mcp::Peer< RoleClient >::dispatch_message ( const protocol::JsonRpcMessage &  message)
inline

Dispatches one inbound role-generic transport message.

Requests produce a JSON-RPC response message, notifications produce no outbound message, and standalone responses remain the responsibility of request-handle correlation paths.


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