pub struct Config {
pub server: ServerConfig,
pub oauth: OAuthConfig,
pub github: GitHubConfig,
pub cognito: CognitoConfig,
pub logging: LoggingConfig,
}Expand description
Application configuration
Fields§
§server: ServerConfig§oauth: OAuthConfig§github: GitHubConfig§cognito: CognitoConfig§logging: LoggingConfigImplementations§
Source§impl Config
impl Config
Sourcepub fn from_env() -> Result<Self, ConfigError>
pub fn from_env() -> Result<Self, ConfigError>
Load configuration from environment variables with sensible defaults
Examples found in repository?
examples/oauth_standard_mcp_server.rs (line 11)
6async fn main() -> AppResult<()> {
7 // Load environment variables
8 dotenv::dotenv().ok();
9
10 // Load configuration
11 let config = Config::from_env()?;
12
13 // Initialize tracing
14 init_tracing(&config)?;
15
16 tracing::info!("Starting MCP OAuth server with microkernel architecture...");
17
18 // Create OAuth provider
19 let github_config = GitHubOAuthConfig {
20 client_id: config.github.client_id.clone(),
21 client_secret: config.github.client_secret.clone(),
22 redirect_uri: config.github.redirect_uri.clone(),
23 scope: config.github.scope.clone(),
24 provider_name: "github".to_string(),
25 };
26 let oauth_provider = GitHubOAuthProvider::new_github(github_config);
27
28 // Log configuration
29 log_startup_info(&config);
30
31 // Create microkernel server with all handlers composed
32 let microkernel = create_full_github_microkernel(oauth_provider);
33
34 // Start the microkernel server
35 let bind_address = config.bind_socket_addr()?;
36 microkernel.serve(bind_address).await?;
37
38 Ok(())
39}More examples
examples/oauth_cognito_mcp_server.rs (line 11)
6async fn main() -> AppResult<()> {
7 // Load environment variables
8 dotenv::dotenv().ok();
9
10 // Load configuration
11 let config = Config::from_env()?;
12
13 // Initialize tracing
14 init_tracing(&config)?;
15
16 tracing::info!("Starting MCP OAuth server with Cognito and microkernel architecture...");
17
18 // Create Cognito OAuth provider
19 let cognito_config = CognitoOAuthConfig {
20 client_id: config.cognito.client_id.clone(),
21 client_secret: config.cognito.client_secret.clone().unwrap_or_default(),
22 redirect_uri: config.cognito.redirect_uri.clone(),
23 scope: config.cognito.scope.clone(),
24 provider_name: "cognito".to_string(),
25 };
26 let oauth_provider = CognitoOAuthProvider::new_cognito(
27 cognito_config,
28 config.cognito.cognito_domain.clone(),
29 config.cognito.region.clone(),
30 config.cognito.user_pool_id.clone(),
31 );
32
33 // Log configuration
34 log_startup_info(&config);
35
36 // Create microkernel server with all handlers composed
37 let microkernel = create_full_cognito_microkernel(oauth_provider);
38
39 // Start the microkernel server
40 let bind_address = config.bind_socket_addr()?;
41 microkernel.serve(bind_address).await?;
42
43 Ok(())
44}examples/oauth_cognito_dynamodb_mcp_server.rs (line 64)
59async fn main() -> AppResult<()> {
60 // Load environment variables
61 dotenv::dotenv().ok();
62
63 // Load configuration
64 let config = Config::from_env()?;
65
66 // Initialize tracing
67 init_tracing(&config)?;
68
69 tracing::info!("Starting MCP OAuth server with Cognito and DynamoDB storage...");
70
71 // Create Cognito OAuth configuration
72 let cognito_config = CognitoOAuthConfig {
73 client_id: config.cognito.client_id.clone(),
74 client_secret: config.cognito.client_secret.clone().unwrap_or_default(),
75 redirect_uri: format!(
76 "http://{}:{}/oauth/callback",
77 config.server.host, config.server.port
78 ),
79 scope: config.cognito.scope.clone(),
80 provider_name: "cognito".to_string(),
81 };
82
83 // Get DynamoDB configuration
84 let table_name =
85 env::var("DYNAMODB_TABLE_NAME").unwrap_or_else(|_| "oauth-storage".to_string());
86 let create_table = env::var("DYNAMODB_CREATE_TABLE")
87 .unwrap_or_else(|_| "true".to_string())
88 .parse::<bool>()
89 .unwrap_or(true);
90
91 // Log configuration
92 log_startup_info(&config, &table_name, create_table);
93
94 // Create microkernel server with Cognito OAuth and DynamoDB storage
95 let microkernel = create_full_cognito_microkernel_dynamodb(
96 cognito_config,
97 config.cognito.cognito_domain.clone(),
98 config.cognito.region.clone(),
99 config.cognito.user_pool_id.clone(),
100 table_name,
101 create_table,
102 )
103 .await
104 .map_err(|e| {
105 remote_mcp_kernel::error::AppError::Internal(format!("Failed to create microkernel: {}", e))
106 })?;
107
108 // Start the microkernel server
109 let bind_address = config.bind_socket_addr()?;
110 microkernel.serve(bind_address).await?;
111
112 Ok(())
113}Sourcepub fn github_oauth_config(&self) -> GitHubOAuthConfig
pub fn github_oauth_config(&self) -> GitHubOAuthConfig
Get GitHub OAuth configuration
Sourcepub fn github_oauth_provider_config(&self) -> OAuthProviderConfig
pub fn github_oauth_provider_config(&self) -> OAuthProviderConfig
Get OAuth provider configuration for GitHub
Sourcepub fn cognito_oauth_config(&self) -> CognitoOAuthConfig
pub fn cognito_oauth_config(&self) -> CognitoOAuthConfig
Get Cognito OAuth configuration
Sourcepub fn cognito_oauth_provider_config(&self) -> OAuthProviderConfig
pub fn cognito_oauth_provider_config(&self) -> OAuthProviderConfig
Get OAuth provider configuration for Cognito
Sourcepub fn oauth_provider_config(&self) -> OAuthProviderConfig
pub fn oauth_provider_config(&self) -> OAuthProviderConfig
Get OAuth provider configuration
Sourcepub fn bind_socket_addr(&self) -> Result<SocketAddr, ConfigError>
pub fn bind_socket_addr(&self) -> Result<SocketAddr, ConfigError>
Get server bind address as SocketAddr
Examples found in repository?
examples/oauth_standard_mcp_server.rs (line 35)
6async fn main() -> AppResult<()> {
7 // Load environment variables
8 dotenv::dotenv().ok();
9
10 // Load configuration
11 let config = Config::from_env()?;
12
13 // Initialize tracing
14 init_tracing(&config)?;
15
16 tracing::info!("Starting MCP OAuth server with microkernel architecture...");
17
18 // Create OAuth provider
19 let github_config = GitHubOAuthConfig {
20 client_id: config.github.client_id.clone(),
21 client_secret: config.github.client_secret.clone(),
22 redirect_uri: config.github.redirect_uri.clone(),
23 scope: config.github.scope.clone(),
24 provider_name: "github".to_string(),
25 };
26 let oauth_provider = GitHubOAuthProvider::new_github(github_config);
27
28 // Log configuration
29 log_startup_info(&config);
30
31 // Create microkernel server with all handlers composed
32 let microkernel = create_full_github_microkernel(oauth_provider);
33
34 // Start the microkernel server
35 let bind_address = config.bind_socket_addr()?;
36 microkernel.serve(bind_address).await?;
37
38 Ok(())
39}More examples
examples/oauth_cognito_mcp_server.rs (line 40)
6async fn main() -> AppResult<()> {
7 // Load environment variables
8 dotenv::dotenv().ok();
9
10 // Load configuration
11 let config = Config::from_env()?;
12
13 // Initialize tracing
14 init_tracing(&config)?;
15
16 tracing::info!("Starting MCP OAuth server with Cognito and microkernel architecture...");
17
18 // Create Cognito OAuth provider
19 let cognito_config = CognitoOAuthConfig {
20 client_id: config.cognito.client_id.clone(),
21 client_secret: config.cognito.client_secret.clone().unwrap_or_default(),
22 redirect_uri: config.cognito.redirect_uri.clone(),
23 scope: config.cognito.scope.clone(),
24 provider_name: "cognito".to_string(),
25 };
26 let oauth_provider = CognitoOAuthProvider::new_cognito(
27 cognito_config,
28 config.cognito.cognito_domain.clone(),
29 config.cognito.region.clone(),
30 config.cognito.user_pool_id.clone(),
31 );
32
33 // Log configuration
34 log_startup_info(&config);
35
36 // Create microkernel server with all handlers composed
37 let microkernel = create_full_cognito_microkernel(oauth_provider);
38
39 // Start the microkernel server
40 let bind_address = config.bind_socket_addr()?;
41 microkernel.serve(bind_address).await?;
42
43 Ok(())
44}examples/oauth_cognito_dynamodb_mcp_server.rs (line 109)
59async fn main() -> AppResult<()> {
60 // Load environment variables
61 dotenv::dotenv().ok();
62
63 // Load configuration
64 let config = Config::from_env()?;
65
66 // Initialize tracing
67 init_tracing(&config)?;
68
69 tracing::info!("Starting MCP OAuth server with Cognito and DynamoDB storage...");
70
71 // Create Cognito OAuth configuration
72 let cognito_config = CognitoOAuthConfig {
73 client_id: config.cognito.client_id.clone(),
74 client_secret: config.cognito.client_secret.clone().unwrap_or_default(),
75 redirect_uri: format!(
76 "http://{}:{}/oauth/callback",
77 config.server.host, config.server.port
78 ),
79 scope: config.cognito.scope.clone(),
80 provider_name: "cognito".to_string(),
81 };
82
83 // Get DynamoDB configuration
84 let table_name =
85 env::var("DYNAMODB_TABLE_NAME").unwrap_or_else(|_| "oauth-storage".to_string());
86 let create_table = env::var("DYNAMODB_CREATE_TABLE")
87 .unwrap_or_else(|_| "true".to_string())
88 .parse::<bool>()
89 .unwrap_or(true);
90
91 // Log configuration
92 log_startup_info(&config, &table_name, create_table);
93
94 // Create microkernel server with Cognito OAuth and DynamoDB storage
95 let microkernel = create_full_cognito_microkernel_dynamodb(
96 cognito_config,
97 config.cognito.cognito_domain.clone(),
98 config.cognito.region.clone(),
99 config.cognito.user_pool_id.clone(),
100 table_name,
101 create_table,
102 )
103 .await
104 .map_err(|e| {
105 remote_mcp_kernel::error::AppError::Internal(format!("Failed to create microkernel: {}", e))
106 })?;
107
108 // Start the microkernel server
109 let bind_address = config.bind_socket_addr()?;
110 microkernel.serve(bind_address).await?;
111
112 Ok(())
113}Trait Implementations§
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreCreates a shared type from an unshared type.