pub struct McpToolExecutor { /* private fields */ }Expand description
MCP tool executor – routes tool calls to the appropriate MCP server.
Implementations§
Source§impl McpToolExecutor
impl McpToolExecutor
pub fn new() -> Self
pub fn with_fallback(self, fallback: Arc<dyn ToolExecutor>) -> Self
Sourcepub async fn add_server(&self, server: McpServer) -> Result<Vec<String>, String>
pub async fn add_server(&self, server: McpServer) -> Result<Vec<String>, String>
Add an MCP server and discover its tools.
Returns the list of discovered tool names (canonical form: mcp_{server}_{tool}).
Sourcepub async fn tool_schemas(&self) -> Vec<(String, ToolSchema)>
pub async fn tool_schemas(&self) -> Vec<(String, ToolSchema)>
Get tool schemas from all connected MCP servers.
Sourcepub async fn shutdown_all(&self)
pub async fn shutdown_all(&self)
Shut down all MCP servers.
Trait Implementations§
Source§impl Default for McpToolExecutor
impl Default for McpToolExecutor
Source§impl ToolExecutor for McpToolExecutor
impl ToolExecutor for McpToolExecutor
fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tool: &'life1 str,
params: &'life2 Value,
) -> Pin<Box<dyn Future<Output = Result<Value, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn execute_with_action<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
tool: &'life1 str,
params: &'life2 Value,
action_id: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<Value, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn execute_with_action<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
tool: &'life1 str,
params: &'life2 Value,
action_id: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<Value, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Variant that also carries the originating proposal
Action.id.
WS-based executors (car-server-core::WsToolExecutor) use it so
the daemon-initiated tools.execute request to the client
carries the same id the host’s process-wide handler is keyed on
— without this round-trip the host can’t disambiguate concurrent
callbacks for the same tool (Parslee-ai/car-releases#43
follow-up). In-process executors that don’t need it can keep the
default forward to [execute].Auto Trait Implementations§
impl Freeze for McpToolExecutor
impl !RefUnwindSafe for McpToolExecutor
impl Send for McpToolExecutor
impl Sync for McpToolExecutor
impl Unpin for McpToolExecutor
impl UnsafeUnpin for McpToolExecutor
impl !UnwindSafe for McpToolExecutor
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> 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>
Converts
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>
Converts
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