pub struct ClientCapabilitiesBuilder<S = ClientCapabilitiesBuilderState> { /* private fields */ }Expand description
Const-generic ClientCapabilities builder with compile-time validation
This builder ensures that capability-specific methods are only available when the corresponding capability is enabled, providing compile-time safety with comprehensive compile-time validation.
Implementations§
Source§impl ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<true, true, true, true>>
impl ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<true, true, true, true>>
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new ClientCapabilities builder with all capabilities enabled (opt-out model)
By default, all capabilities are enabled. Use .without_*() methods to disable
specific capabilities if needed.
This design provides forward compatibility - when new MCP capabilities are added, existing clients automatically support them without code changes.
For clients that need explicit opt-in behavior, use ClientCapabilitiesBuilder::minimal().
Source§impl ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<false, false, false, false>>
impl ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<false, false, false, false>>
Sourcepub fn minimal() -> Self
pub fn minimal() -> Self
Create a minimal ClientCapabilities builder with no capabilities enabled (opt-in model)
Starts with all capabilities disabled. Use .enable_*() methods to opt-in
to specific capabilities.
Most users should use ClientCapabilitiesBuilder::new() instead, which provides
an opt-out model with all capabilities enabled by default.
Use this constructor when:
- You need explicit control over which capabilities are enabled
- You’re building a restricted client (embedded, CLI-only, etc.)
- You want to minimize the attack surface
Source§impl<S> ClientCapabilitiesBuilder<S>
impl<S> ClientCapabilitiesBuilder<S>
Sourcepub fn build(self) -> ClientCapabilities
pub fn build(self) -> ClientCapabilities
Build the final ClientCapabilities
Consumes the builder and returns the configured ClientCapabilities. All compile-time validations have been enforced during building.
Sourcepub fn with_strict_validation(self) -> Self
pub fn with_strict_validation(self) -> Self
TurboMCP Extension: Enable strict validation mode
When enabled, the builder will perform additional runtime validations on top of the compile-time guarantees.
Sourcepub fn with_negotiator(self, negotiator: CapabilityNegotiator) -> Self
pub fn with_negotiator(self, negotiator: CapabilityNegotiator) -> Self
TurboMCP Extension: Set capability negotiator
Integrates with TurboMCP’s sophisticated capability negotiation system for advanced client-server capability matching.
Source§impl<const R: bool, const S: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<false, R, S, E>>
impl<const R: bool, const S: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<false, R, S, E>>
Sourcepub fn enable_experimental(
self,
) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<true, R, S, E>>
pub fn enable_experimental( self, ) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<true, R, S, E>>
Enable experimental capabilities
Transitions the builder to a state where experimental capability methods become available at compile time.
Sourcepub fn enable_experimental_with(
self,
experimental: HashMap<String, Value>,
) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<true, R, S, E>>
pub fn enable_experimental_with( self, experimental: HashMap<String, Value>, ) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<true, R, S, E>>
Enable experimental capabilities with specific values
Source§impl<const X: bool, const S: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, false, S, E>>
impl<const X: bool, const S: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, false, S, E>>
Sourcepub fn enable_roots(
self,
) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, true, S, E>>
pub fn enable_roots( self, ) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, true, S, E>>
Enable roots capabilities
Source§impl<const X: bool, const R: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, false, E>>
impl<const X: bool, const R: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, false, E>>
Sourcepub fn enable_sampling(
self,
) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, true, E>>
pub fn enable_sampling( self, ) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, true, E>>
Enable sampling capabilities
Source§impl<const X: bool, const R: bool, const S: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, S, false>>
impl<const X: bool, const R: bool, const S: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, S, false>>
Sourcepub fn enable_elicitation(
self,
) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, S, true>>
pub fn enable_elicitation( self, ) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, S, true>>
Enable elicitation capabilities
Sourcepub fn enable_elicitation_with_schema_validation(
self,
) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, S, true>>
pub fn enable_elicitation_with_schema_validation( self, ) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, S, true>>
Enable elicitation with schema validation
Source§impl<const X: bool, const S: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, true, S, E>>
impl<const X: bool, const S: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, true, S, E>>
Sourcepub fn enable_roots_list_changed(self) -> Self
pub fn enable_roots_list_changed(self) -> Self
Enable roots list changed notifications
This method is only available when roots capabilities are enabled, providing compile-time safety.
Source§impl<const R: bool, const S: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<true, R, S, E>>
impl<const R: bool, const S: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<true, R, S, E>>
Sourcepub fn without_experimental(
self,
) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<false, R, S, E>>
pub fn without_experimental( self, ) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<false, R, S, E>>
Disable experimental capabilities (opt-out)
Transitions the builder to a state where experimental capability methods are no longer available at compile time.
Source§impl<const X: bool, const S: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, true, S, E>>
impl<const X: bool, const S: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, true, S, E>>
Sourcepub fn without_roots(
self,
) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, false, S, E>>
pub fn without_roots( self, ) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, false, S, E>>
Disable roots capabilities (opt-out)
Transitions the builder to a state where roots capability methods are no longer available at compile time.
Source§impl<const X: bool, const R: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, true, E>>
impl<const X: bool, const R: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, true, E>>
Sourcepub fn without_sampling(
self,
) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, false, E>>
pub fn without_sampling( self, ) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, false, E>>
Disable sampling capabilities (opt-out)
Transitions the builder to a state where sampling capability methods are no longer available at compile time.
Source§impl<const X: bool, const R: bool, const S: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, S, true>>
impl<const X: bool, const R: bool, const S: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, S, true>>
Sourcepub fn without_elicitation(
self,
) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, S, false>>
pub fn without_elicitation( self, ) -> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<X, R, S, false>>
Disable elicitation capabilities (opt-out)
Transitions the builder to a state where elicitation capability methods are no longer available at compile time.
Source§impl<const R: bool, const S: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<true, R, S, E>>
impl<const R: bool, const S: bool, const E: bool> ClientCapabilitiesBuilder<ClientCapabilitiesBuilderState<true, R, S, E>>
Trait Implementations§
Source§impl<S: Clone> Clone for ClientCapabilitiesBuilder<S>
impl<S: Clone> Clone for ClientCapabilitiesBuilder<S>
Source§fn clone(&self) -> ClientCapabilitiesBuilder<S>
fn clone(&self) -> ClientCapabilitiesBuilder<S>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more