mcp_runner/server/
mod.rs

1/// Server management module for MCP Runner.
2///
3/// This module handles the lifecycle, monitoring, and process management of MCP servers.
4/// It provides functionality to start, stop, and monitor the health of MCP server processes.
5/// All public components are instrumented with `tracing` spans.
6///
7/// # Components
8///
9/// * `lifecycle` - Manages server lifecycle events and statuses
10/// * `monitor` - Health monitoring and automatic recovery of servers  
11/// * `process` - Core process management for server instances
12///
13/// # Examples
14///
15/// Managing server lifecycle:
16///
17/// ```no_run
18/// use mcp_runner::server::{ServerLifecycleManager, ServerLifecycleEvent, ServerProcess};
19/// use mcp_runner::config::ServerConfig;
20/// use std::sync::Arc;
21/// use std::collections::HashMap;
22///
23/// // Create a server process to get a valid ServerId
24/// let config = ServerConfig {
25///     command: "sample".to_string(),
26///     args: vec![],
27///     env: HashMap::new(),
28/// };
29/// let server_process = ServerProcess::new("fetch-server".to_string(), config);
30/// let server_id = server_process.id();
31/// let server_name = "fetch-server".to_string();
32///
33/// // Create lifecycle manager and record an event
34/// let manager = Arc::new(ServerLifecycleManager::new());
35/// manager.record_event(
36///     server_id,
37///     server_name,
38///     ServerLifecycleEvent::Started,
39///     Some("Server started successfully".to_string())
40/// ).unwrap();
41/// ```
42///
43/// Monitoring server health:
44///
45/// ```no_run
46/// use mcp_runner::server::{ServerMonitor, ServerMonitorConfig, ServerLifecycleManager};
47/// use std::sync::Arc;
48/// use std::time::Duration;
49///
50/// let lifecycle_manager = Arc::new(ServerLifecycleManager::new());
51/// let config = ServerMonitorConfig {
52///     check_interval: Duration::from_secs(30),
53///     health_check_timeout: Duration::from_secs(5),
54///     auto_restart: true,
55///     max_consecutive_failures: 3,
56/// };
57///
58/// // Create and start the monitor
59/// let mut monitor = ServerMonitor::new(lifecycle_manager, config);
60/// monitor.start().unwrap();
61/// ```
62pub mod lifecycle;
63pub mod monitor;
64mod process;
65
66pub use lifecycle::{ServerEvent, ServerLifecycleEvent, ServerLifecycleManager};
67pub use monitor::{ServerHealth, ServerMonitor, ServerMonitorConfig};
68pub use process::{ServerId, ServerProcess, ServerStatus};