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}