pub struct McpRegistry { /* private fields */ }Expand description
MCP Server Registry - manages multiple MCP server connections
This registry allows managing connections to multiple external MCP servers, enabling CodeTether to use tools from various sources like filesystem servers, database servers, and custom tool servers.
Implementations§
Source§impl McpRegistry
impl McpRegistry
Sourcepub async fn connect(
&self,
name: &str,
command: &str,
args: &[&str],
) -> Result<Arc<McpClient>>
pub async fn connect( &self, name: &str, command: &str, args: &[&str], ) -> Result<Arc<McpClient>>
Connect to an MCP server and register it with the registry
Sourcepub async fn register(
&self,
name: &str,
client: Arc<McpClient>,
capabilities: ServerCapabilities,
)
pub async fn register( &self, name: &str, client: Arc<McpClient>, capabilities: ServerCapabilities, )
Register a client with the registry
Sourcepub async fn get_capabilities(&self, name: &str) -> Option<ServerCapabilities>
pub async fn get_capabilities(&self, name: &str) -> Option<ServerCapabilities>
Get capabilities for a specific server
Sourcepub async fn has_capability(&self, name: &str, capability: &str) -> bool
pub async fn has_capability(&self, name: &str, capability: &str) -> bool
Check if a server has a specific capability
Sourcepub async fn list_by_capability(&self, capability: &str) -> Vec<String>
pub async fn list_by_capability(&self, capability: &str) -> Vec<String>
List servers that have a specific capability
Sourcepub async fn disconnect(&self, name: &str) -> Result<()>
pub async fn disconnect(&self, name: &str) -> Result<()>
Disconnect from a server
Sourcepub async fn all_tools(&self) -> Vec<(String, McpTool)>
pub async fn all_tools(&self) -> Vec<(String, McpTool)>
Get all available tools from all servers
Sourcepub async fn find_tool(&self, tool_name: &str) -> Option<(String, McpTool)>
pub async fn find_tool(&self, tool_name: &str) -> Option<(String, McpTool)>
Find a specific tool across all servers
Sourcepub async fn refresh_tool_index(&self)
pub async fn refresh_tool_index(&self)
Refresh the tool index from all servers
Sourcepub async fn call_tool(
&self,
server: &str,
tool: &str,
arguments: Value,
) -> Result<CallToolResult>
pub async fn call_tool( &self, server: &str, tool: &str, arguments: Value, ) -> Result<CallToolResult>
Call a tool on a specific server
Sourcepub async fn call_tool_auto(
&self,
tool_name: &str,
arguments: Value,
) -> Result<CallToolResult>
pub async fn call_tool_auto( &self, tool_name: &str, arguments: Value, ) -> Result<CallToolResult>
Call a tool by name, finding the appropriate server automatically
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for McpRegistry
impl !RefUnwindSafe for McpRegistry
impl Send for McpRegistry
impl Sync for McpRegistry
impl Unpin for McpRegistry
impl !UnwindSafe for McpRegistry
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> 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> 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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ServiceExt for T
impl<T> ServiceExt for T
Source§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
Apply a transformation to the response body. Read more
Source§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using HTTP status codes. Read more
Source§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using gRPC headers. Read more