turbomcp_protocol/types/
logging.rs

1//! Logging and progress tracking types
2//!
3//! This module contains types for MCP logging and progress notifications.
4
5use serde::{Deserialize, Serialize};
6
7use super::core::ProgressToken;
8
9/// Log level enumeration
10#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
11#[serde(rename_all = "lowercase")]
12pub enum LogLevel {
13    /// Debug level
14    Debug,
15    /// Info level
16    Info,
17    /// Notice level
18    Notice,
19    /// Warning level
20    Warning,
21    /// Error level
22    Error,
23    /// Critical level
24    Critical,
25    /// Alert level
26    Alert,
27    /// Emergency level
28    Emergency,
29}
30
31/// Set logging level request
32#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct SetLevelRequest {
34    /// Log level to set
35    pub level: LogLevel,
36}
37
38/// Set logging level result (empty)
39#[derive(Debug, Clone, Serialize, Deserialize)]
40pub struct SetLevelResult;
41
42/// Logging notification
43#[derive(Debug, Clone, Serialize, Deserialize)]
44pub struct LoggingNotification {
45    /// Log level
46    pub level: LogLevel,
47    /// Log message
48    pub data: serde_json::Value,
49    /// Optional logger name
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub logger: Option<String>,
52}
53
54/// Progress notification per MCP 2025-06-18 specification
55#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct ProgressNotification {
57    /// Progress token from the original request
58    #[serde(rename = "progressToken")]
59    pub progress_token: ProgressToken,
60    /// Current progress value (MUST increase with each notification)
61    pub progress: f64,
62    /// Total value (MAY be floating point, omit if unknown)
63    #[serde(skip_serializing_if = "Option::is_none")]
64    pub total: Option<f64>,
65    /// Human-readable progress message (SHOULD provide relevant information)
66    #[serde(skip_serializing_if = "Option::is_none")]
67    pub message: Option<String>,
68}
69
70// Note: CancelledNotification moved to requests.rs to avoid duplicate exports