Skip to main content

ServerManager

Struct ServerManager 

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

Manages all MCP server connections with lazy connection, idle timeout, and health checks.

Implementations§

Source§

impl ServerManager

Source

pub fn new(global_idle_timeout_minutes: u64) -> Self

Source

pub fn register(&mut self, name: &str, entry: ServerEntry, config_hash: u64)

Register or update a server definition (from config). Does not connect. If the server already exists, its entry is replaced and the old connection is dropped so that next use reconnects with the new config.

Source

pub async fn ensure_connected(&mut self, name: &str) -> bool

Ensure a server is connected (lazy connect). Returns true if connected/available.

Source

pub fn get_client(&self, name: &str) -> Option<Arc<Mutex<McpClient>>>

Get a connected client for a server (must call ensure_connected first).

Source

pub fn status(&self, name: &str) -> Option<ConnectionStatus>

Get the connection status for a server.

Source

pub fn mark_failed(&mut self, name: &str)

Mark a connection as failed after a tool call error.

Source

pub fn touch(&mut self, name: &str)

Touch a server (update last_used timestamp, e.g. after successful tool call).

Source

pub async fn disconnect(&mut self, name: &str)

Disconnect a server (idle shutdown).

Source

pub async fn close_all(&mut self)

Close all connections (on session shutdown).

Source

pub fn idle_timeout(&self, name: &str) -> Duration

Get the idle timeout for a server (per-server override or global default).

Source

pub async fn sweep_idle(&mut self)

Check for idle servers and disconnect them.

Source

pub fn server_names(&self) -> Vec<String>

Get a list of all registered server names.

Source

pub fn remove(&mut self, name: &str)

Synchronously remove a server entry, dropping any existing connection. The client Arc is dropped; in-flight calls holding a clone of the Arc can still complete.

Source

pub fn should_connect_eagerly(&self, name: &str) -> bool

Check if a server should be connected eagerly at startup.

Source

pub fn config_hash(&self, name: &str) -> Option<u64>

Get the config hash for a 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. 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<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