Skip to main content

McpServerConfig

Struct McpServerConfig 

Source
pub struct McpServerConfig {
    pub name: String,
    pub command: String,
    pub args: Vec<String>,
    pub env: BTreeMap<String, String>,
    pub env_passthrough: Vec<String>,
    pub sandbox: bool,
    pub network: Option<bool>,
    pub capabilities: CapabilityOverride,
    pub disabled: bool,
}

Fields§

§name: String

Prefixed onto every tool the server exposes, so two servers can both have a search without colliding.

§command: String§args: Vec<String>§env: BTreeMap<String, String>

Values handed to the server explicitly. Use this for a token the server needs, so granting it is a decision written down rather than a side-effect of what happened to be exported.

§env_passthrough: Vec<String>

Variables inherited from mecha’s own environment, by name.

Empty by default, and that default is the point: an MCP server is third-party code, and a process that inherits your whole environment inherits every provider key in it. PATH, HOME, LANG, LC_ALL and TZ always pass through — without them most runtimes cannot start.

§sandbox: bool

Confine this server with the configured [sandbox] backend.

Off by default because a confined server sees only the workspace and, unless allowed, no network — which is wrong for most of the servers people actually run. Worth turning on for anything you did not write.

§network: Option<bool>

Network for this server alone, overriding [sandbox] network.

The case this exists for: a third-party server that has to reach its own API, confined, while shell still has no way off the machine. With one shared switch you would have to open shell to satisfy the server.

§capabilities: CapabilityOverride

Capabilities forced onto every tool this server exposes, on top of whatever it declares for itself.

MCP capability flags come from the server’s own annotations, which means a third-party server decides how much the interlock distrusts it. An unannotated tool is treated as private-but-trusted — wrong in the dangerous direction for anything that reaches the open world. A Google Docs server is the worked example: a document someone shared with you is third-party text, and writing into a document an attacker can read is an exfiltration channel, so it is all three legs at once and says none of them.

Only ever widens — see crate::tool::Capabilities::union.

§disabled: bool

Skip this server without deleting its config.

Trait Implementations§

Source§

impl Clone for McpServerConfig

Source§

fn clone(&self) -> McpServerConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for McpServerConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for McpServerConfig

Source§

fn default() -> McpServerConfig

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for McpServerConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for McpServerConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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: Sized + 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: Sized + 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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