1use indexmap::IndexMap;
4use schemars::JsonSchema;
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
9#[schemars(rename = "mcp.InitializeResult")]
10pub struct InitializeResult {
11 #[serde(rename = "protocolVersion")]
13 pub protocol_version: String,
14 pub capabilities: ServerCapabilities,
16 #[serde(rename = "serverInfo")]
18 pub server_info: Implementation,
19 #[serde(skip_serializing_if = "Option::is_none")]
21 #[schemars(extend("omitempty" = true))]
22 pub instructions: Option<String>,
23 #[serde(skip_serializing_if = "Option::is_none")]
25 #[schemars(extend("omitempty" = true))]
26 pub _meta: Option<IndexMap<String, serde_json::Value>>,
27}
28
29#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
31#[schemars(rename = "mcp.Implementation")]
32pub struct Implementation {
33 pub name: String,
35 #[serde(skip_serializing_if = "Option::is_none")]
37 #[schemars(extend("omitempty" = true))]
38 pub title: Option<String>,
39 pub version: String,
41 #[serde(skip_serializing_if = "Option::is_none")]
43 #[schemars(extend("omitempty" = true))]
44 #[serde(rename = "websiteUrl")]
45 pub website_url: Option<String>,
46 #[serde(skip_serializing_if = "Option::is_none")]
48 #[schemars(extend("omitempty" = true))]
49 pub description: Option<String>,
50 #[serde(skip_serializing_if = "Option::is_none")]
52 #[schemars(extend("omitempty" = true))]
53 pub icons: Option<Vec<super::shared::Icon>>,
54}
55
56#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
58#[schemars(rename = "mcp.ServerCapabilities")]
59pub struct ServerCapabilities {
60 #[serde(skip_serializing_if = "Option::is_none")]
62 #[schemars(extend("omitempty" = true))]
63 pub experimental: Option<IndexMap<String, serde_json::Value>>,
64 #[serde(skip_serializing_if = "Option::is_none")]
66 #[schemars(extend("omitempty" = true))]
67 pub logging: Option<LoggingCapability>,
68 #[serde(skip_serializing_if = "Option::is_none")]
70 #[schemars(extend("omitempty" = true))]
71 pub completions: Option<CompletionsCapability>,
72 #[serde(skip_serializing_if = "Option::is_none")]
74 #[schemars(extend("omitempty" = true))]
75 pub prompts: Option<PromptsCapability>,
76 #[serde(skip_serializing_if = "Option::is_none")]
78 #[schemars(extend("omitempty" = true))]
79 pub resources: Option<ResourcesCapability>,
80 #[serde(skip_serializing_if = "Option::is_none")]
82 #[schemars(extend("omitempty" = true))]
83 pub tools: Option<ToolsCapability>,
84 #[serde(skip_serializing_if = "Option::is_none")]
86 #[schemars(extend("omitempty" = true))]
87 pub tasks: Option<TasksCapability>,
88}
89
90#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize, JsonSchema)]
92#[schemars(rename = "mcp.PromptsCapability")]
93pub struct PromptsCapability {
94 #[serde(skip_serializing_if = "Option::is_none")]
96 #[schemars(extend("omitempty" = true))]
97 #[serde(rename = "listChanged")]
98 pub list_changed: Option<bool>,
99}
100
101#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize, JsonSchema)]
103#[schemars(rename = "mcp.ResourcesCapability")]
104pub struct ResourcesCapability {
105 #[serde(skip_serializing_if = "Option::is_none")]
107 #[schemars(extend("omitempty" = true))]
108 pub subscribe: Option<bool>,
109 #[serde(skip_serializing_if = "Option::is_none")]
111 #[schemars(extend("omitempty" = true))]
112 #[serde(rename = "listChanged")]
113 pub list_changed: Option<bool>,
114}
115
116#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize, JsonSchema)]
118#[schemars(rename = "mcp.ToolsCapability")]
119pub struct ToolsCapability {
120 #[serde(skip_serializing_if = "Option::is_none")]
122 #[schemars(extend("omitempty" = true))]
123 #[serde(rename = "listChanged")]
124 pub list_changed: Option<bool>,
125}
126
127#[derive(
130 Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema,
131)]
132#[schemars(rename = "mcp.LoggingCapability", extend("additionalProperties" = false))]
133pub struct LoggingCapability {}
134
135#[derive(
138 Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema,
139)]
140#[schemars(rename = "mcp.CompletionsCapability", extend("additionalProperties" = false))]
141pub struct CompletionsCapability {}
142
143#[derive(
145 Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema,
146)]
147#[schemars(rename = "mcp.TasksCapability")]
148pub struct TasksCapability {
149 #[serde(skip_serializing_if = "Option::is_none")]
151 #[schemars(extend("omitempty" = true))]
152 pub list: Option<TasksListCapability>,
153 #[serde(skip_serializing_if = "Option::is_none")]
155 #[schemars(extend("omitempty" = true))]
156 pub cancel: Option<TasksCancelCapability>,
157 #[serde(skip_serializing_if = "Option::is_none")]
159 #[schemars(extend("omitempty" = true))]
160 pub requests: Option<TasksRequestsCapability>,
161}
162
163#[derive(
165 Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema,
166)]
167#[schemars(rename = "mcp.TasksListCapability", extend("additionalProperties" = false))]
168pub struct TasksListCapability {}
169
170#[derive(
172 Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema,
173)]
174#[schemars(rename = "mcp.TasksCancelCapability", extend("additionalProperties" = false))]
175pub struct TasksCancelCapability {}
176
177#[derive(
179 Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema,
180)]
181#[schemars(rename = "mcp.TasksRequestsCapability")]
182pub struct TasksRequestsCapability {
183 #[serde(skip_serializing_if = "Option::is_none")]
185 #[schemars(extend("omitempty" = true))]
186 pub tools: Option<TasksToolsCapability>,
187}
188
189#[derive(
191 Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema,
192)]
193#[schemars(rename = "mcp.TasksToolsCapability")]
194pub struct TasksToolsCapability {
195 #[serde(skip_serializing_if = "Option::is_none")]
197 #[schemars(extend("omitempty" = true))]
198 pub call: Option<TasksToolsCallCapability>,
199}
200
201#[derive(
203 Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema,
204)]
205#[schemars(rename = "mcp.TasksToolsCallCapability", extend("additionalProperties" = false))]
206pub struct TasksToolsCallCapability {}