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: StringSession-unique opaque identifier. Used by every action that targets a specific customization. Minted by whoever publishes the customization (typically the agent host).
uri: UriSource 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: StringHuman-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: McpServerStateCurrent 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
impl Clone for McpServerCustomization
Source§fn clone(&self) -> McpServerCustomization
fn clone(&self) -> McpServerCustomization
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more