mcp_core/
lib.rs

1pub mod client;
2pub mod protocol;
3pub mod server;
4pub mod tools;
5pub mod transport;
6pub mod types;
7
8#[macro_export]
9macro_rules! tool_error_response {
10    ($e:expr) => {{
11        let error_message = $e.to_string();
12        CallToolResponse {
13            content: vec![ToolResponseContent::Text {
14                text: error_message,
15            }],
16            is_error: Some(true),
17            meta: None,
18        }
19    }};
20}
21
22#[macro_export]
23macro_rules! tool_text_response {
24    ($e:expr) => {{
25        CallToolResponse {
26            content: vec![ToolResponseContent::Text { text: $e }],
27            is_error: None,
28            meta: None,
29        }
30    }};
31}
32
33#[macro_export]
34macro_rules! tool_text_content {
35    ($e:expr) => {{
36        ToolResponseContent::Text { text: $e }
37    }};
38}
39
40#[macro_export]
41macro_rules! tool_image_content {
42    ($data:expr, $mime_type:expr) => {{
43        ToolResponseContent::Image {
44            data: $data,
45            mime_type: $mime_type,
46        }
47    }};
48}
49
50#[macro_export]
51macro_rules! tool_audio_content {
52    ($data:expr, $mime_type:expr) => {{
53        ToolResponseContent::Audio {
54            data: $data,
55            mime_type: $mime_type,
56        }
57    }};
58}
59
60#[macro_export]
61macro_rules! tool_resource_content {
62    ($uri:expr, $mime_type:expr) => {{
63        ToolResponseContent::Resource {
64            resource: mcp_core::types::ResourceContents {
65                uri: $uri,
66                mime_type: Some($mime_type),
67            },
68        }
69    }};
70    ($uri:expr) => {{
71        ToolResponseContent::Resource {
72            resource: ResourceContents {
73                uri: $uri,
74                mime_type: None,
75            },
76        }
77    }};
78}