atomcode_core/mcp/
client.rs1use anyhow::Result;
4use async_trait::async_trait;
5
6use super::types::{InitializeResult, ListToolsResult, CallToolResult, ServerStatus};
7
8#[derive(Debug, Clone)]
10pub struct McpToolInfo {
11 pub server_name: String,
12 pub tool_name: String,
13 pub description: String,
14 pub input_schema: serde_json::Value,
15}
16
17#[async_trait]
19pub trait McpClient: Send + Sync {
20 async fn initialize(&mut self) -> Result<InitializeResult>;
22
23 async fn list_tools(&self) -> Result<ListToolsResult>;
25
26 async fn call_tool(&self, tool_name: &str, arguments: serde_json::Value) -> Result<CallToolResult>;
28
29 fn server_name(&self) -> &str;
31
32 fn status(&self) -> ServerStatus;
34}