Skip to main content

SkillCtx

Struct SkillCtx 

Source
pub struct SkillCtx<'a, S> {
    pub server: &'a S,
    pub args: JsonObject,
    pub peer: Option<Peer<RoleServer>>,
    pub meta: Option<Meta>,
}
Expand description

What a Skill::call receives: a borrow of the shared server state plus the raw, already-extracted argument object (parse it with SkillCtx::parse).

peer + meta mirror the rmcp request context for the underlying tool call. Skills that emit progress notifications read the caller’s progressToken out of meta and use peer to send them; plain synchronous tools ignore both. They are owned rather than borrowed because Peer is cheap to clone (transport-channel handles only) and a skill routinely needs to hand it into a spawned task that outlives the call.

Fields§

§server: &'a S

Borrow of the shared server state.

§args: JsonObject

The raw argument object (already extracted from the request).

§peer: Option<Peer<RoleServer>>

rmcp peer handle. None only in hand-constructed test contexts.

§meta: Option<Meta>

rmcp request _meta (the dictionary carrying progressToken, etc.).

Implementations§

Source§

impl<'a, S> SkillCtx<'a, S>

Source

pub fn parse<T: DeserializeOwned>(self) -> Result<(&'a S, T), McpError>

Parse the arguments into a typed struct, returning the server handle too.

Source

pub fn progress_token(&self) -> Option<ProgressToken>

Convenience: pull the MCP progressToken the caller put in _meta.progressToken, if any.

Auto Trait Implementations§

§

impl<'a, S> !RefUnwindSafe for SkillCtx<'a, S>

§

impl<'a, S> !UnwindSafe for SkillCtx<'a, S>

§

impl<'a, S> Freeze for SkillCtx<'a, S>
where &'a S: Freeze,

§

impl<'a, S> Send for SkillCtx<'a, S>
where &'a S: Send,

§

impl<'a, S> Sync for SkillCtx<'a, S>
where &'a S: Sync,

§

impl<'a, S> Unpin for SkillCtx<'a, S>
where &'a S: Unpin,

§

impl<'a, S> UnsafeUnpin for SkillCtx<'a, S>

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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