pub struct Server<H, T, R, P, K> { /* private fields */ }Expand description
A configured MCP server ready to serve requests.
The type parameters track which capabilities are available:
H: Base server handlerT: Tool handler (NotRegisteredorRegistered<TH>)R: Resource handlerP: Prompt handlerK: Task handler
Implementations§
Source§impl<H, T, R, P, K> Server<H, T, R, P, K>where
H: ServerHandler,
impl<H, T, R, P, K> Server<H, T, R, P, K>where
H: ServerHandler,
Sourcepub const fn capabilities(&self) -> &ServerCapabilities
pub const fn capabilities(&self) -> &ServerCapabilities
Get the server’s capabilities.
Sourcepub const fn list_page_size(self, page_size: usize) -> Self
pub const fn list_page_size(self, page_size: usize) -> Self
Enable pagination of tools/list, resources/list,
resources/templates/list, and prompts/list at the given page size.
By default pagination is disabled (each list returns all items with no
nextCursor). Setting a page size bounds the response payload; clients
follow the returned nextCursor to fetch subsequent pages. A size of 0
is treated as disabled.
Sourcepub fn with_completion<C: CompletionHandler + 'static>(
self,
completion: C,
) -> Self
pub fn with_completion<C: CompletionHandler + 'static>( self, completion: C, ) -> Self
Register a completion handler and advertise the completions capability.
This wires completion/complete on both the runtime and the framework
adapters. Completion is a leaf capability, so unlike tools/resources/
prompts/tasks it is not tracked in the type parameters.
Sourcepub fn server_info(&self) -> ServerInfo
pub fn server_info(&self) -> ServerInfo
Get the server info from the base handler.
Source§impl<H, TH, R, P, K> Server<H, Registered<TH>, R, P, K>where
H: ServerHandler,
TH: ToolHandler,
impl<H, TH, R, P, K> Server<H, Registered<TH>, R, P, K>where
H: ServerHandler,
TH: ToolHandler,
Sourcepub const fn tool_handler(&self) -> &TH
pub const fn tool_handler(&self) -> &TH
Get a reference to the tool handler.
Source§impl<H, T, RH, P, K> Server<H, T, Registered<RH>, P, K>where
H: ServerHandler,
RH: ResourceHandler,
impl<H, T, RH, P, K> Server<H, T, Registered<RH>, P, K>where
H: ServerHandler,
RH: ResourceHandler,
Sourcepub const fn resource_handler(&self) -> &RH
pub const fn resource_handler(&self) -> &RH
Get a reference to the resource handler.
Source§impl<H, T, R, PH, K> Server<H, T, R, Registered<PH>, K>where
H: ServerHandler,
PH: PromptHandler,
impl<H, T, R, PH, K> Server<H, T, R, Registered<PH>, K>where
H: ServerHandler,
PH: PromptHandler,
Sourcepub const fn prompt_handler(&self) -> &PH
pub const fn prompt_handler(&self) -> &PH
Get a reference to the prompt handler.
Source§impl<H, T, R, P, KH> Server<H, T, R, P, Registered<KH>>where
H: ServerHandler,
KH: TaskHandler,
impl<H, T, R, P, KH> Server<H, T, R, P, Registered<KH>>where
H: ServerHandler,
KH: TaskHandler,
Sourcepub const fn task_handler(&self) -> &KH
pub const fn task_handler(&self) -> &KH
Get a reference to the task handler.
Trait Implementations§
Source§impl<H, T, R, P, K> RequestRouter for Server<H, T, R, P, K>
Single RequestRouter implementation over the typestate handler slots.
impl<H, T, R, P, K> RequestRouter for Server<H, T, R, P, K>
Single RequestRouter implementation over the typestate handler slots.
Each capability is a slot (Registered<H> / NotRegistered) exposing an
optional object-safe handler; routing checks each in turn. Adding a
dispatched capability is one slot plus one arm here – there is no
per-combination explosion. The shared per-method routing logic lives in
crate::router.
Source§fn server_info(&self) -> ServerInfo
fn server_info(&self) -> ServerInfo
Source§async fn route_notification(
&self,
method: &str,
_params: Option<&Value>,
ctx: &Context<'_>,
)
async fn route_notification( &self, method: &str, _params: Option<&Value>, ctx: &Context<'_>, )
notifications/initialized
or notifications/roots/list_changed) to the server’s lifecycle hooks.
Analogous to route but for notifications — there is no
reply. Defaults to a no-op.Source§async fn route(
&self,
method: &str,
params: Option<&Value>,
ctx: &Context<'_>,
) -> Result<Value, McpError>
async fn route( &self, method: &str, params: Option<&Value>, ctx: &Context<'_>, ) -> Result<Value, McpError>
Source§async fn tool_task_support(&self, name: &str, ctx: &Context<'_>) -> TaskSupport
async fn tool_task_support(&self, name: &str, ctx: &Context<'_>) -> TaskSupport
Tool.execution.taskSupport),
used to gate task-augmented tools/call. Defaults to Forbidden.Auto Trait Implementations§
impl<H, T, R, P, K> !RefUnwindSafe for Server<H, T, R, P, K>
impl<H, T, R, P, K> !UnwindSafe for Server<H, T, R, P, K>
impl<H, T, R, P, K> Freeze for Server<H, T, R, P, K>
impl<H, T, R, P, K> Send for Server<H, T, R, P, K>
impl<H, T, R, P, K> Sync for Server<H, T, R, P, K>
impl<H, T, R, P, K> Unpin for Server<H, T, R, P, K>
impl<H, T, R, P, K> UnsafeUnpin for Server<H, T, R, P, K>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more