use anyhow::Result;
use async_trait::async_trait;
use super::types::{InitializeResult, ListToolsResult, CallToolResult, ServerStatus};
#[derive(Debug, Clone)]
pub struct McpToolInfo {
pub server_name: String,
pub tool_name: String,
pub description: String,
pub input_schema: serde_json::Value,
}
#[async_trait]
pub trait McpClient: Send + Sync {
async fn initialize(&mut self) -> Result<InitializeResult>;
async fn list_tools(&self) -> Result<ListToolsResult>;
async fn call_tool(&self, tool_name: &str, arguments: serde_json::Value) -> Result<CallToolResult>;
fn server_name(&self) -> &str;
fn status(&self) -> ServerStatus;
}