mod client;
mod config;
mod formatters;
mod macros;
mod server;
mod types;
use rmcp::{ServiceExt, transport::stdio};
#[tokio::main]
async fn main() {
let _ = dotenvy::dotenv();
tracing_subscriber::fmt()
.with_env_filter(
tracing_subscriber::EnvFilter::from_default_env()
.add_directive(tracing::Level::INFO.into()),
)
.with_writer(std::io::stderr)
.with_ansi(false)
.init();
let config = match config::Config::from_env() {
Ok(c) => c,
Err(e) => {
eprintln!("Configuration error: {e}");
eprintln!("Please set the required environment variables (CONFLUENCE_HOST, CONFLUENCE_API_TOKEN).");
std::process::exit(1);
}
};
let client = client::ConfluenceClient::new(config);
let server = server::ConfluenceServer::new(client);
eprintln!("Confluence MCP Server running on stdio");
let service = server.serve(stdio()).await.unwrap_or_else(|e| {
eprintln!("Failed to start MCP service: {e}");
std::process::exit(1);
});
service.waiting().await.unwrap_or_else(|e| {
eprintln!("MCP service error: {e}");
std::process::exit(1);
});
}