use anyhow::Result;
use clap::Parser;
use rmcp::ServiceExt;
use tracing_subscriber::{EnvFilter, fmt, prelude::*};
use qmd_mcp::QmdMcpServer;
#[derive(Parser, Debug)]
#[command(name = "qmd-mcp")]
#[command(author, version, about, long_about = None)]
struct Args {
#[arg(short, long)]
verbose: bool,
}
#[tokio::main]
async fn main() -> Result<()> {
let args = Args::parse();
let filter = if args.verbose {
EnvFilter::new("debug")
} else {
EnvFilter::new("warn")
};
tracing_subscriber::registry()
.with(fmt::layer().with_writer(std::io::stderr))
.with(filter)
.init();
let server = QmdMcpServer::new();
tracing::info!("Starting QMD MCP server with stdio transport");
let service = server.serve(rmcp::transport::stdio()).await?;
service.waiting().await?;
Ok(())
}