mcp_core_rs/protocol/
result.rs

1use 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 {}