pub struct McpClient { /* private fields */ }Implementations§
Source§impl McpClient
impl McpClient
Sourcepub fn new(config: McpClientConfig) -> Self
pub fn new(config: McpClientConfig) -> Self
Create a new MCP client from the configuration.
Sourcepub fn with_sandbox_context(
config: McpClientConfig,
sandbox_context: Option<McpSandboxContext>,
) -> Self
pub fn with_sandbox_context( config: McpClientConfig, sandbox_context: Option<McpSandboxContext>, ) -> Self
Create an MCP client with an optional inherited stdio sandbox context.
Sourcepub fn set_elicitation_handler(
&mut self,
handler: Arc<dyn McpElicitationHandler>,
)
pub fn set_elicitation_handler( &mut self, handler: Arc<dyn McpElicitationHandler>, )
Register a handler used to satisfy elicitation requests from providers.
Sourcepub async fn initialize(&mut self) -> Result<()>
pub async fn initialize(&mut self) -> Result<()>
Establish connections to all configured providers and complete the MCP handshake.
Sourcepub fn update_allowlist(&self, allowlist: McpAllowListConfig)
pub fn update_allowlist(&self, allowlist: McpAllowListConfig)
Refresh the internal allow list at runtime.
Sourcepub fn current_allowlist(&self) -> McpAllowListConfig
pub fn current_allowlist(&self) -> McpAllowListConfig
Current allow list snapshot.
Sourcepub fn provider_for_tool(&self, tool_name: &str) -> Option<String>
pub fn provider_for_tool(&self, tool_name: &str) -> Option<String>
Return the provider name serving the given tool if previously cached.
Sourcepub fn provider_for_resource(&self, uri: &str) -> Option<String>
pub fn provider_for_resource(&self, uri: &str) -> Option<String>
Return the provider responsible for the given resource URI if known.
Sourcepub fn provider_for_prompt(&self, prompt_name: &str) -> Option<String>
pub fn provider_for_prompt(&self, prompt_name: &str) -> Option<String>
Return the provider that exposes the given prompt if known.
Sourcepub async fn execute_tool(&self, tool_name: &str, args: Value) -> Result<Value>
pub async fn execute_tool(&self, tool_name: &str, args: Value) -> Result<Value>
Execute a tool call on the appropriate provider.
Sourcepub async fn list_tools(&self) -> Result<Vec<McpToolInfo>>
pub async fn list_tools(&self) -> Result<Vec<McpToolInfo>>
List all tools from all active providers.
Sourcepub async fn list_resources(&self) -> Result<Vec<McpResourceInfo>>
pub async fn list_resources(&self) -> Result<Vec<McpResourceInfo>>
List all resources exposed by connected MCP providers.
Sourcepub async fn refresh_resources(&self) -> Result<Vec<McpResourceInfo>>
pub async fn refresh_resources(&self) -> Result<Vec<McpResourceInfo>>
Force refresh and list resources from providers.
Sourcepub async fn list_prompts(&self) -> Result<Vec<McpPromptInfo>>
pub async fn list_prompts(&self) -> Result<Vec<McpPromptInfo>>
List all prompts advertised by connected MCP providers.
Sourcepub async fn refresh_prompts(&self) -> Result<Vec<McpPromptInfo>>
pub async fn refresh_prompts(&self) -> Result<Vec<McpPromptInfo>>
Force refresh and list prompts from providers.
Sourcepub async fn read_resource(&self, uri: &str) -> Result<McpResourceData>
pub async fn read_resource(&self, uri: &str) -> Result<McpResourceData>
Read a single resource from its originating provider.
Sourcepub async fn get_prompt(
&self,
prompt_name: &str,
arguments: Option<HashMap<String, String>>,
) -> Result<McpPromptDetail>
pub async fn get_prompt( &self, prompt_name: &str, arguments: Option<HashMap<String, String>>, ) -> Result<McpPromptDetail>
Retrieve a rendered prompt from its originating provider.
Sourcepub fn get_status(&self) -> McpClientStatus
pub fn get_status(&self) -> McpClientStatus
Current status snapshot for UI/debugging purposes.
Sourcepub async fn list_servers(&self) -> Vec<Value>
pub async fn list_servers(&self) -> Vec<Value>
Return configured MCP servers and their current connection state.
Connected servers additionally report the protocol version settled
during the handshake (negotiated_protocol_version), which may differ
from the configured version when the server negotiates down.
Sourcepub fn allow_model_lifecycle_control(&self) -> bool
pub fn allow_model_lifecycle_control(&self) -> bool
Return whether model-callable lifecycle tools are enabled by config.
Sourcepub async fn connect_server(&self, server_name: &str) -> Result<()>
pub async fn connect_server(&self, server_name: &str) -> Result<()>
Connect one configured MCP server by name.
Sourcepub async fn disconnect_server(&self, server_name: &str) -> Result<()>
pub async fn disconnect_server(&self, server_name: &str) -> Result<()>
Disconnect one active MCP server by name.
Sourcepub async fn sync_tools_to_files(
&self,
workspace_root: &Path,
) -> Result<(PathBuf, usize)>
pub async fn sync_tools_to_files( &self, workspace_root: &Path, ) -> Result<(PathBuf, usize)>
Sync MCP tool descriptions to files for dynamic context discovery
This implements Cursor-style dynamic context discovery:
- Tool descriptions are written to
.vtcode/mcp/tools/{provider}/{tool}.md - Status is written to
.vtcode/mcp/status.json - Agents can discover tools via grep/read_file without loading all schemas
Returns the paths to written files (index path, tool count)
Trait Implementations§
Source§impl McpToolExecutor for McpClient
impl McpToolExecutor for McpClient
fn execute_mcp_tool<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tool_name: &'life1 str,
args: &'life2 Value,
) -> Pin<Box<dyn Future<Output = Result<Value>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn list_mcp_tools<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<McpToolInfo>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn has_mcp_tool<'life0, 'life1, 'async_trait>(
&'life0 self,
tool_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_status(&self) -> McpClientStatus
Auto Trait Implementations§
impl !Freeze for McpClient
impl !RefUnwindSafe for McpClient
impl !UnwindSafe for McpClient
impl Send for McpClient
impl Sync for McpClient
impl Unpin for McpClient
impl UnsafeUnpin for McpClient
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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> 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> ⓘ
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