Class ClientCapabilities
- Namespace
- ModelContextProtocol.Protocol
- Assembly
- ModelContextProtocol.Core.dll
Represents the capabilities that a client supports.
public sealed class ClientCapabilities
- Inheritance
-
ClientCapabilities
- Inherited Members
Remarks
Capabilities define the features and functionality that a client can handle when communicating with an MCP server. These are advertised to the server during the initialize handshake.
See the schema for details.
Properties
Elicitation
Gets or sets the client's elicitation capability, which indicates whether the client supports elicitation of additional information from the user on behalf of the server.
[JsonPropertyName("elicitation")]
public ElicitationCapability? Elicitation { get; set; }
Property Value
Experimental
Gets or sets experimental, non-standard capabilities that the client supports.
[JsonPropertyName("experimental")]
public IDictionary<string, object>? Experimental { get; set; }
Property Value
Remarks
The Experimental dictionary allows clients to advertise support for features that are not yet standardized in the Model Context Protocol specification. This extension mechanism enables future protocol enhancements while maintaining backward compatibility.
Values in this dictionary are implementation-specific and should be coordinated between client and server implementations. Servers should not assume the presence of any experimental capability without checking for it first.
Extensions
Gets or sets optional MCP extensions that the client supports.
[JsonPropertyName("extensions")]
public IDictionary<string, object>? Extensions { get; set; }
Property Value
Remarks
Keys are extension identifiers in reverse domain notation with an extension name
(e.g., "io.modelcontextprotocol/oauth-client-credentials"), and values are
per-extension settings objects. An empty object indicates support with no additional settings.
Extensions provide a framework for extending the Model Context Protocol while maintaining interoperability. Clients advertise extension support via this field during the initialization handshake.
Roots
Gets or sets the client's roots capability, which are entry points for resource navigation.
[JsonPropertyName("roots")]
[Obsolete("The Roots feature is deprecated as of specification version 2026-07-28 and may be removed in a future version. See SEP-2577 for more information.", DiagnosticId = "MCP9005", UrlFormat = "https://github.com/modelcontextprotocol/csharp-sdk/blob/main/docs/list-of-diagnostics.md#obsolete-apis")]
public RootsCapability? Roots { get; set; }
Property Value
Remarks
When Roots is non-null, the client indicates that it can respond to server requests for listing root URIs. Root URIs serve as entry points for resource navigation in the protocol.
The server can use RequestRootsAsync(ListRootsRequestParams, CancellationToken) to request the list of available roots from the client, which will trigger the client's RootsHandler.
Sampling
Gets or sets the client's sampling capability, which indicates whether the client supports issuing requests to an LLM on behalf of the server.
[JsonPropertyName("sampling")]
[Obsolete("The Sampling feature is deprecated as of specification version 2026-07-28 and may be removed in a future version. See SEP-2577 for more information.", DiagnosticId = "MCP9005", UrlFormat = "https://github.com/modelcontextprotocol/csharp-sdk/blob/main/docs/list-of-diagnostics.md#obsolete-apis")]
public SamplingCapability? Sampling { get; set; }