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_resource_content {
52 ($uri:expr, $mime_type:expr) => {{
53 ToolResponseContent::Resource {
54 resource: mcp_core::types::ResourceContents {
55 uri: $uri,
56 mime_type: Some($mime_type),
57 },
58 }
59 }};
60 ($uri:expr) => {{
61 ToolResponseContent::Resource {
62 resource: ResourceContents {
63 uri: $uri,
64 mime_type: None,
65 },
66 }
67 }};
68}