Skip to main content

turbomcp_protocol/context/
capabilities.rs

1//! Communication-direction enums used by the bidirectional MCP flow.
2//!
3//! The old `ServerToClientRequests` trait was deleted in v3.2: no crate in
4//! the workspace implemented it, and its job (sampling / elicitation /
5//! notifications) is now handled by the unified session model — see
6//! [`turbomcp_core::McpSession`] plus the `sample()` / `elicit_form()` /
7//! `elicit_url()` / `notify_client()` methods on
8//! [`turbomcp_core::RequestContext`].
9//!
10//! The supporting enums in this module remain useful as public vocabulary
11//! for describing request/response direction in auditing and analytics.
12
13use serde::{Deserialize, Serialize};
14
15/// Communication direction for bidirectional requests.
16#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
17pub enum CommunicationDirection {
18    /// Client to server.
19    ClientToServer,
20    /// Server to client.
21    ServerToClient,
22}
23
24/// Communication initiator for tracking request origins.
25#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
26pub enum CommunicationInitiator {
27    /// Client initiated the request.
28    Client,
29    /// Server initiated the request.
30    Server,
31}
32
33/// Types of server-initiated requests.
34#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
35pub enum ServerInitiatedType {
36    /// Sampling / message creation request.
37    Sampling,
38    /// Elicitation request for user input.
39    Elicitation,
40    /// Roots listing request.
41    Roots,
42    /// Ping / health check request.
43    Ping,
44}
45
46/// Origin of a ping request.
47#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
48pub enum PingOrigin {
49    /// Client initiated ping.
50    Client,
51    /// Server initiated ping.
52    Server,
53}