aion_server/mcp/
runtime.rs1use std::sync::Arc;
4
5use aion_mcp::protocol::meta::Implementation;
6use aion_mcp::{McpServer, McpServerConfig};
7
8use crate::config::ResolvedMcpConfig;
9use crate::{ServerError, ServerState};
10
11use super::service::AionToolService;
12
13pub struct McpRuntime {
15 server: McpServer<AionToolService>,
16}
17
18impl McpRuntime {
19 pub fn build(state: ServerState, config: &ResolvedMcpConfig) -> Result<Self, ServerError> {
29 let service = AionToolService::new(state)?;
30 let server = McpServer::new(
31 Arc::new(service),
32 McpServerConfig::new(
33 Implementation::new("aion", env!("CARGO_PKG_VERSION")),
34 config.discover_ttl_ms,
35 config.tools_list_ttl_ms,
36 config.task_poll_interval_ms,
37 config.allowed_origins.clone(),
38 ),
39 );
40 Ok(Self { server })
41 }
42
43 pub(crate) const fn server(&self) -> &McpServer<AionToolService> {
45 &self.server
46 }
47}