Skip to main content

McpCapabilityProvider

Struct McpCapabilityProvider 

Source
pub struct McpCapabilityProvider { /* private fields */ }
Expand description

A CapabilityProvider that surfaces MCP tools, resources, and prompts into the agentkit capabilities system.

Built from a discovery snapshot, this provider wraps each MCP tool as an McpInvocable, each resource as an McpResourceHandle, and each prompt as an McpPromptHandle.

§Example

use std::sync::Arc;
use agentkit_mcp::{McpCapabilityProvider, McpServerConfig, McpTransportBinding, StdioTransportConfig};

let config = McpServerConfig::new(
    "filesystem",
    McpTransportBinding::Stdio(StdioTransportConfig::new("npx")
        .with_arg("-y")
        .with_arg("@modelcontextprotocol/server-filesystem")),
);
let (connection, provider, snapshot) = McpCapabilityProvider::connect(&config).await?;
// `provider` implements CapabilityProvider and can be registered with an agent.

Implementations§

Source§

impl McpCapabilityProvider

Source

pub fn from_snapshot( connection: Arc<McpConnection>, snapshot: &McpDiscoverySnapshot, ) -> Self

Creates a capability provider from an existing connection and its discovery snapshot.

Each tool, resource, and prompt in the snapshot is wrapped in the appropriate adapter type.

Source

pub fn merge<I>(providers: I) -> Self
where I: IntoIterator<Item = Self>,

Merges multiple capability providers into a single provider.

This is useful when managing several MCP servers through a McpServerManager and you want one combined provider for the agent.

Source

pub async fn connect( config: &McpServerConfig, ) -> Result<(Arc<McpConnection>, Self, McpDiscoverySnapshot), McpError>

Connects to an MCP server, performs discovery, and builds a capability provider in one step.

Returns the shared connection, the provider, and the discovery snapshot.

§Errors

Returns McpError if connection or discovery fails.

Trait Implementations§

Source§

impl CapabilityProvider for McpCapabilityProvider

Source§

fn invocables(&self) -> Vec<Arc<dyn Invocable>>

Returns all invocable capabilities offered by this provider.
Source§

fn resources(&self) -> Vec<Arc<dyn ResourceProvider>>

Returns all resource providers offered by this provider.
Source§

fn prompts(&self) -> Vec<Arc<dyn PromptProvider>>

Returns all prompt providers offered by this provider.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more