#![cfg_attr(test, warn(unused_imports, unused_variables, dead_code))]
use crate::service::command_service::CommandService;
use crate::service::chunk_service::ChunkService;
use crate::service::public_data_service::PublicDataService;
use crate::service::archive_service::ArchiveService;
use crate::service::tarchive_service::TarchiveService;
use crate::service::resolver_service::ResolverService;
use crate::service::crypto_service::CryptoService;
use actix_web::web::Data;
use ant_core::data::Wallet;
use rmcp::handler::server::tool::ToolRouter;
use rmcp::model::{ServerCapabilities, ServerInfo};
use rmcp::{tool_handler, ServerHandler};
pub mod archive_tool;
pub mod pnr_tool;
pub mod chunk_tool;
pub mod command_tool;
pub mod public_data_tool;
pub mod pointer_tool;
pub mod register_tool;
pub mod graph_tool;
pub mod public_archive_tool;
pub mod public_scratchpad_tool;
pub mod private_scratchpad_tool;
pub mod tarchive_tool;
pub mod resolver_tool;
pub mod key_value_tool;
pub mod crypto_tool;
#[derive(Clone)]
pub struct McpTool {
command_service: Data<CommandService>,
chunk_service: Data<ChunkService>,
public_data_service: Data<PublicDataService>,
archive_service: Data<ArchiveService>,
tarchive_service: Data<TarchiveService>,
resolver_service: Data<ResolverService>,
crypto_service: Data<CryptoService>,
evm_wallet: Data<Wallet>,
tool_router: ToolRouter<Self>,
}
impl McpTool {
pub fn new(
command_service: Data<CommandService>,
chunk_service: Data<ChunkService>,
public_data_service: Data<PublicDataService>,
archive_service: Data<ArchiveService>,
tarchive_service: Data<TarchiveService>,
resolver_service: Data<ResolverService>,
crypto_service: Data<CryptoService>,
evm_wallet: Data<Wallet>
) -> Self {
Self {
command_service,
chunk_service,
public_data_service,
archive_service,
tarchive_service,
resolver_service,
crypto_service,
evm_wallet,
tool_router: Self::chunk_tool_router()
+ Self::command_tool_router()
+ Self::public_data_tool_router()
+ Self::archive_tool_router()
+ Self::tarchive_tool_router()
+ Self::resolver_tool_router()
+ Self::crypto_tool_router()
}
}
}
#[tool_handler]
impl ServerHandler for McpTool {
fn get_info(&self) -> ServerInfo {
ServerInfo {
instructions: Some("AntTP tools for creating and retrieving data on Autonomi Network".into()),
capabilities: ServerCapabilities::builder().enable_tools().build(),
..Default::default()
}
}
}