use crate::*;
use std::sync::Arc;
pub struct ServerBuilder {
name: String,
version: String,
}
impl ServerBuilder {
pub fn new(name: impl Into<String>) -> Self {
Self {
name: name.into(),
version: "0.1.0".to_string(),
}
}
pub fn version(mut self, version: impl Into<String>) -> Self {
self.version = version.into();
self
}
pub fn build(self) -> McpServer {
McpServer::new(self.name, self.version)
}
}
pub fn tool<F>(f: F) -> ToolHandler
where
F: Fn(Value) -> Result<ToolResult> + Send + Sync + 'static,
{
Arc::new(f)
}
pub fn text_response(text: impl Into<String>) -> ToolResult {
ToolResult {
content: vec![ContentItem::Text {
text: text.into(),
}],
is_error: None,
}
}
pub fn error_response(error: impl Into<String>) -> ToolResult {
ToolResult {
content: vec![ContentItem::Text {
text: error.into(),
}],
is_error: Some(true),
}
}