using System.ComponentModel; using System.Text.Json.Serialization; using ModelContextProtocol.Server; namespace ModelContextProtocol.Protocol; /// /// Represents the capabilities that a server supports. /// /// /// /// Server capabilities define the features and functionality available when clients connect. /// These capabilities are advertised to clients during the initialize handshake. /// /// /// See the schema for details. /// /// public sealed class ServerCapabilities { /// /// Gets or sets experimental, non-standard capabilities that the server supports. /// /// /// /// The dictionary allows servers 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. Clients should not assume the presence of any experimental capability /// without checking for it first. /// /// [JsonPropertyName("experimental")] public IDictionary? Experimental { get; set; } /// /// Gets or sets a server's logging capability for sending log messages to the client. /// [JsonPropertyName("logging")] public LoggingCapability? Logging { get; set; } /// /// Gets or sets a server's prompts capability for serving predefined prompt templates that clients can discover and use. /// [JsonPropertyName("prompts")] public PromptsCapability? Prompts { get; set; } /// /// Gets or sets a server's resources capability for serving predefined resources that clients can discover and use. /// [JsonPropertyName("resources")] public ResourcesCapability? Resources { get; set; } /// /// Gets or sets a server's tools capability for listing tools that a client is able to invoke. /// [JsonPropertyName("tools")] public ToolsCapability? Tools { get; set; } /// /// Gets or sets a server's completions capability for supporting argument auto-completion suggestions. /// [JsonPropertyName("completions")] public CompletionsCapability? Completions { get; set; } }