pub struct CapabilityFilter<T: Filterable> { /* private fields */ }Expand description
A filter for capabilities based on session state.
Use this to control which tools, resources, or prompts are visible to each session.
§Example
use tower_mcp::{CapabilityFilter, DenialBehavior, Tool, Filterable};
// Filter that only shows tools starting with "public_"
let filter = CapabilityFilter::new(|_session, tool: &Tool| {
tool.name().starts_with("public_")
});
// Filter with custom denial behavior
let filter_with_401 = CapabilityFilter::new(|_session, tool: &Tool| {
tool.name() != "admin"
}).denial_behavior(DenialBehavior::Unauthorized);Implementations§
Source§impl<T: Filterable> CapabilityFilter<T>
impl<T: Filterable> CapabilityFilter<T>
Sourcepub fn new<F>(filter: F) -> Self
pub fn new<F>(filter: F) -> Self
Create a new capability filter with the given predicate.
The predicate receives the session state and capability, and returns
true if the capability should be visible to the session.
§Example
use tower_mcp::{CapabilityFilter, Tool, Filterable};
let filter = CapabilityFilter::new(|_session, tool: &Tool| {
// Check session extensions for auth claims
// session.extensions().get::<UserClaims>()...
tool.name() != "admin_only"
});Sourcepub fn denial_behavior(self, behavior: DenialBehavior) -> Self
pub fn denial_behavior(self, behavior: DenialBehavior) -> Self
Set the behavior when a filtered capability is accessed directly.
Default is DenialBehavior::NotFound.
§Example
use tower_mcp::{CapabilityFilter, DenialBehavior, Tool, Filterable};
let filter = CapabilityFilter::new(|_, tool: &Tool| tool.name() != "secret")
.denial_behavior(DenialBehavior::Unauthorized);Sourcepub fn is_visible(&self, session: &SessionState, capability: &T) -> bool
pub fn is_visible(&self, session: &SessionState, capability: &T) -> bool
Check if the given capability is visible to the session.
Sourcepub fn denial_error(&self, name: &str) -> Error
pub fn denial_error(&self, name: &str) -> Error
Get the error to return when access is denied.
Trait Implementations§
Source§impl<T: Filterable> Clone for CapabilityFilter<T>
impl<T: Filterable> Clone for CapabilityFilter<T>
Auto Trait Implementations§
impl<T> Freeze for CapabilityFilter<T>
impl<T> !RefUnwindSafe for CapabilityFilter<T>
impl<T> Send for CapabilityFilter<T>
impl<T> Sync for CapabilityFilter<T>
impl<T> Unpin for CapabilityFilter<T>
impl<T> !UnwindSafe for CapabilityFilter<T>
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