194c44c
use rmcp::model::{CallToolResult, ContentBlock};
pub fn tool_ok<T: serde::Serialize>(value: &T) -> CallToolResult {
match serde_json::to_string_pretty(value) {
Ok(text) => CallToolResult::success(vec![ContentBlock::text(text)]),
Err(error) => tool_message(format!("序列化结果失败: {error}")),
}
}
pub fn tool_done() -> CallToolResult {
tool_ok(&serde_json::json!({ "ok": true }))
}
pub fn tool_message(message: impl Into<String>) -> CallToolResult {
CallToolResult::error(vec![ContentBlock::text(message.into())])
}
pub fn tool_error(error: impl std::fmt::Display) -> CallToolResult {
tool_message(error.to_string())
}
pub fn write_denied() -> CallToolResult {
tool_message("当前访问密钥只有只读权限,无法执行写操作")
}