Skip to main content

agentic_evolve_mcp/types/
notification.rs

1//! MCP notification types for server-to-client and client-to-server notifications.
2
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6/// Progress token — either string or number.
7#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
8#[serde(untagged)]
9pub enum ProgressToken {
10    /// String token.
11    String(String),
12    /// Numeric token.
13    Number(i64),
14}
15
16/// Progress notification params (server -> client).
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(rename_all = "camelCase")]
19pub struct ProgressParams {
20    /// The progress token from the original request.
21    pub progress_token: ProgressToken,
22    /// Current progress value.
23    pub progress: f64,
24    /// Optional total progress value.
25    #[serde(default, skip_serializing_if = "Option::is_none")]
26    pub total: Option<f64>,
27}
28
29/// Log message notification params (server -> client).
30#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct LogMessageParams {
32    /// Log level.
33    pub level: LogLevel,
34    /// Optional logger name.
35    #[serde(default, skip_serializing_if = "Option::is_none")]
36    pub logger: Option<String>,
37    /// Log message data.
38    pub data: Value,
39}
40
41/// Log levels for MCP logging.
42#[derive(Debug, Clone, Serialize, Deserialize)]
43#[serde(rename_all = "lowercase")]
44pub enum LogLevel {
45    /// Debug level.
46    Debug,
47    /// Info level.
48    Info,
49    /// Warning level.
50    Warning,
51    /// Error level.
52    Error,
53}
54
55/// Resource updated notification (server -> client).
56#[derive(Debug, Clone, Serialize, Deserialize)]
57pub struct ResourceUpdatedParams {
58    /// URI of the updated resource.
59    pub uri: String,
60}