pub struct McpConnectTool { /* private fields */ }Expand description
A tool that lazily connects to MCP servers on demand. Instead of spawning all servers at startup (burning tokens on 65 tool schemas), this registers ONE tool that the model calls to activate a specific server.
MCP connect gateway — discovers tools from an MCP server and registers them dynamically. Uses the ToolContext.tool_register_tx channel instead of holding a direct Arc to the registry, breaking the circular reference that previously existed.
Implementations§
Source§impl McpConnectTool
impl McpConnectTool
pub fn new(configs: HashMap<String, McpServerConfig>) -> Self
Trait Implementations§
Source§impl Tool for McpConnectTool
impl Tool for McpConnectTool
Source§fn description(&self) -> &str
fn description(&self) -> &str
Human-readable description sent to the model.
Source§fn parameters(&self) -> Value
fn parameters(&self) -> Value
JSON Schema for the tool’s parameters.
Source§fn execute<'life0, 'async_trait>(
&'life0 self,
params: Value,
ctx: ToolContext,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn execute<'life0, 'async_trait>(
&'life0 self,
params: Value,
ctx: ToolContext,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Execute the tool with the given parameters.
Source§fn extension_id(&self) -> Option<&str>
fn extension_id(&self) -> Option<&str>
Owning extension id for tools registered by an extension. Built-in tools return
None.Auto Trait Implementations§
impl Freeze for McpConnectTool
impl !RefUnwindSafe for McpConnectTool
impl Send for McpConnectTool
impl Sync for McpConnectTool
impl Unpin for McpConnectTool
impl UnsafeUnpin for McpConnectTool
impl !UnwindSafe for McpConnectTool
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.