mcp_protocol/types/completion/
mod.rs1use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
6#[serde(tag = "type")]
7pub enum CompletionReference {
8 #[serde(rename = "ref/prompt")]
10 Prompt {
11 name: String,
13 },
14 #[serde(rename = "ref/resource")]
16 Resource {
17 uri: String,
19 },
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct CompletionArgument {
25 pub name: String,
27
28 pub value: String,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct CompleteRequest {
35 pub r#ref: CompletionReference,
36 pub argument: CompletionArgument,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
41pub struct CompletionResult {
42 pub values: Vec<String>,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub total: Option<usize>,
45 pub has_more: bool,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct CompleteResponse {
51 pub completion: CompletionResult,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
57pub struct CompletionCompleteParams {
58 pub r#ref: CompletionReference,
60
61 pub argument: CompletionArgument,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
68pub struct CompletionCompleteResult {
69 pub completion: CompletionInfo,
71}
72
73#[derive(Debug, Clone, Serialize, Deserialize)]
76pub struct CompletionInfo {
77 pub values: Vec<String>,
79
80 #[serde(skip_serializing_if = "Option::is_none")]
82 pub total: Option<u32>,
83
84 #[serde(rename = "hasMore")]
86 pub has_more: bool,
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize)]
93pub struct CompletionItem {
94 pub label: String,
96
97 #[serde(skip_serializing_if = "Option::is_none")]
99 pub detail: Option<String>,
100
101 #[serde(skip_serializing_if = "Option::is_none")]
103 pub documentation: Option<String>,
104}