ServerBuilder

Struct ServerBuilder 

Source
pub struct ServerBuilder { /* private fields */ }
Expand description

Fluent builder for Server

Implementations§

Source§

impl ServerBuilder

Source

pub fn new(name: impl Into<String>, version: impl Into<String>) -> Self

Create new server builder

Source

pub fn with_capabilities(self, capabilities: ServerCapabilities) -> Self

Set server capabilities

Source

pub fn with_instructions(self, instructions: impl Into<String>) -> Self

Set server instructions for LLMs

Instructions help LLMs understand how to use the server’s tools, resources, and prompts. They are sent during initialization and can be thought of as hints added to the system prompt.

§Example
use mcp_host::prelude::*;

let server = server("my-server", "1.0.0")
    .with_instructions("Use the data tools for queries. Verify IDs before updates.")
    .build();
Source

pub fn with_tools(self, list_changed: bool) -> Self

Enable tools capability

Source

pub fn with_resources(self, list_changed: bool, subscribe: bool) -> Self

Enable resources capability

Source

pub fn with_resource_templates(self) -> Self

Enable resource templates capability

Source

pub fn with_prompts(self, list_changed: bool) -> Self

Enable prompts capability

Source

pub fn with_logging(self) -> Self

Enable logging capability

Source

pub fn with_tasks(self, list: bool, cancel: bool) -> Self

Enable tasks capability

Source

pub fn add_middleware(self, middleware: MiddlewareFn) -> Self

Add middleware to the server

Source

pub fn with_logging_middleware(self) -> Self

Add logging middleware

Source

pub fn with_validation_middleware(self) -> Self

Add validation middleware

Source

pub fn with_circuit_breaker(self, config: ToolBreakerConfig) -> Self

Configure circuit breakers for tools

Circuit breakers protect against cascading failures by temporarily disabling tools that are failing repeatedly.

§Example
use mcp_host::prelude::*;

let server = server("my-server", "1.0.0")
    .with_circuit_breaker(ToolBreakerConfig {
        failure_threshold: 3,
        failure_window_secs: 30.0,
        half_open_timeout_secs: 15.0,
        success_threshold: 1,
    })
    .build();
Source

pub fn with_retry(self, config: ResourceRetryConfig) -> Self

Configure retry behavior for resources

Resources will retry failed reads using exponential backoff with jitter.

§Example
use mcp_host::prelude::*;

let server = server("my-server", "1.0.0")
    .with_retry(ResourceRetryConfig {
        max_attempts: 5,
        base_delay_ms: 200,
        multiplier: 2.0,
        max_delay_ms: 5000,
        jitter_factor: 1.0,
    })
    .build();
Source

pub fn with_rate_limit( self, requests_per_second: f64, burst_capacity: usize, ) -> Self

Add rate limiting middleware

Rate limits requests using the GCRA (Generic Cell Rate Algorithm).

§Arguments
  • requests_per_second - Maximum requests allowed per second
  • burst_capacity - Number of requests that can burst instantly
§Example
use mcp_host::prelude::*;

let server = server("my-server", "1.0.0")
    .with_rate_limit(100.0, 20)  // 100 req/s with burst of 20
    .build();
Source

pub fn with_rate_limiter(self, limiter: Arc<RateLimiter>) -> Self

Add rate limiting with custom configuration

Source

pub fn build(self) -> Server

Build the server

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more