gemini_adk_rs/tools/mcp/
toolset.rs1use std::sync::Arc;
4
5use async_trait::async_trait;
6
7use crate::tool::ToolFunction;
8use crate::toolset::Toolset;
9
10use super::session_manager::McpSessionManager;
11
12pub struct McpToolset {
14 session_manager: Arc<McpSessionManager>,
15 filter: Option<Vec<String>>,
16}
17
18impl McpToolset {
19 pub fn new(session_manager: Arc<McpSessionManager>) -> Self {
21 Self {
22 session_manager,
23 filter: None,
24 }
25 }
26
27 pub fn with_filter(mut self, names: Vec<String>) -> Self {
29 self.filter = Some(names);
30 self
31 }
32
33 pub fn filter(&self) -> Option<&[String]> {
35 self.filter.as_deref()
36 }
37
38 pub fn session_manager(&self) -> &Arc<McpSessionManager> {
40 &self.session_manager
41 }
42}
43
44#[async_trait]
45impl Toolset for McpToolset {
46 fn get_tools(&self) -> Vec<Arc<dyn ToolFunction>> {
47 vec![]
51 }
52
53 async fn close(&self) {
54 }
56}