pub struct InteractiveClientRequestHandler { /* private fields */ }Expand description
Interactive client request handler with user prompts
This handler provides interactive responses to server requests, prompting the user for input when needed. It’s suitable for command-line applications and interactive environments.
§Features
- Interactive user prompts for elicitation requests
- Configurable root directories
- Optional auto-acceptance for testing
- Console-based user interaction
Implementations§
Source§impl InteractiveClientRequestHandler
impl InteractiveClientRequestHandler
Sourcepub fn add_root<S: Into<String>>(self, uri: S, name: Option<S>) -> Self
pub fn add_root<S: Into<String>>(self, uri: S, name: Option<S>) -> Self
Add a root directory that the client can access
§Arguments
uri- URI of the root directory (e.g., “file:///home/user”)name- Optional display name for the root
§Example
use prism_mcp_rs::client::InteractiveClientRequestHandler;
let handler = InteractiveClientRequestHandler::new("My App")
.add_root("file:///home/user", Some("Home Directory"));Sourcepub fn auto_accept_elicitation(self, auto_accept: bool) -> Self
pub fn auto_accept_elicitation(self, auto_accept: bool) -> Self
Set whether to auto-accept elicitation requests
When enabled, elicitation requests are automatically accepted with empty form data. This is useful for testing and automation.
§Arguments
auto_accept- Whether to auto-accept requests
§Example
use prism_mcp_rs::client::InteractiveClientRequestHandler;
let handler = InteractiveClientRequestHandler::new("My App")
.auto_accept_elicitation(true); // For testingSourcepub fn verbose(self, verbose: bool) -> Self
pub fn verbose(self, verbose: bool) -> Self
Set verbose output mode
When enabled, the handler will print detailed information about each request it processes.
§Arguments
verbose- Whether to enable verbose output
Sourcepub fn add_common_roots(self) -> Self
pub fn add_common_roots(self) -> Self
Add common root directories for the current platform
Method adds platform-appropriate root directories like home directory, documents, etc.
§Example
use prism_mcp_rs::client::InteractiveClientRequestHandler;
let handler = InteractiveClientRequestHandler::new("My App")
.add_common_roots();Add common file system roots
Trait Implementations§
Source§impl ClientRequestHandler for InteractiveClientRequestHandler
impl ClientRequestHandler for InteractiveClientRequestHandler
Source§fn handle_create_message<'life0, 'async_trait>(
&'life0 self,
params: CreateMessageParams,
) -> Pin<Box<dyn Future<Output = McpResult<CreateMessageResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn handle_create_message<'life0, 'async_trait>(
&'life0 self,
params: CreateMessageParams,
) -> Pin<Box<dyn Future<Output = McpResult<CreateMessageResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Handle sampling/createMessage request from the server Read more
Source§fn handle_list_roots<'life0, 'async_trait>(
&'life0 self,
_params: ListRootsParams,
) -> Pin<Box<dyn Future<Output = McpResult<ListRootsResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn handle_list_roots<'life0, 'async_trait>(
&'life0 self,
_params: ListRootsParams,
) -> Pin<Box<dyn Future<Output = McpResult<ListRootsResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Handle roots/list request from the server Read more
Source§fn handle_elicit<'life0, 'async_trait>(
&'life0 self,
params: ElicitParams,
) -> Pin<Box<dyn Future<Output = McpResult<ElicitResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn handle_elicit<'life0, 'async_trait>(
&'life0 self,
params: ElicitParams,
) -> Pin<Box<dyn Future<Output = McpResult<ElicitResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Handle elicitation/create request from the server Read more
Source§fn handle_ping<'life0, 'async_trait>(
&'life0 self,
_params: PingParams,
) -> Pin<Box<dyn Future<Output = McpResult<PingResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn handle_ping<'life0, 'async_trait>(
&'life0 self,
_params: PingParams,
) -> Pin<Box<dyn Future<Output = McpResult<PingResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Handle ping request from the server Read more
Auto Trait Implementations§
impl Freeze for InteractiveClientRequestHandler
impl RefUnwindSafe for InteractiveClientRequestHandler
impl Send for InteractiveClientRequestHandler
impl Sync for InteractiveClientRequestHandler
impl Unpin for InteractiveClientRequestHandler
impl UnsafeUnpin for InteractiveClientRequestHandler
impl UnwindSafe for InteractiveClientRequestHandler
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].