pub struct Server<T, P, R, C, L, I> { /* private fields */ }Expand description
A composable MCP server that routes requests to individual capability providers.
Use ServerBuilder to construct a server.
§Type Parameters
T: Tools provider (orUnset)P: Prompts provider (orUnset)R: Resources provider (orUnset)C: Completion provider (orUnset)L: Logging provider (orUnset)I: Server info provider (required)
Implementations§
Trait Implementations§
Source§impl<T: Clone, P: Clone, R: Clone, C: Clone, L: Clone, I: Clone> Clone for Server<T, P, R, C, L, I>
impl<T: Clone, P: Clone, R: Clone, C: Clone, L: Clone, I: Clone> Clone for Server<T, P, R, C, L, I>
Source§impl<T, P, R, C, L, I> ServerHandler for Server<T, P, R, C, L, I>where
T: ToolsProvider,
P: PromptsProvider,
R: ResourcesProvider,
C: CompletionProvider,
L: LoggingProvider,
I: ServerInfoProvider,
impl<T, P, R, C, L, I> ServerHandler for Server<T, P, R, C, L, I>where
T: ToolsProvider,
P: PromptsProvider,
R: ResourcesProvider,
C: CompletionProvider,
L: LoggingProvider,
I: ServerInfoProvider,
fn get_info(&self) -> ServerInfo
async fn initialize( &self, _request: InitializeRequestParams, _context: RequestContext<RoleServer>, ) -> Result<InitializeResult, ErrorData>
async fn ping( &self, _context: RequestContext<RoleServer>, ) -> Result<(), ErrorData>
async fn list_tools( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> Result<ListToolsResult, ErrorData>
async fn call_tool( &self, request: CallToolRequestParams, context: RequestContext<RoleServer>, ) -> Result<CallToolResult, ErrorData>
async fn list_prompts( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> Result<ListPromptsResult, ErrorData>
async fn get_prompt( &self, request: GetPromptRequestParams, context: RequestContext<RoleServer>, ) -> Result<GetPromptResult, ErrorData>
async fn list_resources( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> Result<ListResourcesResult, ErrorData>
async fn list_resource_templates( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> Result<ListResourceTemplatesResult, ErrorData>
async fn read_resource( &self, request: ReadResourceRequestParams, context: RequestContext<RoleServer>, ) -> Result<ReadResourceResult, ErrorData>
async fn subscribe( &self, request: SubscribeRequestParams, context: RequestContext<RoleServer>, ) -> Result<(), ErrorData>
async fn unsubscribe( &self, request: UnsubscribeRequestParams, context: RequestContext<RoleServer>, ) -> Result<(), ErrorData>
async fn complete( &self, request: CompleteRequestParams, context: RequestContext<RoleServer>, ) -> Result<CompleteResult, ErrorData>
async fn set_level( &self, request: SetLevelRequestParams, context: RequestContext<RoleServer>, ) -> Result<(), ErrorData>
async fn on_cancelled( &self, _notification: CancelledNotificationParam, _context: NotificationContext<RoleServer>, )
async fn on_progress( &self, _notification: ProgressNotificationParam, _context: NotificationContext<RoleServer>, )
async fn on_initialized(&self, _context: NotificationContext<RoleServer>)
async fn on_roots_list_changed(&self, _context: NotificationContext<RoleServer>)
fn enqueue_task( &self, _request: CallToolRequestParams, _context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<CreateTaskResult, ErrorData>> + MaybeSendFuture
fn on_custom_request( &self, request: CustomRequest, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<CustomResult, ErrorData>> + MaybeSendFuture
fn on_custom_notification( &self, notification: CustomNotification, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn list_tasks( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<ListTasksResult, ErrorData>> + MaybeSendFuture
fn get_task_info( &self, request: GetTaskInfoParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<GetTaskResult, ErrorData>> + MaybeSendFuture
fn get_task_result( &self, request: GetTaskResultParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<GetTaskPayloadResult, ErrorData>> + MaybeSendFuture
fn cancel_task( &self, request: CancelTaskParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<CancelTaskResult, ErrorData>> + MaybeSendFuture
Auto Trait Implementations§
impl<T, P, R, C, L, I> Freeze for Server<T, P, R, C, L, I>
impl<T, P, R, C, L, I> RefUnwindSafe for Server<T, P, R, C, L, I>where
I: RefUnwindSafe,
T: RefUnwindSafe,
P: RefUnwindSafe,
R: RefUnwindSafe,
C: RefUnwindSafe,
L: RefUnwindSafe,
impl<T, P, R, C, L, I> Send for Server<T, P, R, C, L, I>
impl<T, P, R, C, L, I> Sync for Server<T, P, R, C, L, I>
impl<T, P, R, C, L, I> Unpin for Server<T, P, R, C, L, I>
impl<T, P, R, C, L, I> UnsafeUnpin for Server<T, P, R, C, L, I>where
I: UnsafeUnpin,
T: UnsafeUnpin,
P: UnsafeUnpin,
R: UnsafeUnpin,
C: UnsafeUnpin,
L: UnsafeUnpin,
impl<T, P, R, C, L, I> UnwindSafe for Server<T, P, R, C, L, I>
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> CompletionProvider for Twhere
T: ServerHandler,
impl<T> CompletionProvider for Twhere
T: ServerHandler,
Source§async fn complete(
&self,
request: CompleteRequestParams,
context: RequestContext<RoleServer>,
) -> Result<CompleteResult, ErrorData>
async fn complete( &self, request: CompleteRequestParams, context: RequestContext<RoleServer>, ) -> Result<CompleteResult, ErrorData>
Provide completion suggestions.
Source§impl<R, S> DynService<R> for Swhere
R: ServiceRole,
S: Service<R>,
impl<R, S> DynService<R> for Swhere
R: ServiceRole,
S: Service<R>,
fn handle_request( &self, request: <R as ServiceRole>::PeerReq, context: RequestContext<R>, ) -> Pin<Box<dyn Future<Output = Result<<R as ServiceRole>::Resp, ErrorData>> + Send + '_>>
fn handle_notification( &self, notification: <R as ServiceRole>::PeerNot, context: NotificationContext<R>, ) -> Pin<Box<dyn Future<Output = Result<(), ErrorData>> + Send + '_>>
fn get_info(&self) -> <R as ServiceRole>::Info
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<T> LoggingProvider for Twhere
T: ServerHandler,
impl<T> LoggingProvider for Twhere
T: ServerHandler,
Source§async fn set_level(
&self,
request: SetLevelRequestParams,
context: RequestContext<RoleServer>,
) -> Result<(), ErrorData>
async fn set_level( &self, request: SetLevelRequestParams, context: RequestContext<RoleServer>, ) -> Result<(), ErrorData>
Set the logging level.
Source§impl<T> PromptsProvider for Twhere
T: ServerHandler,
impl<T> PromptsProvider for Twhere
T: ServerHandler,
Source§async fn list_prompts(
&self,
request: Option<PaginatedRequestParams>,
context: RequestContext<RoleServer>,
) -> Result<ListPromptsResult, ErrorData>
async fn list_prompts( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> Result<ListPromptsResult, ErrorData>
List available prompts.
Source§async fn get_prompt(
&self,
request: GetPromptRequestParams,
context: RequestContext<RoleServer>,
) -> Result<GetPromptResult, ErrorData>
async fn get_prompt( &self, request: GetPromptRequestParams, context: RequestContext<RoleServer>, ) -> Result<GetPromptResult, ErrorData>
Get a specific prompt.
Source§impl<T> ResourcesProvider for Twhere
T: ServerHandler,
impl<T> ResourcesProvider for Twhere
T: ServerHandler,
Source§async fn list_resources(
&self,
request: Option<PaginatedRequestParams>,
context: RequestContext<RoleServer>,
) -> Result<ListResourcesResult, ErrorData>
async fn list_resources( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> Result<ListResourcesResult, ErrorData>
List available resources.
Source§async fn list_resource_templates(
&self,
request: Option<PaginatedRequestParams>,
context: RequestContext<RoleServer>,
) -> Result<ListResourceTemplatesResult, ErrorData>
async fn list_resource_templates( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> Result<ListResourceTemplatesResult, ErrorData>
List resource templates.
Source§async fn read_resource(
&self,
request: ReadResourceRequestParams,
context: RequestContext<RoleServer>,
) -> Result<ReadResourceResult, ErrorData>
async fn read_resource( &self, request: ReadResourceRequestParams, context: RequestContext<RoleServer>, ) -> Result<ReadResourceResult, ErrorData>
Read a resource.
Source§async fn subscribe(
&self,
request: SubscribeRequestParams,
context: RequestContext<RoleServer>,
) -> Result<(), ErrorData>
async fn subscribe( &self, request: SubscribeRequestParams, context: RequestContext<RoleServer>, ) -> Result<(), ErrorData>
Subscribe to resource updates.
Source§async fn unsubscribe(
&self,
request: UnsubscribeRequestParams,
context: RequestContext<RoleServer>,
) -> Result<(), ErrorData>
async fn unsubscribe( &self, request: UnsubscribeRequestParams, context: RequestContext<RoleServer>, ) -> Result<(), ErrorData>
Unsubscribe from resource updates.
Source§impl<H> Service<RoleServer> for Hwhere
H: ServerHandler,
impl<H> Service<RoleServer> for Hwhere
H: ServerHandler,
async fn handle_request( &self, request: <RoleServer as ServiceRole>::PeerReq, context: RequestContext<RoleServer>, ) -> Result<<RoleServer as ServiceRole>::Resp, ErrorData>
async fn handle_notification( &self, notification: <RoleServer as ServiceRole>::PeerNot, context: NotificationContext<RoleServer>, ) -> Result<(), ErrorData>
fn get_info(&self) -> <RoleServer as ServiceRole>::Info
Source§impl<S> ServiceExt<RoleServer> for Swhere
S: Service<RoleServer>,
impl<S> ServiceExt<RoleServer> for Swhere
S: Service<RoleServer>,
fn serve_with_ct<T, E, A>( self, transport: T, ct: CancellationToken, ) -> impl Future<Output = Result<RunningService<RoleServer, S>, ServerInitializeError>> + MaybeSendFuture
Source§fn into_dyn(self) -> Box<dyn DynService<R>>
fn into_dyn(self) -> Box<dyn DynService<R>>
Convert this service to a dynamic boxed service Read more
fn serve<T, E, A>( self, transport: T, ) -> impl Future<Output = Result<RunningService<R, Self>, <R as ServiceRole>::InitializeError>> + MaybeSendFuture
Source§impl<T> ToolsProvider for Twhere
T: ServerHandler,
impl<T> ToolsProvider for Twhere
T: ServerHandler,
Source§async fn list_tools(
&self,
request: Option<PaginatedRequestParams>,
context: RequestContext<RoleServer>,
) -> Result<ListToolsResult, ErrorData>
async fn list_tools( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> Result<ListToolsResult, ErrorData>
List available tools.
Source§async fn call_tool(
&self,
request: CallToolRequestParams,
context: RequestContext<RoleServer>,
) -> Result<CallToolResult, ErrorData>
async fn call_tool( &self, request: CallToolRequestParams, context: RequestContext<RoleServer>, ) -> Result<CallToolResult, ErrorData>
Execute a tool.