pub struct McpRegistry { /* private fields */ }Implementations§
Source§impl McpRegistry
impl McpRegistry
pub async fn load_from_file(path: &str) -> Result<Self>
pub async fn from_config(cfg: &McpConfig) -> Result<Self>
Sourcepub fn new_with_test_tool(name: &str, description: &str) -> Self
pub fn new_with_test_tool(name: &str, description: &str) -> Self
Creates a registry with a single test tool.
Sourcepub fn new_with_test_tool_annotations(
name: &str,
description: &str,
annotations: ToolAnnotations,
) -> Result<Self, ToolAssemblyError>
pub fn new_with_test_tool_annotations( name: &str, description: &str, annotations: ToolAnnotations, ) -> Result<Self, ToolAssemblyError>
Creates a registry with one annotated test tool.
§Errors
Returns an assembly error if the static schema or generated descriptor is invalid.
Sourcepub fn new_with_test_tool_for_server(
server: &str,
name: &str,
description: &str,
annotations: ToolAnnotations,
) -> Result<Self, ToolAssemblyError>
pub fn new_with_test_tool_for_server( server: &str, name: &str, description: &str, annotations: ToolAnnotations, ) -> Result<Self, ToolAssemblyError>
Creates a registry with one annotated test tool under server.
§Errors
Returns an assembly error if the static schema or generated descriptor is invalid.
Sourcepub fn descriptors(&self) -> Vec<Arc<ToolDescriptor>>
pub fn descriptors(&self) -> Vec<Arc<ToolDescriptor>>
Return compiled descriptors in provider-name order.
Sourcepub fn descriptor(&self, provider_name: &str) -> Option<Arc<ToolDescriptor>>
pub fn descriptor(&self, provider_name: &str) -> Option<Arc<ToolDescriptor>>
Look up one compiled descriptor by provider-visible name.
Sourcepub fn server_names(&self) -> Vec<String>
pub fn server_names(&self) -> Vec<String>
Return configured MCP server names.
Sourcepub async fn freeze_bindings(&self) -> Result<Self>
pub async fn freeze_bindings(&self) -> Result<Self>
Freeze the selected descriptors and exact live transports for delegation. Re-list selected remote tools on those same transports to reject a configuration/catalog replacement racing snapshot capture. New tools are not added. This view cannot connect, reconnect, merge, or add tools.
§Errors
Refuses missing/closed bindings, changed descriptors, or failed discovery.
Sourcepub fn has_frozen_bindings(&self) -> bool
pub fn has_frozen_bindings(&self) -> bool
Whether this registry is a captured connection view, not a catalog that may establish connections from configuration or environment variables.
Sourcepub fn require_bound_servers<'a>(
&self,
servers: impl IntoIterator<Item = &'a str>,
) -> Result<()>
pub fn require_bound_servers<'a>( &self, servers: impl IntoIterator<Item = &'a str>, ) -> Result<()>
Validate inherited dependencies without starting or reconfiguring them.
§Errors
Refuses a non-frozen registry or any unavailable/replaced connection.
Sourcepub fn is_native_tool(&self, namespaced_name: &str) -> bool
pub fn is_native_tool(&self, namespaced_name: &str) -> bool
Return whether the namespaced tool is backed by an in-process native tool.
Sourcepub fn resolve_mcp_tool(
&self,
namespaced_name: &str,
) -> Option<(String, String)>
pub fn resolve_mcp_tool( &self, namespaced_name: &str, ) -> Option<(String, String)>
Resolve the backing MCP server and raw tool name for a namespaced tool.
Sourcepub fn server_entries(&self) -> HashMap<String, McpServerEntry>
pub fn server_entries(&self) -> HashMap<String, McpServerEntry>
Return persisted runtime MCP definitions without exposing connected handles.
Sourcepub async fn upsert_server(
&self,
name: String,
entry: McpServerEntry,
) -> Result<()>
pub async fn upsert_server( &self, name: String, entry: McpServerEntry, ) -> Result<()>
Add or replace one MCP server and immediately refresh its advertised tools.
Sourcepub fn remove_server(&self, name: &str) -> bool
pub fn remove_server(&self, name: &str) -> bool
Remove one MCP server and every tool it contributed.
Sourcepub fn merge(&self, other: &McpRegistry) -> Result<Self, McpMergeError>
pub fn merge(&self, other: &McpRegistry) -> Result<Self, McpMergeError>
Merge another registry into this one, returning a deduplicated registry. This is used to combine global tools with skill-specific tools.
§Errors
Returns a collision for incompatible descriptors, or rejects composition involving a frozen connection view. Delegation only supports filtering.
Sourcepub fn filtered(
&self,
allowed_servers: Option<&HashSet<String>>,
allowed_tools: Option<&HashSet<String>>,
) -> Self
pub fn filtered( &self, allowed_servers: Option<&HashSet<String>>, allowed_tools: Option<&HashSet<String>>, ) -> Self
Return a registry narrowed to the server and tool sets allowed by the resolved run policy.
None means “all currently registered values” while Some(empty)
means “none”. Native tools are governed by allowed_tools because they
do not belong to an MCP server.
Sourcepub fn with_native_tool(
self,
tool: Arc<dyn NativeTool>,
) -> Result<Self, ToolAssemblyError>
pub fn with_native_tool( self, tool: Arc<dyn NativeTool>, ) -> Result<Self, ToolAssemblyError>
Add an in-process runtime tool and its compiled descriptor.
§Errors
Returns an assembly error for an invalid schema or a provider-name collision.
pub fn openai_tools_json(&self) -> Vec<Value>
Trait Implementations§
Source§impl Clone for McpRegistry
impl Clone for McpRegistry
Source§fn clone(&self) -> McpRegistry
fn clone(&self) -> McpRegistry
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for McpRegistry
impl !UnwindSafe for McpRegistry
impl Freeze for McpRegistry
impl Send for McpRegistry
impl Sync for McpRegistry
impl Unpin for McpRegistry
impl UnsafeUnpin for McpRegistry
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
U: Sized,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
U: Sized,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read moreimpl<T> AsyncFriendly for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
impl<T> ErasedDestructor for Twhere
T: 'static,
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§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>
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>
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>
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>,
Layered].impl<T> MaybeSend for Twhere
T: Send,
impl<T> MaybeSend for Twhere
T: Send,
§impl<T> Message for T
impl<T> Message for T
§fn from_boxed(m: BoxedMessage) -> Result<Self, BoxedDowncastErr>
fn from_boxed(m: BoxedMessage) -> Result<Self, BoxedDowncastErr>
§fn box_message(self, pid: &ActorId) -> Result<BoxedMessage, BoxedDowncastErr>
fn box_message(self, pid: &ActorId) -> Result<BoxedMessage, BoxedDowncastErr>
impl<T> OutputMessage for Twhere
T: Message + Clone,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Pointee for T
impl<T> Pointee for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<F, T, S> SimdInto<T, S> for Fwhere
T: SimdFrom<F, S>,
S: Simd,
impl<F, T, S> SimdInto<T, S> for Fwhere
T: SimdFrom<F, S>,
S: Simd,
impl<T> State for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.