use agentic::mcp::client::{Client, ClientStdioTransportConfig};
use agentic::mcp::{CallToolParams, GetPromptParams};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::WARN)
.without_time()
.init();
let mut client = Client::new("Demo Client", "0.1.0");
let transport_config = ClientStdioTransportConfig::new(
"npx",
["-y", "@modelcontextprotocol/server-everything"],
None,
);
client.connect(transport_config).await?;
let params = CallToolParams::new("echo").append_argument("message", "Hello Live Coding");
let res = client.send_request(params).await?;
println!("\nCalling echo tool:\n{res:#?}");
let params = CallToolParams::new("add")
.append_argument("a", 1)
.append_argument("b", 2.5);
let res = client.send_request(params).await?;
println!("\nCalling add tool:\n{res:#?}");
let params = GetPromptParams::new("simple_prompt");
let res = client.send_request(params).await?;
println!("\nCalling get_prompt:\n{res:#?}");
Ok(())
}