mod bridge; mod tools; use anyhow::Result; use clap::Parser; use rmcp::ServiceExt; use tools::AgCanvasServer; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; #[derive(Parser)] #[command( name = "agcanvas-mcp", about = "MCP server bridge for Augmented Canvas" )] struct Cli { #[arg(long, default_value = "9876")] port: u16, } #[tokio::main] async fn main() -> Result<()> { tracing_subscriber::registry() .with(tracing_subscriber::EnvFilter::new( std::env::var("RUST_LOG").unwrap_or_else(|_| "agcanvas_mcp=info".into()), )) .with(tracing_subscriber::fmt::layer().with_writer(std::io::stderr)) .init(); let cli = Cli::parse(); let ws_url = format!("ws://127.0.0.1:{}", cli.port); tracing::info!( "Starting Augmented Canvas MCP server, connecting to {}", ws_url ); let server = AgCanvasServer::new(ws_url); let service = server.serve(rmcp::transport::stdio()).await?; tracing::info!("MCP server running on stdio"); service.waiting().await?; Ok(()) }