pub struct McpHttpClientBuilder { /* private fields */ }tools only.Expand description
Builder for HTTP-based MCP connections.
This builder creates connections to remote MCP servers using the current MCP Streamable HTTP transport.
§Example
use adk_tool::mcp::{McpHttpClientBuilder, McpAuth, OAuth2Config};
// Simple connection
let toolset = McpHttpClientBuilder::new("https://mcp.example.com/v1")
.connect()
.await?;
// With OAuth2 authentication
let toolset = McpHttpClientBuilder::new("https://mcp.example.com/v1")
.with_auth(McpAuth::oauth2(
OAuth2Config::new("client-id", "https://auth.example.com/token")
.with_secret("client-secret")
.with_scopes(vec!["mcp:read".into()])
))
.timeout(Duration::from_secs(60))
.connect()
.await?;Implementations§
Source§impl McpHttpClientBuilder
impl McpHttpClientBuilder
Sourcepub fn new(endpoint: impl Into<String>) -> McpHttpClientBuilder
Available on crate feature mcp only.
pub fn new(endpoint: impl Into<String>) -> McpHttpClientBuilder
mcp only.Create a new HTTP client builder for the given endpoint.
§Arguments
endpoint- The MCP server URL (e.g.,https://mcp.example.com/v1)
Sourcepub fn with_auth(self, auth: McpAuth) -> McpHttpClientBuilder
Available on crate feature mcp only.
pub fn with_auth(self, auth: McpAuth) -> McpHttpClientBuilder
mcp only.Sourcepub fn timeout(self, timeout: Duration) -> McpHttpClientBuilder
Available on crate feature mcp only.
pub fn timeout(self, timeout: Duration) -> McpHttpClientBuilder
mcp only.Set the request timeout.
Default is 30 seconds.
Sourcepub fn header(
self,
key: impl Into<String>,
value: impl Into<String>,
) -> McpHttpClientBuilder
Available on crate feature mcp only.
pub fn header( self, key: impl Into<String>, value: impl Into<String>, ) -> McpHttpClientBuilder
mcp only.Add a custom header to all requests.
Sourcepub fn reinit_on_expired_session(self, enabled: bool) -> McpHttpClientBuilder
Available on crate feature mcp only.
pub fn reinit_on_expired_session(self, enabled: bool) -> McpHttpClientBuilder
mcp only.Configure bounded automatic recovery when the server reports an expired session.
Enabled by default. rmcp performs at most one re-initialization attempt.
Sourcepub fn with_elicitation_handler(
self,
handler: Arc<dyn ElicitationHandler>,
) -> McpHttpClientBuilder
Available on crate feature mcp only.
pub fn with_elicitation_handler( self, handler: Arc<dyn ElicitationHandler>, ) -> McpHttpClientBuilder
mcp only.Configure an elicitation handler for the HTTP connection.
When set, use connect_with_elicitation
to create a toolset that advertises elicitation capabilities.
Sourcepub fn with_resource_notification_handler(
self,
handler: Arc<dyn ResourceNotificationHandler>,
) -> McpHttpClientBuilder
Available on crate feature mcp only.
pub fn with_resource_notification_handler( self, handler: Arc<dyn ResourceNotificationHandler>, ) -> McpHttpClientBuilder
mcp only.Configure a handler for resource and resource-list update notifications.
Use this with connect_with_elicitation;
the handler is retained when an expired HTTP session is recreated.
Sourcepub fn get_timeout(&self) -> Duration
Available on crate feature mcp only.
pub fn get_timeout(&self) -> Duration
mcp only.Get the configured timeout.
Sourcepub fn get_auth(&self) -> &McpAuth
Available on crate feature mcp only.
pub fn get_auth(&self) -> &McpAuth
mcp only.Get the authentication configuration.
Sourcepub async fn connect(self) -> Result<(), AdkError>
Available on crate feature mcp and non-crate feature http-transport only.
pub async fn connect(self) -> Result<(), AdkError>
mcp and non-crate feature http-transport only.Connect to the MCP server (stub when http-transport feature is disabled).
Sourcepub async fn connect_with_elicitation(self) -> Result<(), AdkError>
Available on crate feature mcp and non-crate feature http-transport only.
pub async fn connect_with_elicitation(self) -> Result<(), AdkError>
mcp and non-crate feature http-transport only.Connect with elicitation support (stub when http-transport feature is disabled).
Trait Implementations§
Source§impl Clone for McpHttpClientBuilder
impl Clone for McpHttpClientBuilder
Source§fn clone(&self) -> McpHttpClientBuilder
fn clone(&self) -> McpHttpClientBuilder
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for McpHttpClientBuilder
impl !UnwindSafe for McpHttpClientBuilder
impl Freeze for McpHttpClientBuilder
impl Send for McpHttpClientBuilder
impl Sync for McpHttpClientBuilder
impl Unpin for McpHttpClientBuilder
impl UnsafeUnpin for McpHttpClientBuilder
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.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 moreimpl<T> MaybeSend for Twhere
T: Send,
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.