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_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}