Skip to main content

McpServerCustomization

Struct McpServerCustomization 

Source
pub struct McpServerCustomization {
    pub id: String,
    pub uri: Uri,
    pub name: String,
    pub icons: Option<Vec<Icon>>,
    pub range: Option<TextRange>,
    pub meta: Option<JsonObject>,
    pub enablement: Option<Vec<CustomizationEnablement>>,
    pub state: McpServerState,
    pub channel: Option<Uri>,
    pub mcp_app: Option<McpServerCustomizationApps>,
}
Expand description

An MCP server contributed by a plugin or directory.

When the server is declared inline in the containing plugin manifest, uri points at the manifest file and {@link CustomizationBase.range | range} narrows it to the declaration’s span.

The MCP server customization also reflects its current status.

Fields§

§id: String

Session-unique opaque identifier. Used by every action that targets a specific customization. Minted by whoever publishes the customization (typically the agent host).

§uri: Uri

Source URI for this customization. A plugin URL, a file URI, or a directory URI.

For declarations that live inside a larger file — e.g. an MCP server declared inline in a plugins.json manifest — uri points to the containing file and {@link CustomizationBase.range | range} narrows it to the declaration’s span.

§name: String

Human-readable name.

§icons: Option<Vec<Icon>>

Icons for UI display.

§range: Option<TextRange>

Optional span within {@link CustomizationBase.uri | uri} when this customization is a subset of a larger file (for example, one entry in an inline mcpServers block of a plugins.json manifest). Absent when the customization covers the whole resource.

§meta: Option<JsonObject>

Additional provider-specific metadata for this customization.

Mirrors the MCP _meta convention. Optional and opaque to the protocol; producers and consumers agree on its contents out-of-band.

§enablement: Option<Vec<CustomizationEnablement>>

Explicit enablement decisions for this customization, one entry per scope that has one. This is a wire contract: producers MUST publish entries sorted by descending specificity (Session, Workspace, then Global). The agent host emits at most one Workspace entry, for the session’s primary working directory. Consumers MAY treat enablement[0] as the decisive decision and enablement?.[0]?.enabled ?? true as the effective enabled value. An absent or empty array means no explicit decision exists, so the customization is enabled by default.

Flows in both directions. A client publishes this alongside a customization to assert its global decision, which is authoritative for the Global scope; a client always includes its global entry, even when enabled. The host publishes the fully resolved set across all scopes, and consumers derive the effective enabled value from that set.

§state: McpServerState

Current lifecycle state of the MCP server.

§channel: Option<Uri>

An mcp://-protocol channel the client uses to side-channel traffic into the upstream MCP server itself. The channel is NOT a fresh raw MCP connection: it piggybacks on the AHP transport and skips the MCP initialize sequence.

The agent host MAY only serve a subset of MCP on this channel; the served subset is described by domain-specific capabilities such as those in {@link McpServerCustomizationApps.capabilities}.

The channel URI SHOULD be stable across the server’s lifetime, but the agent host MAY change it (for example across a restart) and MAY only expose it while the server is in {@link McpServerStatus.Ready | Ready}. Absence means no side-channel is currently available.

§mcp_app: Option<McpServerCustomizationApps>

MCP App support. This property SHOULD be advertised for MCP servers which support apps.

Trait Implementations§

Source§

impl Clone for McpServerCustomization

Source§

fn clone(&self) -> McpServerCustomization

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 McpServerCustomization

Source§

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

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

impl<'de> Deserialize<'de> for McpServerCustomization

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 PartialEq for McpServerCustomization

Source§

fn eq(&self, other: &McpServerCustomization) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for McpServerCustomization

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
Source§

impl StructuralPartialEq for McpServerCustomization

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, 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> 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.