pub struct McpServer { /* private fields */ }Expand description
Transport-agnostic MCP JSON-RPC server.
This server owns the MCP protocol method routing and delegates tool/resource execution to registered handlers.
Implementations§
Source§impl McpServer
impl McpServer
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new MCP server with default lifecycle, prompt registry, and notification channel.
Sourcepub fn session(&self) -> &Arc<SessionManager>
pub fn session(&self) -> &Arc<SessionManager>
Get the lifecycle session manager.
Sourcepub fn progress_tracker(&self) -> &Arc<ProgressTracker>
pub fn progress_tracker(&self) -> &Arc<ProgressTracker>
Get the progress tracker.
Sourcepub fn subscribe_notifications(&self) -> Receiver<McpNotification>
pub fn subscribe_notifications(&self) -> Receiver<McpNotification>
Subscribe to MCP notifications.
Sourcepub fn register_tool(
&mut self,
tool: Tool,
requires_auth: bool,
handler: Arc<dyn McpToolHandler>,
)
pub fn register_tool( &mut self, tool: Tool, requires_auth: bool, handler: Arc<dyn McpToolHandler>, )
Register an MCP tool.
Sourcepub fn register_resource(
&mut self,
resource: Resource,
handler: Arc<dyn McpResourceHandler>,
)
pub fn register_resource( &mut self, resource: Resource, handler: Arc<dyn McpResourceHandler>, )
Register an MCP resource.
Sourcepub async fn handle_request(&self, request: JsonRpcRequest) -> JsonRpcResponse
pub async fn handle_request(&self, request: JsonRpcRequest) -> JsonRpcResponse
Handle a single JSON-RPC request.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for McpServer
impl !RefUnwindSafe for McpServer
impl Send for McpServer
impl Sync for McpServer
impl Unpin for McpServer
impl !UnwindSafe for McpServer
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
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().