pub struct McpToolset<S = ()>{ /* private fields */ }Expand description
MCP Toolset - connects to an MCP server and exposes its tools as ADK tools.
This toolset implements the ADK Toolset trait and bridges the gap between
MCP servers and ADK agents. It:
- Connects to an MCP server via the provided transport
- Discovers available tools from the server
- Converts MCP tools to ADK-compatible
Toolimplementations - Proxies tool execution calls to the MCP server
§Example
ⓘ
use adk_tool::McpToolset;
use rmcp::{ServiceExt, transport::TokioChildProcess};
use tokio::process::Command;
// Create MCP client connection to a local server
let client = ().serve(TokioChildProcess::new(
Command::new("npx")
.arg("-y")
.arg("@modelcontextprotocol/server-everything")
)?).await?;
// Create toolset from the client
let toolset = McpToolset::new(client);
// Add to agent
let agent = LlmAgentBuilder::new("assistant")
.toolset(Arc::new(toolset))
.build()?;Implementations§
Source§impl<S> McpToolset<S>
impl<S> McpToolset<S>
Sourcepub fn new(client: RunningService<RoleClient, S>) -> Self
pub fn new(client: RunningService<RoleClient, S>) -> Self
Create a new MCP toolset from a running MCP client service.
The client should already be connected and initialized.
Use rmcp::ServiceExt::serve() to create the client.
§Example
ⓘ
use rmcp::{ServiceExt, transport::TokioChildProcess};
use tokio::process::Command;
let client = ().serve(TokioChildProcess::new(
Command::new("my-mcp-server")
)?).await?;
let toolset = McpToolset::new(client);Sourcepub fn with_filter<F>(self, filter: F) -> Self
pub fn with_filter<F>(self, filter: F) -> Self
Sourcepub fn with_tools(self, tool_names: &[&str]) -> Self
pub fn with_tools(self, tool_names: &[&str]) -> Self
Trait Implementations§
Source§impl<S> Toolset for McpToolset<S>
impl<S> Toolset for McpToolset<S>
Auto Trait Implementations§
impl<S> Freeze for McpToolset<S>
impl<S = ()> !RefUnwindSafe for McpToolset<S>
impl<S> Send for McpToolset<S>
impl<S> Sync for McpToolset<S>
impl<S> Unpin for McpToolset<S>
impl<S = ()> !UnwindSafe for McpToolset<S>
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§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> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request