pub fn tool_fn_mut<P, Ret, F, Counterpart>(
name: impl ToString,
description: impl ToString,
func: F,
tool_future_fn: impl for<'a> Fn(&'a mut F, P, McpConnectionTo<Counterpart>) -> BoxFuture<'a, Result<Ret, Error>> + Send + 'static,
) -> (impl McpTool<Counterpart> + 'static, impl RunWithConnectionTo<Counterpart>)where
Counterpart: Role,
P: JsonSchema + DeserializeOwned + 'static + Send,
Ret: JsonSchema + Serialize + 'static + Send,
F: AsyncFnMut(P, McpConnectionTo<Counterpart>) -> Result<Ret, Error> + Send,Expand description
Create a “single-threaded” function-backed MCP tool and its responder.
Only one invocation of the tool can be running at a time.