mcp_core_rs/protocol/
result.rs1use serde::{Deserialize, Serialize};
2
3use crate::{
4 Resource, ResourceContents, Tool,
5 content::Content,
6 prompt::{Prompt, PromptMessage},
7 protocol::capabilities::ServerCapabilities,
8};
9
10#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
11#[serde(rename_all = "camelCase")]
12pub struct InitializeResult {
13 pub protocol_version: String,
14 pub capabilities: ServerCapabilities,
15 pub server_info: Implementation,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub instructions: Option<String>,
18}
19
20#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
21pub struct Implementation {
22 pub name: String,
23 pub version: String,
24}
25
26#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
27#[serde(rename_all = "camelCase")]
28pub struct ListResourcesResult {
29 pub resources: Vec<Resource>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub next_cursor: Option<String>,
32}
33
34#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
35pub struct ReadResourceResult {
36 pub contents: Vec<ResourceContents>,
37}
38
39#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
40#[serde(rename_all = "camelCase")]
41pub struct ListToolsResult {
42 pub tools: Vec<Tool>,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub next_cursor: Option<String>,
45}
46
47#[derive(Debug, Serialize, Deserialize)]
48#[serde(rename_all = "camelCase")]
49pub struct CallToolResult {
50 pub content: Vec<Content>,
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub is_error: Option<bool>,
53}
54
55#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
56pub struct ListPromptsResult {
57 pub prompts: Vec<Prompt>,
58}
59
60#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
61pub struct GetPromptResult {
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub description: Option<String>,
64 pub messages: Vec<PromptMessage>,
65}
66
67#[derive(Debug, Serialize, Deserialize)]
68pub struct EmptyResult {}