aether-agent-core 0.7.1

A minimal Rust library for building AI agents with MCP tool integration
Documentation
use crate::mcp::{McpBuilder, ServerFactory};
use futures::FutureExt;
use mcp_utils::client::{InMemoryServerSpec, McpServer, McpTransport, ToolExposure};
use rmcp::{RoleServer, service::DynService};

pub use mcp_utils::testing::{
    CapturedTaskUpdate, CapturedToolCall, FakeMcpServer, FakeMcpState, FakeTool, FakeToolResponse, fake_mcp,
};

pub trait McpBuilderTestExt {
    fn with_fake_mcp(self, name: impl Into<String>, server: FakeMcpServer) -> Self;
}

impl McpBuilderTestExt for McpBuilder {
    fn with_fake_mcp(self, name: impl Into<String>, server: FakeMcpServer) -> Self {
        let name = name.into();
        let factory_name = name.clone();
        let factory: ServerFactory = Box::new(move |_spec, _services| {
            let server = server.clone();
            async move { Box::new(server) as Box<dyn DynService<RoleServer>> }.boxed()
        });
        self.register_in_memory_server(factory_name.clone(), factory).with_servers(vec![McpServer::new(
            name,
            McpTransport::InMemory {
                spec: InMemoryServerSpec { factory: factory_name, args: Vec::new(), input: None },
            },
            ToolExposure::ModelVisible,
        )])
    }
}