mcp_protocol/types/
prompt.rs1use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct Prompt {
8 pub name: String,
10
11 #[serde(skip_serializing_if = "Option::is_none")]
13 pub description: Option<String>,
14
15 #[serde(skip_serializing_if = "Option::is_none")]
17 pub arguments: Option<Vec<PromptArgument>>,
18
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub annotations: Option<HashMap<String, serde_json::Value>>,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
26pub struct PromptArgument {
27 pub name: String,
29
30 #[serde(skip_serializing_if = "Option::is_none")]
32 pub description: Option<String>,
33
34 #[serde(skip_serializing_if = "Option::is_none")]
36 pub required: Option<bool>,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
41pub struct PromptsListParams {
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub cursor: Option<String>,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct PromptsListResult {
50 pub prompts: Vec<Prompt>,
52
53 #[serde(rename = "nextCursor")]
55 pub next_cursor: String,
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
60pub struct PromptGetParams {
61 pub name: String,
63
64 #[serde(skip_serializing_if = "Option::is_none")]
66 pub arguments: Option<HashMap<String, String>>,
67}
68
69#[derive(Debug, Clone, Serialize, Deserialize)]
71pub struct PromptGetResult {
72 #[serde(skip_serializing_if = "Option::is_none")]
74 pub description: Option<String>,
75
76 pub messages: Vec<PromptMessage>,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize)]
82pub struct PromptMessage {
83 pub role: String,
85
86 pub content: PromptMessageContent,
88}
89
90#[derive(Debug, Clone, Serialize, Deserialize)]
92#[serde(tag = "type")]
93pub enum PromptMessageContent {
94 #[serde(rename = "text")]
96 Text { text: String },
97
98 #[serde(rename = "image")]
100 Image {
101 data: String,
102 #[serde(rename = "mimeType")]
103 mime_type: String
104 },
105
106 #[serde(rename = "resource")]
108 Resource {
109 resource: EmbeddedResource
110 },
111}
112
113#[derive(Debug, Clone, Serialize, Deserialize)]
115pub struct EmbeddedResource {
116 pub uri: String,
118
119 #[serde(rename = "mimeType")]
121 pub mime_type: String,
122
123 #[serde(skip_serializing_if = "Option::is_none")]
125 pub text: Option<String>,
126
127 #[serde(skip_serializing_if = "Option::is_none")]
129 pub data: Option<String>,
130}
131
132#[derive(Debug, Clone, Serialize, Deserialize)]
134pub struct PromptReference {
135 #[serde(rename = "type")]
137 pub ref_type: String,
138
139 pub name: String,
141}