brainwires_agent_network/
handler.rs1use anyhow::Result;
2use async_trait::async_trait;
3use brainwires_mcp::{CallToolResult, InitializeParams, ServerCapabilities, ServerInfo};
4use serde_json::Value;
5
6use crate::connection::RequestContext;
7use crate::registry::McpToolDef;
8
9#[async_trait]
11pub trait McpHandler: Send + Sync + 'static {
12 fn server_info(&self) -> ServerInfo;
14 fn capabilities(&self) -> ServerCapabilities;
16 fn list_tools(&self) -> Vec<McpToolDef>;
18 async fn call_tool(
20 &self,
21 name: &str,
22 args: Value,
23 ctx: &RequestContext,
24 ) -> Result<CallToolResult>;
25
26 async fn on_initialize(&self, _params: &InitializeParams) -> Result<()> {
28 Ok(())
29 }
30
31 async fn on_shutdown(&self) -> Result<()> {
33 Ok(())
34 }
35}