mcp_protocol/types/resource/
mod.rs1use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct Resource {
8 pub uri: String,
10
11 pub name: String,
13
14 #[serde(skip_serializing_if = "Option::is_none")]
16 pub description: Option<String>,
17
18 #[serde(rename = "mimeType")]
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub mime_type: Option<String>,
22
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub size: Option<u64>,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
29 pub annotations: Option<HashMap<String, serde_json::Value>>,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct ResourceContent {
35 pub uri: String,
37
38 #[serde(rename = "mimeType")]
40 pub mime_type: String,
41
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub text: Option<String>,
45
46 #[serde(skip_serializing_if = "Option::is_none")]
48 pub blob: Option<String>,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
53pub struct ResourcesListParams {
54 #[serde(skip_serializing_if = "Option::is_none")]
56 pub cursor: Option<String>,
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct ResourcesListResult {
62 pub resources: Vec<Resource>,
64
65 #[serde(rename = "nextCursor")]
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub next_cursor: Option<String>,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
73pub struct ResourceReadParams {
74 pub uri: String,
76}
77
78#[derive(Debug, Clone, Serialize, Deserialize)]
80pub struct ResourceReadResult {
81 pub contents: Vec<ResourceContent>,
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize)]
87pub struct ResourceSubscribeParams {
88 pub uri: String,
90}
91
92#[derive(Debug, Clone, Serialize, Deserialize)]
94pub struct ResourceUpdatedParams {
95 pub uri: String,
97}
98
99#[derive(Debug, Clone, Serialize, Deserialize)]
101pub struct ResourceTemplate {
102 #[serde(rename = "uriTemplate")]
104 pub uri_template: String,
105
106 pub name: String,
108
109 #[serde(skip_serializing_if = "Option::is_none")]
111 pub description: Option<String>,
112
113 #[serde(rename = "mimeType")]
115 #[serde(skip_serializing_if = "Option::is_none")]
116 pub mime_type: Option<String>,
117
118 #[serde(skip_serializing_if = "Option::is_none")]
120 pub annotations: Option<HashMap<String, serde_json::Value>>,
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize)]
125pub struct ResourceTemplatesListParams {
126 #[serde(skip_serializing_if = "Option::is_none")]
128 pub cursor: Option<String>,
129}
130
131#[derive(Debug, Clone, Serialize, Deserialize)]
133pub struct ResourceTemplatesListResult {
134 #[serde(rename = "resourceTemplates")]
136 pub resource_templates: Vec<ResourceTemplate>,
137
138 #[serde(rename = "nextCursor")]
140 #[serde(skip_serializing_if = "Option::is_none")]
141 pub next_cursor: Option<String>,
142}
143
144#[derive(Debug, Clone, Serialize, Deserialize)]
147pub struct ResourceTemplateCompletionParams {
148 #[serde(rename = "uriTemplate")]
150 pub uri_template: String,
151
152 pub parameter: String,
154
155 #[serde(skip_serializing_if = "Option::is_none")]
157 pub value: Option<String>,
158}
159
160#[derive(Debug, Clone, Serialize, Deserialize)]
163pub struct ResourceTemplateCompletionResult {
164 pub items: Vec<super::completion::CompletionItem>,
166}
167
168#[derive(Debug, Clone, Serialize, Deserialize)]
170pub struct ResourceUnsubscribeParams {
171 pub uri: String,
173}