use std::sync::Arc;
use pmcp::Server;
use pmcp_server_toolkit::{
ServerBuilderExt, ServerConfig, StaticAuthProvider, StaticResourceHandler,
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
std::env::set_var(
"PMCP_TOOLKIT_TOKEN_SECRET",
"example-secret-not-for-production-use",
);
let config_toml = r#"
[server]
name = "Minimal Toolkit Demo"
version = "0.1.0"
[code_mode]
enabled = true
allow_writes = false
token_secret = "env:PMCP_TOOLKIT_TOKEN_SECRET"
[[tools]]
name = "ping"
description = "Synthetic test tool"
"#;
let cfg = ServerConfig::from_toml_strict_validated(config_toml)?;
let _server = Server::builder()
.name(&cfg.server.name)
.version(&cfg.server.version)
.try_tools_from_config(&cfg)?
.try_code_mode_from_config(&cfg)?
.resources_arc(Arc::new(StaticResourceHandler::from(&cfg)))
.auth_provider_arc(Arc::new(StaticAuthProvider::new("example-token")))
.build()?;
println!(
"pmcp-server-toolkit example: server built with {} tool(s) from config",
cfg.tools.len()
);
Ok(())
}