ultrafast_mcp_core/protocol/
metadata.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct ImplementationMetadata {
7 pub name: String,
9 pub version: String,
11 #[serde(flatten)]
13 pub additional: HashMap<String, serde_json::Value>,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct ProtocolMetadata {
19 pub version: String,
21 #[serde(skip_serializing_if = "Option::is_none")]
23 pub features: Option<Vec<String>>,
24 #[serde(flatten)]
26 pub additional: HashMap<String, serde_json::Value>,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct RequestMetadata {
32 #[serde(skip_serializing_if = "Option::is_none")]
34 pub request_id: Option<String>,
35 #[serde(skip_serializing_if = "Option::is_none")]
37 pub timestamp: Option<String>,
38 #[serde(skip_serializing_if = "Option::is_none")]
40 pub user_agent: Option<String>,
41 #[serde(flatten)]
43 pub additional: HashMap<String, serde_json::Value>,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
48pub struct ResponseMetadata {
49 #[serde(skip_serializing_if = "Option::is_none")]
51 pub processing_time_ms: Option<u64>,
52 #[serde(skip_serializing_if = "Option::is_none")]
54 pub server: Option<ImplementationMetadata>,
55 #[serde(flatten)]
57 pub additional: HashMap<String, serde_json::Value>,
58}