pub struct ToolRegistry { /* private fields */ }Expand description
Central registry mapping tool names to their trait-based handlers. Every tool is trait-based and resolved here; the earlier match-cascade dispatch has been fully retired.
Handlers are stored behind Arc (not Box) so the dispatch layer can hand
an owned, 'static handle to tokio::task::spawn_blocking. That lets a
blocking handler run on the dedicated blocking pool under a watchdog
deadline instead of pinning a scarce core worker via block_in_place
(#271 — a hung handler must never swallow the JSON-RPC response).
Implementations§
Source§impl ToolRegistry
impl ToolRegistry
pub fn new() -> Self
pub fn register(&mut self, tool: Box<dyn McpTool>)
pub fn get(&self, name: &str) -> Option<&dyn McpTool>
Sourcepub fn get_arc(&self, name: &str) -> Option<Arc<dyn McpTool>>
pub fn get_arc(&self, name: &str) -> Option<Arc<dyn McpTool>>
Clone an owned, 'static handle to a registered tool.
Unlike get, the returned Arc can be moved into
spawn_blocking, so the dispatch layer can execute the (synchronous)
handler off the async core workers under a watchdog (#271).
pub fn contains(&self, name: &str) -> bool
Sourcepub fn tool_defs(&self) -> Vec<Tool>
pub fn tool_defs(&self) -> Vec<Tool>
Returns MCP Tool definitions for all registered tools.
Used by list_tools to expose schemas to clients.
Sourcepub fn active_tool_defs(&self) -> Vec<Tool>
pub fn active_tool_defs(&self) -> Vec<Tool>
Returns tool definitions filtered by the dynamic tool state. Only includes tools whose category is currently active.
Sourcepub fn profile_tool_defs(&self, profile: &ToolProfile) -> Vec<Tool>
pub fn profile_tool_defs(&self, profile: &ToolProfile) -> Vec<Tool>
Returns tool definitions filtered by a tool profile. Only includes tools whose name is enabled by the given profile.
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
pub fn names(&self) -> Vec<&'static str>
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for ToolRegistry
impl !UnwindSafe for ToolRegistry
impl Freeze for ToolRegistry
impl Send for ToolRegistry
impl Sync for ToolRegistry
impl Unpin for ToolRegistry
impl UnsafeUnpin for ToolRegistry
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more