mcp_protocol/messages/
lifecycle.rs1use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4
5use crate::types::{ClientInfo, ServerInfo};
6
7#[derive(Debug, Clone, Serialize, Deserialize, Default)]
9pub struct ClientCapabilities {
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub roots: Option<HashMap<String, bool>>,
12
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub sampling: Option<HashMap<String, serde_json::Value>>,
15
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub experimental: Option<HashMap<String, serde_json::Value>>,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize, Default)]
22pub struct ServerCapabilities {
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub logging: Option<HashMap<String, serde_json::Value>>,
25
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub prompts: Option<HashMap<String, bool>>,
28
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub resources: Option<HashMap<String, bool>>,
31
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub tools: Option<HashMap<String, bool>>,
34
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub experimental: Option<HashMap<String, serde_json::Value>>,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
41pub struct InitializeParams {
42 #[serde(rename = "protocolVersion")]
43 pub protocol_version: String,
44
45 pub capabilities: ClientCapabilities,
46
47 #[serde(rename = "clientInfo")]
48 pub client_info: ClientInfo,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
53pub struct InitializeResult {
54 #[serde(rename = "protocolVersion")]
55 pub protocol_version: String,
56
57 pub capabilities: ServerCapabilities,
58
59 #[serde(rename = "serverInfo")]
60 pub server_info: ServerInfo,
61
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub instructions: Option<String>,
64}