Skip to main content

SessionState

Struct SessionState 

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

Thread-safe session state container for per-session key-value storage.

This allows handlers to store and retrieve state that persists across requests within a single MCP session. The state is typed as JSON values to support flexible data storage.

§Thread Safety

SessionState is designed for concurrent access from multiple handlers. Operations are synchronized via an internal mutex.

§Example

// In a tool handler:
ctx.set_state("counter", 42);
let count: Option<i32> = ctx.get_state("counter");

Implementations§

Source§

impl SessionState

Source

pub fn new() -> Self

Creates a new empty session state.

Source

pub fn get<T: DeserializeOwned>(&self, key: &str) -> Option<T>

Gets a value from session state by key.

Returns None if the key doesn’t exist or if deserialization fails.

§Type Parameters
  • T - The expected type of the value (must implement Deserialize)
Source

pub fn get_raw(&self, key: &str) -> Option<Value>

Gets a raw JSON value from session state by key.

Returns None if the key doesn’t exist.

Source

pub fn set<T: Serialize>(&self, key: impl Into<String>, value: T) -> bool

Sets a value in session state.

The value is serialized to JSON for storage. Returns true if the value was successfully stored.

§Type Parameters
  • T - The type of the value (must implement Serialize)
Source

pub fn set_raw(&self, key: impl Into<String>, value: Value) -> bool

Sets a raw JSON value in session state.

Returns true if the value was successfully stored.

Source

pub fn remove(&self, key: &str) -> Option<Value>

Removes a value from session state.

Returns the previous value if it existed.

Source

pub fn contains(&self, key: &str) -> bool

Checks if a key exists in session state.

Source

pub fn len(&self) -> usize

Returns the number of entries in session state.

Source

pub fn is_empty(&self) -> bool

Returns true if session state is empty.

Source

pub fn clear(&self)

Clears all session state.

Source§

impl SessionState

Source

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

Returns whether a tool is enabled (not disabled) for this session.

Tools are enabled by default unless explicitly disabled.

Source

pub fn is_resource_enabled(&self, uri: &str) -> bool

Returns whether a resource is enabled (not disabled) for this session.

Resources are enabled by default unless explicitly disabled.

Source

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

Returns whether a prompt is enabled (not disabled) for this session.

Prompts are enabled by default unless explicitly disabled.

Source

pub fn disabled_tools(&self) -> HashSet<String>

Returns the set of disabled tools.

Source

pub fn disabled_resources(&self) -> HashSet<String>

Returns the set of disabled resources.

Source

pub fn disabled_prompts(&self) -> HashSet<String>

Returns the set of disabled prompts.

Trait Implementations§

Source§

impl Clone for SessionState

Source§

fn clone(&self) -> SessionState

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SessionState

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SessionState

Source§

fn default() -> SessionState

Returns the “default value” for a type. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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: NoopSpan) -> Self

Instruments this future with a span (no-op when disabled).
Source§

fn in_current_span(self) -> Self

Instruments this future with the current span (no-op when disabled).
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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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