oauth_standard_mcp_server/
oauth_standard_mcp_server.rs1use oauth_provider_rs::GitHubOAuthProvider;
2use remote_mcp_kernel::{
3 config::{get_bind_socket_addr, get_github_oauth_provider_config, get_logging_level},
4 error::AppResult,
5 microkernel::create_full_github_microkernel,
6};
7use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
8
9#[tokio::main]
10async fn main() -> AppResult<()> {
11 dotenv::dotenv().ok();
13
14 init_tracing()?;
16
17 tracing::info!("Starting MCP OAuth server with microkernel architecture...");
18
19 let github_config = get_github_oauth_provider_config()?;
21 let oauth_provider = GitHubOAuthProvider::new_github(github_config);
22
23 log_startup_info();
25
26 let microkernel = create_full_github_microkernel(oauth_provider);
28
29 let bind_address = get_bind_socket_addr()?;
31 microkernel.serve(bind_address).await?;
32
33 Ok(())
34}
35
36fn init_tracing() -> AppResult<()> {
37 tracing_subscriber::registry()
38 .with(
39 tracing_subscriber::EnvFilter::try_from_default_env()
40 .unwrap_or_else(|_| get_logging_level().as_str().into()),
41 )
42 .with(tracing_subscriber::fmt::layer())
43 .init();
44
45 Ok(())
46}
47
48fn log_startup_info() {
49 use remote_mcp_kernel::config::{
50 get_github_client_id, get_github_client_secret, get_server_host, get_server_port,
51 get_server_version,
52 };
53
54 println!("🚀 Starting MCP OAuth server with microkernel architecture...");
55 println!("📋 Configuration:");
56 println!(" - Architecture: Microkernel (independent handlers)");
57 println!(
58 " - Server: {}:{}",
59 get_server_host(),
60 get_server_port().unwrap_or(8080)
61 );
62 println!(" - Version: {}", get_server_version());
63 println!(
64 " - GitHub Client ID: {}",
65 if get_github_client_id().is_ok() {
66 "Configured"
67 } else {
68 "Not configured"
69 }
70 );
71 println!(
72 " - GitHub Client Secret: {}",
73 if get_github_client_secret().is_ok() {
74 "Configured"
75 } else {
76 "Not configured"
77 }
78 );
79 println!("🔧 Handlers:");
80 println!(" - OAuth Provider (authentication & authorization)");
81 println!(" - Streamable HTTP Handler (MCP over HTTP)");
82 println!(" - SSE Handler (MCP over SSE)");
83 println!();
84}