Skip to main content

syslog_server_mcp/
lib.rs

1//! syslog-server-mcp library — see https://github.com/darylmcd/SysLog-Server-MCP
2
3#[cfg(feature = "http")]
4pub mod auth_http;
5pub mod cli;
6pub mod config;
7pub mod error;
8#[cfg(feature = "http")]
9pub mod metrics;
10pub mod notifier;
11pub mod probe;
12pub mod rest_client;
13pub mod tools;
14pub mod transport;
15
16use crate::cli::Command;
17use crate::config::Config;
18use crate::error::Result;
19
20pub async fn run(cli: cli::Cli) -> Result<()> {
21    tracing_subscriber::fmt()
22        .with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
23        .with_writer(std::io::stderr)
24        .init();
25
26    let Command::Serve(args) = cli.command;
27    let config = Config::from_args(&args)?;
28
29    if config.http_addr.is_some() {
30        #[cfg(feature = "http")]
31        return transport::http::serve(config).await;
32        #[cfg(not(feature = "http"))]
33        return Err(error::Error::Config(
34            "HTTP mode requires building with --features http".into(),
35        ));
36    }
37
38    transport::stdio::serve(config).await
39}