From bb32d0ee20ca998082f67d8e566f161348498714 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 31 Mar 2026 19:46:21 +0000 Subject: [PATCH 1/7] Initial plan From 35e7e59607a51774e90eb701c831d945f72c69d6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 31 Mar 2026 20:36:14 +0000 Subject: [PATCH 2/7] feat: Add MCP Apps extension support (F1-F3, F6, F7) Agent-Logs-Url: https://github.com/modelcontextprotocol/csharp-sdk/sessions/5ec8e2cd-39e5-4b4c-a18e-182ccaaa7637 Co-authored-by: mikekistler <85643503+mikekistler@users.noreply.github.com> --- docs/list-of-diagnostics.md | 2 +- src/Common/Experimentals.cs | 19 + .../McpJsonUtilities.cs | 7 + .../Server/AIFunctionMcpServerTool.cs | 39 +- .../Server/McpAppUiAttribute.cs | 56 +++ .../Server/McpApps.cs | 113 +++++ .../Server/McpServerToolCreateOptions.cs | 31 ++ .../Server/McpUiClientCapabilities.cs | 30 ++ .../Server/McpUiResourceCsp.cs | 49 +++ .../Server/McpUiResourceMeta.cs | 50 +++ .../Server/McpUiResourcePermissions.cs | 27 ++ .../Server/McpUiToolMeta.cs | 45 ++ .../Server/McpUiToolVisibility.cs | 26 ++ .../Server/McpAppsTests.cs | 403 ++++++++++++++++++ 14 files changed, 893 insertions(+), 4 deletions(-) create mode 100644 src/ModelContextProtocol.Core/Server/McpAppUiAttribute.cs create mode 100644 src/ModelContextProtocol.Core/Server/McpApps.cs create mode 100644 src/ModelContextProtocol.Core/Server/McpUiClientCapabilities.cs create mode 100644 src/ModelContextProtocol.Core/Server/McpUiResourceCsp.cs create mode 100644 src/ModelContextProtocol.Core/Server/McpUiResourceMeta.cs create mode 100644 src/ModelContextProtocol.Core/Server/McpUiResourcePermissions.cs create mode 100644 src/ModelContextProtocol.Core/Server/McpUiToolMeta.cs create mode 100644 src/ModelContextProtocol.Core/Server/McpUiToolVisibility.cs create mode 100644 tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md index 515472817..ebbad5907 100644 --- a/docs/list-of-diagnostics.md +++ b/docs/list-of-diagnostics.md @@ -23,7 +23,7 @@ If you use experimental APIs, you will get one of the diagnostics shown below. T | Diagnostic ID | Description | | :------------ | :---------- | -| `MCPEXP001` | Experimental APIs for features in the MCP specification itself, including Tasks and Extensions. Tasks provide a mechanism for asynchronous long-running operations that can be polled for status and results (see [MCP Tasks specification](https://modelcontextprotocol.io/specification/draft/basic/utilities/tasks)). Extensions provide a framework for extending the Model Context Protocol while maintaining interoperability (see [SEP-2133](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2133)). | +| `MCPEXP001` | Experimental APIs for features in the MCP specification itself, including Tasks, Extensions, and the MCP Apps extension. Tasks provide a mechanism for asynchronous long-running operations that can be polled for status and results (see [MCP Tasks specification](https://modelcontextprotocol.io/specification/draft/basic/utilities/tasks)). Extensions provide a framework for extending the Model Context Protocol while maintaining interoperability (see [SEP-2133](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2133)). MCP Apps is the first official MCP extension, enabling servers to deliver interactive UIs inside AI clients (see [MCP Apps specification](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx)). | | `MCPEXP002` | Experimental SDK APIs unrelated to the MCP specification itself, including subclassing `McpClient`/`McpServer` (see [#1363](https://github.com/modelcontextprotocol/csharp-sdk/pull/1363)) and `RunSessionHandler`, which may be removed or change signatures in a future release (consider using `ConfigureSessionOptions` instead). | ## Obsolete APIs diff --git a/src/Common/Experimentals.cs b/src/Common/Experimentals.cs index 7e7e969bb..54904db2a 100644 --- a/src/Common/Experimentals.cs +++ b/src/Common/Experimentals.cs @@ -71,6 +71,25 @@ internal static class Experimentals /// public const string Extensions_Url = "https://github.com/modelcontextprotocol/csharp-sdk/blob/main/docs/list-of-diagnostics.md#mcpexp001"; + /// + /// Diagnostic ID for experimental MCP Apps extension APIs. + /// + /// + /// This uses the same diagnostic ID as because + /// MCP Apps is implemented as an MCP extension ("io.modelcontextprotocol/ui"). + /// + public const string Apps_DiagnosticId = "MCPEXP001"; + + /// + /// Message for the experimental MCP Apps extension APIs. + /// + public const string Apps_Message = "The MCP Apps extension is experimental and subject to change as the specification evolves."; + + /// + /// URL for the experimental MCP Apps extension APIs. + /// + public const string Apps_Url = "https://github.com/modelcontextprotocol/csharp-sdk/blob/main/docs/list-of-diagnostics.md#mcpexp001"; + /// /// Diagnostic ID for experimental SDK APIs unrelated to the MCP specification, /// such as subclassing McpClient/McpServer or referencing RunSessionHandler. diff --git a/src/ModelContextProtocol.Core/McpJsonUtilities.cs b/src/ModelContextProtocol.Core/McpJsonUtilities.cs index abb6d29df..13a935311 100644 --- a/src/ModelContextProtocol.Core/McpJsonUtilities.cs +++ b/src/ModelContextProtocol.Core/McpJsonUtilities.cs @@ -187,6 +187,13 @@ internal static bool IsValidMcpToolSchema(JsonElement element) [JsonSerializable(typeof(DynamicClientRegistrationRequest))] [JsonSerializable(typeof(DynamicClientRegistrationResponse))] + // MCP Apps extension types + [JsonSerializable(typeof(Server.McpUiToolMeta))] + [JsonSerializable(typeof(Server.McpUiClientCapabilities))] + [JsonSerializable(typeof(Server.McpUiResourceMeta))] + [JsonSerializable(typeof(Server.McpUiResourceCsp))] + [JsonSerializable(typeof(Server.McpUiResourcePermissions))] + // Primitive types for use in consuming AIFunctions [JsonSerializable(typeof(string))] [JsonSerializable(typeof(byte))] diff --git a/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs b/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs index 700d9d26d..a83dd33ae 100644 --- a/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs +++ b/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs @@ -144,10 +144,21 @@ options.OpenWorld is not null || }; } - // Populate Meta from options and/or McpMetaAttribute instances if a MethodInfo is available + // Populate Meta from options and/or McpMetaAttribute instances if a MethodInfo is available. + // Priority order (highest to lowest): + // 1. Explicit options.Meta entries + // 2. AppUi metadata (from McpAppUiAttribute or McpServerToolCreateOptions.AppUi) + // 3. McpMetaAttribute entries on the method + JsonObject? seededMeta = options.Meta; + if (options.AppUi is { } appUi) + { + seededMeta = seededMeta is not null ? CloneJsonObject(seededMeta) : new JsonObject(); + McpApps.ApplyUiToolMetaToJsonObject(appUi, seededMeta); + } + tool.Meta = function.UnderlyingMethod is not null ? - CreateMetaFromAttributes(function.UnderlyingMethod, options.Meta) : - options.Meta; + CreateMetaFromAttributes(function.UnderlyingMethod, seededMeta) : + seededMeta; // Apply user-specified Execution settings if provided if (options.Execution is not null) @@ -225,6 +236,16 @@ private static McpServerToolCreateOptions DeriveOptions(MethodInfo method, McpSe newOptions.Description ??= descAttr.Description; } + // Process McpAppUiAttribute — takes precedence over options.AppUi set via constructor. + if (method.GetCustomAttribute() is { } appUiAttr) + { + newOptions.AppUi = new McpUiToolMeta + { + ResourceUri = appUiAttr.ResourceUri, + Visibility = appUiAttr.Visibility, + }; + } + // Set metadata if not already provided newOptions.Metadata ??= CreateMetadata(method); @@ -405,6 +426,18 @@ internal static IReadOnlyList CreateMetadata(MethodInfo method) return meta; } + /// Creates a shallow-content clone of a so that keys can be added without mutating the original. + private static JsonObject CloneJsonObject(JsonObject source) + { + var clone = new JsonObject(); + foreach (var kvp in source) + { + // DeepClone each value to avoid sharing nodes between two JsonObject instances. + clone[kvp.Key] = kvp.Value?.DeepClone(); + } + return clone; + } + #if NET /// Regex that flags runs of characters other than ASCII digits or letters. [GeneratedRegex("[^0-9A-Za-z]+")] diff --git a/src/ModelContextProtocol.Core/Server/McpAppUiAttribute.cs b/src/ModelContextProtocol.Core/Server/McpAppUiAttribute.cs new file mode 100644 index 000000000..6d056b9bf --- /dev/null +++ b/src/ModelContextProtocol.Core/Server/McpAppUiAttribute.cs @@ -0,0 +1,56 @@ +using System.Diagnostics.CodeAnalysis; + +namespace ModelContextProtocol.Server; + +/// +/// Specifies MCP Apps UI metadata for a tool method. +/// +/// +/// +/// Apply this attribute alongside to associate a tool with a +/// UI resource in the MCP Apps extension. When processed, it populates both the structured +/// _meta.ui object and the legacy _meta["ui/resourceUri"] flat key in the tool's +/// metadata for backward compatibility with older MCP hosts. +/// +/// +/// This attribute takes precedence over any raw [McpMeta("ui", ...)] attribute on the +/// same method. +/// +/// +/// +/// +/// [McpServerTool] +/// [McpAppUi(ResourceUri = "ui://weather/view.html")] +/// [Description("Get current weather for a location")] +/// public string GetWeather(string location) => ...; +/// +/// // Restrict visibility to model only: +/// [McpServerTool] +/// [McpAppUi(ResourceUri = "ui://weather/view.html", Visibility = [McpUiToolVisibility.Model])] +/// public string GetWeatherModelOnly(string location) => ...; +/// +/// +[AttributeUsage(AttributeTargets.Method)] +[Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] +public sealed class McpAppUiAttribute : Attribute +{ + /// + /// Gets or sets the URI of the UI resource associated with this tool. + /// + /// + /// This should be a ui:// URI pointing to the HTML resource registered + /// with the server (e.g., "ui://weather/view.html"). + /// + public string? ResourceUri { get; set; } + + /// + /// Gets or sets the visibility of the tool, controlling which principals can invoke it. + /// + /// + /// + /// Allowed values are and . + /// When or empty, the tool is visible to both the model and the app (the default). + /// + /// + public string[]? Visibility { get; set; } +} diff --git a/src/ModelContextProtocol.Core/Server/McpApps.cs b/src/ModelContextProtocol.Core/Server/McpApps.cs new file mode 100644 index 000000000..4f5292849 --- /dev/null +++ b/src/ModelContextProtocol.Core/Server/McpApps.cs @@ -0,0 +1,113 @@ +using ModelContextProtocol.Protocol; +using System.Diagnostics.CodeAnalysis; +using System.Text.Json; + +namespace ModelContextProtocol.Server; + +/// +/// Provides constants and helper methods for building MCP Apps-enabled servers. +/// +/// +/// +/// MCP Apps is an extension to the Model Context Protocol that enables MCP servers to deliver +/// interactive user interfaces — dashboards, forms, visualizations, and more — directly inside +/// conversational AI clients. +/// +/// +/// Use the constants in this class when populating the extensions capability and the +/// _meta field of tools and resources. Use to check whether +/// the connected client supports the MCP Apps extension. +/// +/// +public static class McpApps +{ + /// + /// The MIME type used for MCP App HTML resources. + /// + /// + /// This MIME type should be used when registering UI resources with + /// text/html;profile=mcp-app to indicate they are MCP App resources. + /// + public const string ResourceMimeType = "text/html;profile=mcp-app"; + + /// + /// The extension identifier used for MCP Apps capability negotiation. + /// + /// + /// This key is used in the and + /// dictionaries to advertise support for + /// the MCP Apps extension. + /// + public const string ExtensionId = "io.modelcontextprotocol/ui"; + + /// + /// The legacy flat _meta key for the UI resource URI. + /// + /// + /// + /// This key is used for backward compatibility with older MCP hosts that do not support + /// the nested _meta.ui object. When populating UI metadata, both this key and the + /// ui object should be set to the same resource URI value. + /// + /// + /// This key is considered legacy; prefer for new implementations. + /// + /// + public const string ResourceUriMetaKey = "ui/resourceUri"; + + /// + /// Gets the MCP Apps client capability, if advertised by the connected client. + /// + /// The client capabilities received during the MCP initialize handshake. + /// + /// A instance if the client advertises support for the MCP Apps extension; + /// otherwise, . + /// + /// + /// Use this method to determine whether the connected client supports the MCP Apps extension + /// and to read the client's supported MIME types. + /// + [Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] + public static McpUiClientCapabilities? GetUiCapability(ClientCapabilities? capabilities) + { + if (capabilities?.Extensions is not { } extensions || + !extensions.TryGetValue(ExtensionId, out var value)) + { + return null; + } + + if (value is JsonElement element) + { + return element.ValueKind == JsonValueKind.Null ? null : + JsonSerializer.Deserialize(element, McpJsonUtilities.JsonContext.Default.McpUiClientCapabilities); + } + + return null; + } + + /// + /// Applies UI tool metadata to a , setting both the + /// ui object key and the legacy ui/resourceUri flat key for backward compatibility. + /// Keys already present in are not overwritten. + /// + /// The UI tool metadata to apply. + /// The to populate. + internal static void ApplyUiToolMetaToJsonObject(McpUiToolMeta appUi, System.Text.Json.Nodes.JsonObject meta) + { + // Populate the structured "ui" object if not already present. + if (!meta.ContainsKey("ui")) + { + var uiNode = JsonSerializer.SerializeToNode(appUi, McpJsonUtilities.JsonContext.Default.McpUiToolMeta); + if (uiNode is not null) + { + meta["ui"] = uiNode; + } + } + + // Populate the legacy flat "ui/resourceUri" key if not already present. + if (!meta.ContainsKey(ResourceUriMetaKey) && appUi.ResourceUri is not null) + { + meta[ResourceUriMetaKey] = appUi.ResourceUri; + } + } +} diff --git a/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs b/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs index 88d718d13..33c5b1c82 100644 --- a/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs +++ b/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs @@ -197,6 +197,36 @@ public sealed class McpServerToolCreateOptions /// public JsonObject? Meta { get; set; } + /// + /// Gets or sets the MCP Apps UI metadata for this tool. + /// + /// + /// + /// When set, this metadata is merged into during tool creation, populating + /// both the structured _meta.ui object and the legacy _meta["ui/resourceUri"] + /// flat key for backward compatibility with older MCP hosts. + /// + /// + /// Explicit entries already present in take precedence over values from + /// this property. The on a method overrides this property + /// when both are specified. + /// + /// + /// + /// + /// var tool = McpServerTool.Create(handler, new McpServerToolCreateOptions + /// { + /// AppUi = new McpUiToolMeta + /// { + /// ResourceUri = "ui://weather/view.html", + /// Visibility = [McpUiToolVisibility.Model, McpUiToolVisibility.App] + /// } + /// }); + /// + /// + [Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] + public McpUiToolMeta? AppUi { get; set; } + /// /// Gets or sets the execution hints for this tool. /// @@ -235,6 +265,7 @@ internal McpServerToolCreateOptions Clone() => Metadata = Metadata, Icons = Icons, Meta = Meta, + AppUi = AppUi, Execution = Execution, }; } diff --git a/src/ModelContextProtocol.Core/Server/McpUiClientCapabilities.cs b/src/ModelContextProtocol.Core/Server/McpUiClientCapabilities.cs new file mode 100644 index 000000000..91e649d59 --- /dev/null +++ b/src/ModelContextProtocol.Core/Server/McpUiClientCapabilities.cs @@ -0,0 +1,30 @@ +using System.Diagnostics.CodeAnalysis; +using System.Text.Json.Serialization; + +namespace ModelContextProtocol.Server; + +/// +/// Represents the MCP Apps capabilities advertised by a client. +/// +/// +/// +/// This object is the value associated with the key in the +/// dictionary. +/// +/// +/// Use to read this from . +/// +/// +[Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] +public sealed class McpUiClientCapabilities +{ + /// + /// Gets or sets the list of MIME types supported by the client for MCP App UI resources. + /// + /// + /// A client that supports MCP Apps must include + /// ("text/html;profile=mcp-app") in this list. + /// + [JsonPropertyName("mimeTypes")] + public IList? MimeTypes { get; set; } +} diff --git a/src/ModelContextProtocol.Core/Server/McpUiResourceCsp.cs b/src/ModelContextProtocol.Core/Server/McpUiResourceCsp.cs new file mode 100644 index 000000000..60064863f --- /dev/null +++ b/src/ModelContextProtocol.Core/Server/McpUiResourceCsp.cs @@ -0,0 +1,49 @@ +using System.Diagnostics.CodeAnalysis; +using System.Text.Json.Serialization; + +namespace ModelContextProtocol.Server; + +/// +/// Represents the Content Security Policy (CSP) domain allowlists for an MCP Apps UI resource. +/// +/// +/// +/// These allowlists are used by the MCP host to construct the Content-Security-Policy HTTP header +/// for the sandboxed iframe that hosts the UI resource. +/// +/// +/// Each list contains origins (e.g., "https://api.example.com") that are permitted for +/// the corresponding CSP directive. +/// +/// +[Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] +public sealed class McpUiResourceCsp +{ + /// + /// Gets or sets the list of origins allowed for fetch, XMLHttpRequest, WebSocket, and EventSource + /// connections (connect-src CSP directive). + /// + [JsonPropertyName("connectDomains")] + public IList? ConnectDomains { get; set; } + + /// + /// Gets or sets the list of origins allowed for loading scripts, stylesheets, images, and fonts + /// (script-src, style-src, img-src, font-src CSP directives). + /// + [JsonPropertyName("resourceDomains")] + public IList? ResourceDomains { get; set; } + + /// + /// Gets or sets the list of origins allowed for loading nested frames + /// (frame-src CSP directive). + /// + [JsonPropertyName("frameDomains")] + public IList? FrameDomains { get; set; } + + /// + /// Gets or sets the list of allowed base URIs + /// (base-uri CSP directive). + /// + [JsonPropertyName("baseUris")] + public IList? BaseUris { get; set; } +} diff --git a/src/ModelContextProtocol.Core/Server/McpUiResourceMeta.cs b/src/ModelContextProtocol.Core/Server/McpUiResourceMeta.cs new file mode 100644 index 000000000..c8f3b3ed6 --- /dev/null +++ b/src/ModelContextProtocol.Core/Server/McpUiResourceMeta.cs @@ -0,0 +1,50 @@ +using System.Diagnostics.CodeAnalysis; +using System.Text.Json.Serialization; + +namespace ModelContextProtocol.Server; + +/// +/// Represents the UI metadata associated with an MCP resource in the MCP Apps extension. +/// +/// +/// This metadata is placed under the ui key in the resource's _meta object. +/// It provides Content Security Policy (CSP) configuration, sandbox permissions, CORS origin, and +/// visual boundary preferences for the UI resource served by this MCP server. +/// +[Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] +public sealed class McpUiResourceMeta +{ + /// + /// Gets or sets the Content Security Policy configuration for this resource. + /// + /// + /// Specifies the allowed origins for network requests, resource loads, and nested frames. + /// + [JsonPropertyName("csp")] + public McpUiResourceCsp? Csp { get; set; } + + /// + /// Gets or sets the sandbox permissions for this resource. + /// + /// + /// Controls which browser sandbox features the UI resource is allowed to use. + /// + [JsonPropertyName("permissions")] + public McpUiResourcePermissions? Permissions { get; set; } + + /// + /// Gets or sets the dedicated origin domain for this resource. + /// + /// + /// When set, the host will serve the resource from this dedicated origin, + /// enabling OAuth flows and CORS without wildcard exceptions. + /// + [JsonPropertyName("domain")] + public string? Domain { get; set; } + + /// + /// Gets or sets a value indicating whether the host should render a visual border around the UI. + /// + [JsonPropertyName("prefersBorder")] + public bool? PrefersBorder { get; set; } +} diff --git a/src/ModelContextProtocol.Core/Server/McpUiResourcePermissions.cs b/src/ModelContextProtocol.Core/Server/McpUiResourcePermissions.cs new file mode 100644 index 000000000..f8ff58041 --- /dev/null +++ b/src/ModelContextProtocol.Core/Server/McpUiResourcePermissions.cs @@ -0,0 +1,27 @@ +using System.Diagnostics.CodeAnalysis; +using System.Text.Json.Serialization; + +namespace ModelContextProtocol.Server; + +/// +/// Represents the sandbox permissions requested by an MCP Apps UI resource. +/// +/// +/// This maps to the allow attribute on the iframe sandbox in the MCP host. +/// Permissions are specified as standard browser iframe permission strings, +/// such as "camera", "microphone", or "geolocation". +/// +[Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] +public sealed class McpUiResourcePermissions +{ + /// + /// Gets or sets the list of permissions granted to the sandboxed UI resource. + /// + /// + /// These correspond to values allowed in the allow attribute of an HTML iframe, + /// for example "camera", "microphone", "geolocation", + /// "clipboard-read", or "clipboard-write". + /// + [JsonPropertyName("allow")] + public IList? Allow { get; set; } +} diff --git a/src/ModelContextProtocol.Core/Server/McpUiToolMeta.cs b/src/ModelContextProtocol.Core/Server/McpUiToolMeta.cs new file mode 100644 index 000000000..f56396e29 --- /dev/null +++ b/src/ModelContextProtocol.Core/Server/McpUiToolMeta.cs @@ -0,0 +1,45 @@ +using System.Diagnostics.CodeAnalysis; +using System.Text.Json.Serialization; + +namespace ModelContextProtocol.Server; + +/// +/// Represents the UI metadata associated with an MCP tool in the MCP Apps extension. +/// +/// +/// +/// This metadata is placed under the ui key in the tool's _meta object. +/// It associates the tool with a UI resource (identified by a ui:// URI) and optionally +/// controls which principals (model, app) can call the tool. +/// +/// +/// When this metadata is applied, both the structured _meta.ui object and the legacy +/// _meta["ui/resourceUri"] flat key are populated for backward compatibility with older hosts. +/// +/// +[Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] +public sealed class McpUiToolMeta +{ + /// + /// Gets or sets the URI of the UI resource associated with this tool. + /// + /// + /// This should be a ui:// URI pointing to the HTML resource registered + /// with the server (e.g., "ui://weather/view.html"). + /// + [JsonPropertyName("resourceUri")] + public string? ResourceUri { get; set; } + + /// + /// Gets or sets the visibility of the tool, controlling which principals can invoke it. + /// + /// + /// + /// Allowed values are ("model") and + /// ("app"). When + /// or empty, the tool is visible to both the model and the app (the default). + /// + /// + [JsonPropertyName("visibility")] + public IList? Visibility { get; set; } +} diff --git a/src/ModelContextProtocol.Core/Server/McpUiToolVisibility.cs b/src/ModelContextProtocol.Core/Server/McpUiToolVisibility.cs new file mode 100644 index 000000000..e9a454c25 --- /dev/null +++ b/src/ModelContextProtocol.Core/Server/McpUiToolVisibility.cs @@ -0,0 +1,26 @@ +using System.Diagnostics.CodeAnalysis; +using System.Text.Json.Serialization; + +namespace ModelContextProtocol.Server; + +/// +/// Provides well-known visibility values for . +/// +/// +/// Use these constants to specify which principals can invoke a tool in the MCP Apps extension. +/// When is or empty, the tool +/// is visible to both the model and the app by default. +/// +[Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] +public static class McpUiToolVisibility +{ + /// + /// Indicates that the tool can be invoked by the AI model. + /// + public const string Model = "model"; + + /// + /// Indicates that the tool can be invoked by the UI app (iframe). + /// + public const string App = "app"; +} diff --git a/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs b/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs new file mode 100644 index 000000000..f0d76def5 --- /dev/null +++ b/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs @@ -0,0 +1,403 @@ +#pragma warning disable MCPEXP001 + +using ModelContextProtocol.Protocol; +using ModelContextProtocol.Server; +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; +using System.Text.Json; +using System.Text.Json.Nodes; + +namespace ModelContextProtocol.Tests.Server; + +/// +/// Tests for MCP Apps extension support: McpApps constants, typed metadata models, +/// McpAppUiAttribute, and McpServerToolCreateOptions.AppUi. +/// +public class McpAppsTests +{ + #region F1: Constants + + [Fact] + public void McpApps_Constants_HaveExpectedValues() + { + Assert.Equal("text/html;profile=mcp-app", McpApps.ResourceMimeType); + Assert.Equal("io.modelcontextprotocol/ui", McpApps.ExtensionId); + Assert.Equal("ui/resourceUri", McpApps.ResourceUriMetaKey); + } + + [Fact] + public void McpUiToolVisibility_Constants_HaveExpectedValues() + { + Assert.Equal("model", McpUiToolVisibility.Model); + Assert.Equal("app", McpUiToolVisibility.App); + } + + #endregion + + #region F2: Typed Metadata Models + + [Fact] + public void McpUiToolMeta_DefaultsToNull() + { + var meta = new McpUiToolMeta(); + Assert.Null(meta.ResourceUri); + Assert.Null(meta.Visibility); + } + + [Fact] + public void McpUiToolMeta_CanBeRoundtrippedAsJson() + { + var meta = new McpUiToolMeta + { + ResourceUri = "ui://weather/view.html", + Visibility = [McpUiToolVisibility.Model, McpUiToolVisibility.App], + }; + + var json = JsonSerializer.Serialize(meta, McpJsonUtilities.DefaultOptions); + var deserialized = JsonSerializer.Deserialize(json, McpJsonUtilities.DefaultOptions); + + Assert.NotNull(deserialized); + Assert.Equal("ui://weather/view.html", deserialized.ResourceUri); + Assert.Equal(["model", "app"], deserialized.Visibility); + } + + [Fact] + public void McpUiToolMeta_OmitsNullProperties() + { + var meta = new McpUiToolMeta { ResourceUri = "ui://app" }; + var json = JsonSerializer.Serialize(meta, McpJsonUtilities.DefaultOptions); + var doc = JsonDocument.Parse(json); + + Assert.True(doc.RootElement.TryGetProperty("resourceUri", out _)); + Assert.False(doc.RootElement.TryGetProperty("visibility", out _)); + } + + [Fact] + public void McpUiResourceMeta_CanBeRoundtrippedAsJson() + { + var meta = new McpUiResourceMeta + { + Domain = "https://app.example.com", + PrefersBorder = true, + Csp = new McpUiResourceCsp + { + ConnectDomains = ["https://api.example.com"], + ResourceDomains = ["https://cdn.example.com"], + FrameDomains = ["https://embed.example.com"], + BaseUris = ["https://app.example.com"], + }, + Permissions = new McpUiResourcePermissions + { + Allow = ["camera", "microphone"], + }, + }; + + var json = JsonSerializer.Serialize(meta, McpJsonUtilities.DefaultOptions); + var deserialized = JsonSerializer.Deserialize(json, McpJsonUtilities.DefaultOptions); + + Assert.NotNull(deserialized); + Assert.Equal("https://app.example.com", deserialized.Domain); + Assert.True(deserialized.PrefersBorder); + Assert.NotNull(deserialized.Csp); + Assert.Equal(["https://api.example.com"], deserialized.Csp.ConnectDomains); + Assert.Equal(["https://cdn.example.com"], deserialized.Csp.ResourceDomains); + Assert.Equal(["https://embed.example.com"], deserialized.Csp.FrameDomains); + Assert.Equal(["https://app.example.com"], deserialized.Csp.BaseUris); + Assert.NotNull(deserialized.Permissions); + Assert.Equal(["camera", "microphone"], deserialized.Permissions.Allow); + } + + [Fact] + public void McpUiClientCapabilities_CanBeRoundtrippedAsJson() + { + var caps = new McpUiClientCapabilities + { + MimeTypes = [McpApps.ResourceMimeType], + }; + + var json = JsonSerializer.Serialize(caps, McpJsonUtilities.DefaultOptions); + var deserialized = JsonSerializer.Deserialize(json, McpJsonUtilities.DefaultOptions); + + Assert.NotNull(deserialized); + Assert.Equal([McpApps.ResourceMimeType], deserialized.MimeTypes); + } + + #endregion + + #region F3: GetUiCapability + + [Fact] + public void GetUiCapability_ReturnsNull_WhenCapabilitiesIsNull() + { + Assert.Null(McpApps.GetUiCapability(null)); + } + + [Fact] + public void GetUiCapability_ReturnsNull_WhenExtensionsIsNull() + { + var caps = new ClientCapabilities(); + Assert.Null(McpApps.GetUiCapability(caps)); + } + + [Fact] + public void GetUiCapability_ReturnsNull_WhenExtensionKeyIsMissing() + { +#pragma warning disable MCPEXP001 + var caps = new ClientCapabilities + { + Extensions = new Dictionary + { + ["other.extension"] = new { }, + } + }; +#pragma warning restore MCPEXP001 + Assert.Null(McpApps.GetUiCapability(caps)); + } + + [Fact] + public void GetUiCapability_ReturnsCapabilities_WhenExtensionIsPresent() + { + // Simulate what the SDK does when deserializing ClientCapabilities from JSON: + // extensions values come in as JsonElement. + var json = $$""" + { + "extensions": { + "{{McpApps.ExtensionId}}": { + "mimeTypes": ["{{McpApps.ResourceMimeType}}"] + } + } + } + """; + + var caps = JsonSerializer.Deserialize(json, McpJsonUtilities.DefaultOptions); + Assert.NotNull(caps); + + var uiCaps = McpApps.GetUiCapability(caps); + + Assert.NotNull(uiCaps); + Assert.Equal([McpApps.ResourceMimeType], uiCaps.MimeTypes); + } + + [Fact] + public void GetUiCapability_ReturnsNull_WhenExtensionValueIsNull() + { + var json = $$""" + { + "extensions": { + "{{McpApps.ExtensionId}}": null + } + } + """; + + var caps = JsonSerializer.Deserialize(json, McpJsonUtilities.DefaultOptions); + Assert.NotNull(caps); + + Assert.Null(McpApps.GetUiCapability(caps)); + } + + #endregion + + #region F6: McpAppUiAttribute + + [Fact] + public void McpAppUiAttribute_PopulatesBothUiObjectAndLegacyKey() + { + var method = typeof(TestToolsWithAppUi).GetMethod(nameof(TestToolsWithAppUi.WeatherTool))!; + var tool = McpServerTool.Create(method, target: null); + + var meta = tool.ProtocolTool.Meta; + Assert.NotNull(meta); + + // Structured "ui" object + var uiNode = meta["ui"]?.AsObject(); + Assert.NotNull(uiNode); + Assert.Equal("ui://weather/view.html", uiNode["resourceUri"]?.GetValue()); + + // Legacy flat key + Assert.Equal("ui://weather/view.html", meta[McpApps.ResourceUriMetaKey]?.GetValue()); + } + + [Fact] + public void McpAppUiAttribute_WithVisibility_IncludesVisibilityInUiObject() + { + var method = typeof(TestToolsWithAppUi).GetMethod(nameof(TestToolsWithAppUi.ModelOnlyTool))!; + var tool = McpServerTool.Create(method, target: null); + + var uiNode = tool.ProtocolTool.Meta?["ui"]?.AsObject(); + Assert.NotNull(uiNode); + Assert.Equal("ui://model-only/view.html", uiNode["resourceUri"]?.GetValue()); + + var visibility = uiNode["visibility"]?.AsArray(); + Assert.NotNull(visibility); + Assert.Single(visibility); + Assert.Equal(McpUiToolVisibility.Model, visibility[0]?.GetValue()); + } + + [Fact] + public void McpAppUiAttribute_TakesPrecedenceOver_McpMetaAttribute() + { + // The tool has both [McpAppUi] and [McpMeta("ui", ...)] — AppUi should win for the "ui" key. + var method = typeof(TestToolsWithAppUi).GetMethod(nameof(TestToolsWithAppUi.ToolWithBothAttributes))!; + var tool = McpServerTool.Create(method, target: null); + + var meta = tool.ProtocolTool.Meta; + Assert.NotNull(meta); + + // The "ui" key should be from McpAppUiAttribute, not McpMetaAttribute + var uiNode = meta["ui"]?.AsObject(); + Assert.NotNull(uiNode); + Assert.Equal("ui://app-ui/view.html", uiNode["resourceUri"]?.GetValue()); + + // The legacy key should be from McpAppUiAttribute + Assert.Equal("ui://app-ui/view.html", meta[McpApps.ResourceUriMetaKey]?.GetValue()); + + // Other McpMeta attributes should still be present + Assert.Equal("extra-value", meta["extraKey"]?.GetValue()); + } + + [Fact] + public void McpAppUiAttribute_ExplicitOptionsMeta_TakesPrecedenceOver_Attribute() + { + // Explicit Meta["ui"] in options should override the attribute + var method = typeof(TestToolsWithAppUi).GetMethod(nameof(TestToolsWithAppUi.WeatherTool))!; + var explicitMeta = new JsonObject + { + ["ui"] = new JsonObject { ["resourceUri"] = "ui://explicit/override.html" }, + [McpApps.ResourceUriMetaKey] = "ui://explicit/override.html", + }; + + var tool = McpServerTool.Create(method, target: null, new McpServerToolCreateOptions { Meta = explicitMeta }); + + var uiNode = tool.ProtocolTool.Meta?["ui"]?.AsObject(); + Assert.Equal("ui://explicit/override.html", uiNode?["resourceUri"]?.GetValue()); + Assert.Equal("ui://explicit/override.html", tool.ProtocolTool.Meta?[McpApps.ResourceUriMetaKey]?.GetValue()); + } + + #endregion + + #region F7: McpServerToolCreateOptions.AppUi + + [Fact] + public void AppUi_PopulatesBothUiObjectAndLegacyKey() + { + var tool = McpServerTool.Create( + (string location) => $"Weather for {location}", + new McpServerToolCreateOptions + { + Name = "get_weather", + AppUi = new McpUiToolMeta { ResourceUri = "ui://weather/view.html" }, + }); + + var meta = tool.ProtocolTool.Meta; + Assert.NotNull(meta); + + var uiNode = meta["ui"]?.AsObject(); + Assert.NotNull(uiNode); + Assert.Equal("ui://weather/view.html", uiNode["resourceUri"]?.GetValue()); + Assert.Equal("ui://weather/view.html", meta[McpApps.ResourceUriMetaKey]?.GetValue()); + } + + [Fact] + public void AppUi_WithVisibility_IncludesVisibilityInUiObject() + { + var tool = McpServerTool.Create( + (string location) => $"Weather for {location}", + new McpServerToolCreateOptions + { + Name = "get_weather", + AppUi = new McpUiToolMeta + { + ResourceUri = "ui://weather/view.html", + Visibility = [McpUiToolVisibility.Model], + }, + }); + + var uiNode = tool.ProtocolTool.Meta?["ui"]?.AsObject(); + Assert.NotNull(uiNode); + + var visibility = uiNode["visibility"]?.AsArray(); + Assert.NotNull(visibility); + Assert.Single(visibility); + Assert.Equal(McpUiToolVisibility.Model, visibility[0]?.GetValue()); + } + + [Fact] + public void AppUi_ExplicitMeta_TakesPrecedenceOver_AppUi() + { + var tool = McpServerTool.Create( + (string location) => $"Weather for {location}", + new McpServerToolCreateOptions + { + Name = "get_weather", + // Explicit Meta entry for "ui" should override AppUi + Meta = new JsonObject + { + ["ui"] = new JsonObject { ["resourceUri"] = "ui://explicit/view.html" }, + }, + AppUi = new McpUiToolMeta { ResourceUri = "ui://app-ui/view.html" }, + }); + + var uiNode = tool.ProtocolTool.Meta?["ui"]?.AsObject(); + // Explicit Meta["ui"] wins + Assert.Equal("ui://explicit/view.html", uiNode?["resourceUri"]?.GetValue()); + } + + [Fact] + public void AppUi_NullResourceUri_DoesNotPopulateLegacyKey() + { + // AppUi with no ResourceUri should not add the legacy flat key + var tool = McpServerTool.Create( + (string location) => $"Weather for {location}", + new McpServerToolCreateOptions + { + Name = "get_weather", + AppUi = new McpUiToolMeta { Visibility = [McpUiToolVisibility.App] }, + }); + + Assert.Null(tool.ProtocolTool.Meta?[McpApps.ResourceUriMetaKey]); + } + + [Fact] + public void AppUi_IsPreservedWhenOptionsAreClonedInDeriveOptions() + { + // DeriveOptions() calls options.Clone() internally when creating via MethodInfo. + // If AppUi is not included in Clone(), it would be lost when creating the tool via a method. + var appUi = new McpUiToolMeta { ResourceUri = "ui://weather/view.html" }; + var options = new McpServerToolCreateOptions { AppUi = appUi }; + + // Use the MethodInfo path, which calls DeriveOptions -> options.Clone() + var method = typeof(TestToolsWithAppUi).GetMethod(nameof(TestToolsWithAppUi.WeatherTool))!; + var tool = McpServerTool.Create(method, target: null, options); + + // The attribute on the method overrides options.AppUi, but both should produce the same meta. + var meta = tool.ProtocolTool.Meta; + Assert.NotNull(meta); + Assert.NotNull(meta["ui"]); + Assert.NotNull(meta[McpApps.ResourceUriMetaKey]); + } + + #endregion + + #region Test helper types + + [McpServerToolType] + private static class TestToolsWithAppUi + { + [McpServerTool] + [McpAppUi(ResourceUri = "ui://weather/view.html")] + [Description("Get weather")] + public static string WeatherTool(string location) => $"Weather for {location}"; + + [McpServerTool] + [McpAppUi(ResourceUri = "ui://model-only/view.html", Visibility = [McpUiToolVisibility.Model])] + public static string ModelOnlyTool(string location) => $"Model only for {location}"; + + [McpServerTool] + [McpAppUi(ResourceUri = "ui://app-ui/view.html")] + [McpMeta("ui", JsonValue = """{"resourceUri": "ui://mcpmeta/view.html"}""")] + [McpMeta("extraKey", "extra-value")] + public static string ToolWithBothAttributes(string input) => input; + } + + #endregion +} From fccaa0abd594ab67ce94c9c39d7f0cb59fcdec3f Mon Sep 17 00:00:00 2001 From: Mike Kistler Date: Sun, 26 Apr 2026 16:24:43 -0500 Subject: [PATCH 3/7] Move MCP Apps support to its own package --- ModelContextProtocol.slnx | 1 + docs/list-of-diagnostics.md | 2 +- .../Server/AIFunctionMcpServerTool.cs | 6 +- .../Server/McpAppUiAttribute.cs | 7 +- .../Server/McpApps.cs | 92 +------------------ .../Server/McpServerToolCreateOptions.cs | 3 +- .../Server/McpUiClientCapabilities.cs | 8 +- .../Server/McpUiToolMeta.cs | 4 - .../ModelContextProtocol.ExtApps.csproj | 44 +++++++++ .../Server/McpApps.cs | 75 +++++++++++++++ .../ModelContextProtocol.Tests.csproj | 1 + .../Server/McpAppsTests.cs | 18 +--- 12 files changed, 140 insertions(+), 121 deletions(-) create mode 100644 src/ModelContextProtocol.ExtApps/ModelContextProtocol.ExtApps.csproj create mode 100644 src/ModelContextProtocol.ExtApps/Server/McpApps.cs diff --git a/ModelContextProtocol.slnx b/ModelContextProtocol.slnx index 1090c5377..f26305cdd 100644 --- a/ModelContextProtocol.slnx +++ b/ModelContextProtocol.slnx @@ -66,6 +66,7 @@ + diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md index ebbad5907..d3be3ee2e 100644 --- a/docs/list-of-diagnostics.md +++ b/docs/list-of-diagnostics.md @@ -23,7 +23,7 @@ If you use experimental APIs, you will get one of the diagnostics shown below. T | Diagnostic ID | Description | | :------------ | :---------- | -| `MCPEXP001` | Experimental APIs for features in the MCP specification itself, including Tasks, Extensions, and the MCP Apps extension. Tasks provide a mechanism for asynchronous long-running operations that can be polled for status and results (see [MCP Tasks specification](https://modelcontextprotocol.io/specification/draft/basic/utilities/tasks)). Extensions provide a framework for extending the Model Context Protocol while maintaining interoperability (see [SEP-2133](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2133)). MCP Apps is the first official MCP extension, enabling servers to deliver interactive UIs inside AI clients (see [MCP Apps specification](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx)). | +| `MCPEXP001` | Experimental APIs for features in the MCP specification itself, including Tasks and Extensions. Tasks provide a mechanism for asynchronous long-running operations that can be polled for status and results (see [MCP Tasks specification](https://modelcontextprotocol.io/specification/draft/basic/utilities/tasks)). Extensions provide a framework for extending the Model Context Protocol while maintaining interoperability (see [SEP-2133](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2133)). MCP Apps is the first official MCP extension, enabling servers to deliver interactive UIs inside AI clients (see [MCP Apps specification](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx)). | | `MCPEXP002` | Experimental SDK APIs unrelated to the MCP specification itself, including subclassing `McpClient`/`McpServer` (see [#1363](https://github.com/modelcontextprotocol/csharp-sdk/pull/1363)) and `RunSessionHandler`, which may be removed or change signatures in a future release (consider using `ConfigureSessionOptions` instead). | ## Obsolete APIs diff --git a/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs b/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs index a83dd33ae..b422bc8de 100644 --- a/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs +++ b/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs @@ -153,7 +153,7 @@ options.OpenWorld is not null || if (options.AppUi is { } appUi) { seededMeta = seededMeta is not null ? CloneJsonObject(seededMeta) : new JsonObject(); - McpApps.ApplyUiToolMetaToJsonObject(appUi, seededMeta); + McpAppsInternal.ApplyUiToolMetaToJsonObject(appUi, seededMeta); } tool.Meta = function.UnderlyingMethod is not null ? @@ -170,7 +170,7 @@ options.OpenWorld is not null || // Auto-detect async methods and mark with taskSupport = "optional" unless explicitly configured. // This enables implicit task support for async tools: clients can choose to invoke them // synchronously (wait for completion) or as a task (receive taskId, poll for result). - if (function.UnderlyingMethod is not null && + if (function.UnderlyingMethod is not null && IsAsyncMethod(function.UnderlyingMethod) && tool.Execution?.TaskSupport is null) { @@ -426,7 +426,7 @@ internal static IReadOnlyList CreateMetadata(MethodInfo method) return meta; } - /// Creates a shallow-content clone of a so that keys can be added without mutating the original. + /// Creates a copy of a so that keys can be added without mutating the original. private static JsonObject CloneJsonObject(JsonObject source) { var clone = new JsonObject(); diff --git a/src/ModelContextProtocol.Core/Server/McpAppUiAttribute.cs b/src/ModelContextProtocol.Core/Server/McpAppUiAttribute.cs index 6d056b9bf..f5fafcb42 100644 --- a/src/ModelContextProtocol.Core/Server/McpAppUiAttribute.cs +++ b/src/ModelContextProtocol.Core/Server/McpAppUiAttribute.cs @@ -7,10 +7,9 @@ namespace ModelContextProtocol.Server; /// /// /// -/// Apply this attribute alongside to associate a tool with a -/// UI resource in the MCP Apps extension. When processed, it populates both the structured -/// _meta.ui object and the legacy _meta["ui/resourceUri"] flat key in the tool's -/// metadata for backward compatibility with older MCP hosts. +/// Apply this attribute alongside to associate an MCP Apps +/// UI resource with the tool. When processed, it populates the structured _meta.ui object +/// in the tool's metadata. /// /// /// This attribute takes precedence over any raw [McpMeta("ui", ...)] attribute on the diff --git a/src/ModelContextProtocol.Core/Server/McpApps.cs b/src/ModelContextProtocol.Core/Server/McpApps.cs index 4f5292849..25077aeb6 100644 --- a/src/ModelContextProtocol.Core/Server/McpApps.cs +++ b/src/ModelContextProtocol.Core/Server/McpApps.cs @@ -5,90 +5,14 @@ namespace ModelContextProtocol.Server; /// -/// Provides constants and helper methods for building MCP Apps-enabled servers. +/// Internal helper methods for MCP Apps integration within the Core package. +/// The public MCP Apps API surface is in the ModelContextProtocol.ExtApps package. /// -/// -/// -/// MCP Apps is an extension to the Model Context Protocol that enables MCP servers to deliver -/// interactive user interfaces — dashboards, forms, visualizations, and more — directly inside -/// conversational AI clients. -/// -/// -/// Use the constants in this class when populating the extensions capability and the -/// _meta field of tools and resources. Use to check whether -/// the connected client supports the MCP Apps extension. -/// -/// -public static class McpApps +internal static class McpAppsInternal { /// - /// The MIME type used for MCP App HTML resources. - /// - /// - /// This MIME type should be used when registering UI resources with - /// text/html;profile=mcp-app to indicate they are MCP App resources. - /// - public const string ResourceMimeType = "text/html;profile=mcp-app"; - - /// - /// The extension identifier used for MCP Apps capability negotiation. - /// - /// - /// This key is used in the and - /// dictionaries to advertise support for - /// the MCP Apps extension. - /// - public const string ExtensionId = "io.modelcontextprotocol/ui"; - - /// - /// The legacy flat _meta key for the UI resource URI. - /// - /// - /// - /// This key is used for backward compatibility with older MCP hosts that do not support - /// the nested _meta.ui object. When populating UI metadata, both this key and the - /// ui object should be set to the same resource URI value. - /// - /// - /// This key is considered legacy; prefer for new implementations. - /// - /// - public const string ResourceUriMetaKey = "ui/resourceUri"; - - /// - /// Gets the MCP Apps client capability, if advertised by the connected client. - /// - /// The client capabilities received during the MCP initialize handshake. - /// - /// A instance if the client advertises support for the MCP Apps extension; - /// otherwise, . - /// - /// - /// Use this method to determine whether the connected client supports the MCP Apps extension - /// and to read the client's supported MIME types. - /// - [Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] - public static McpUiClientCapabilities? GetUiCapability(ClientCapabilities? capabilities) - { - if (capabilities?.Extensions is not { } extensions || - !extensions.TryGetValue(ExtensionId, out var value)) - { - return null; - } - - if (value is JsonElement element) - { - return element.ValueKind == JsonValueKind.Null ? null : - JsonSerializer.Deserialize(element, McpJsonUtilities.JsonContext.Default.McpUiClientCapabilities); - } - - return null; - } - - /// - /// Applies UI tool metadata to a , setting both the - /// ui object key and the legacy ui/resourceUri flat key for backward compatibility. - /// Keys already present in are not overwritten. + /// Applies UI tool metadata to a , setting the + /// ui object key if not already present. /// /// The UI tool metadata to apply. /// The to populate. @@ -103,11 +27,5 @@ internal static void ApplyUiToolMetaToJsonObject(McpUiToolMeta appUi, System.Tex meta["ui"] = uiNode; } } - - // Populate the legacy flat "ui/resourceUri" key if not already present. - if (!meta.ContainsKey(ResourceUriMetaKey) && appUi.ResourceUri is not null) - { - meta[ResourceUriMetaKey] = appUi.ResourceUri; - } } } diff --git a/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs b/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs index 33c5b1c82..ac2d39c76 100644 --- a/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs +++ b/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs @@ -203,8 +203,7 @@ public sealed class McpServerToolCreateOptions /// /// /// When set, this metadata is merged into during tool creation, populating - /// both the structured _meta.ui object and the legacy _meta["ui/resourceUri"] - /// flat key for backward compatibility with older MCP hosts. + /// the structured _meta.ui object. /// /// /// Explicit entries already present in take precedence over values from diff --git a/src/ModelContextProtocol.Core/Server/McpUiClientCapabilities.cs b/src/ModelContextProtocol.Core/Server/McpUiClientCapabilities.cs index 91e649d59..55e4df3ac 100644 --- a/src/ModelContextProtocol.Core/Server/McpUiClientCapabilities.cs +++ b/src/ModelContextProtocol.Core/Server/McpUiClientCapabilities.cs @@ -8,12 +8,9 @@ namespace ModelContextProtocol.Server; /// /// /// -/// This object is the value associated with the key in the +/// This object is the value associated with the "io.modelcontextprotocol/ui" key in the /// dictionary. /// -/// -/// Use to read this from . -/// /// [Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] public sealed class McpUiClientCapabilities @@ -22,8 +19,7 @@ public sealed class McpUiClientCapabilities /// Gets or sets the list of MIME types supported by the client for MCP App UI resources. /// /// - /// A client that supports MCP Apps must include - /// ("text/html;profile=mcp-app") in this list. + /// A client that supports MCP Apps must include "text/html;profile=mcp-app" in this list. /// [JsonPropertyName("mimeTypes")] public IList? MimeTypes { get; set; } diff --git a/src/ModelContextProtocol.Core/Server/McpUiToolMeta.cs b/src/ModelContextProtocol.Core/Server/McpUiToolMeta.cs index f56396e29..464061086 100644 --- a/src/ModelContextProtocol.Core/Server/McpUiToolMeta.cs +++ b/src/ModelContextProtocol.Core/Server/McpUiToolMeta.cs @@ -12,10 +12,6 @@ namespace ModelContextProtocol.Server; /// It associates the tool with a UI resource (identified by a ui:// URI) and optionally /// controls which principals (model, app) can call the tool. /// -/// -/// When this metadata is applied, both the structured _meta.ui object and the legacy -/// _meta["ui/resourceUri"] flat key are populated for backward compatibility with older hosts. -/// /// [Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] public sealed class McpUiToolMeta diff --git a/src/ModelContextProtocol.ExtApps/ModelContextProtocol.ExtApps.csproj b/src/ModelContextProtocol.ExtApps/ModelContextProtocol.ExtApps.csproj new file mode 100644 index 000000000..bcea236ca --- /dev/null +++ b/src/ModelContextProtocol.ExtApps/ModelContextProtocol.ExtApps.csproj @@ -0,0 +1,44 @@ + + + + net10.0;net9.0;net8.0;netstandard2.0 + true + true + ModelContextProtocol.ExtApps + MCP Apps extension for the .NET Model Context Protocol (MCP) SDK + README.md + + $(NoWarn);MCPEXP001 + + false + + + + true + + + + + $(NoWarn);CS0436 + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ModelContextProtocol.ExtApps/Server/McpApps.cs b/src/ModelContextProtocol.ExtApps/Server/McpApps.cs new file mode 100644 index 000000000..ed58c28eb --- /dev/null +++ b/src/ModelContextProtocol.ExtApps/Server/McpApps.cs @@ -0,0 +1,75 @@ +using ModelContextProtocol.Protocol; +using System.Diagnostics.CodeAnalysis; +using System.Text.Json; +using System.Text.Json.Serialization.Metadata; + +namespace ModelContextProtocol.Server; + +/// +/// Provides constants and helper methods for building MCP Apps-enabled servers. +/// +/// +/// +/// MCP Apps is an extension to the Model Context Protocol that enables MCP servers to deliver +/// interactive user interfaces — dashboards, forms, visualizations, and more — directly inside +/// conversational AI clients. +/// +/// +/// Use the constants in this class when populating the extensions capability and the +/// _meta field of tools and resources. Use to check whether +/// the connected client supports the MCP Apps extension. +/// +/// +public static class McpApps +{ + /// + /// The MIME type used for MCP App HTML resources. + /// + /// + /// This MIME type should be used when registering UI resources with + /// text/html;profile=mcp-app to indicate they are MCP App resources. + /// + public const string ResourceMimeType = "text/html;profile=mcp-app"; + + /// + /// The extension identifier used for MCP Apps capability negotiation. + /// + /// + /// This key is used in the and + /// dictionaries to advertise support for + /// the MCP Apps extension. + /// + public const string ExtensionId = "io.modelcontextprotocol/ui"; + + /// + /// Gets the MCP Apps client capability, if advertised by the connected client. + /// + /// The client capabilities received during the MCP initialize handshake. + /// + /// A instance if the client advertises support for the MCP Apps extension; + /// otherwise, . + /// + /// + /// Use this method to determine whether the connected client supports the MCP Apps extension + /// and to read the client's supported MIME types. + /// + [Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] + public static McpUiClientCapabilities? GetUiCapability(ClientCapabilities? capabilities) + { + if (capabilities?.Extensions is not { } extensions || + !extensions.TryGetValue(ExtensionId, out var value)) + { + return null; + } + + if (value is JsonElement element) + { + return element.ValueKind == JsonValueKind.Null ? null : + (McpUiClientCapabilities?)JsonSerializer.Deserialize( + element, + (JsonTypeInfo)McpJsonUtilities.DefaultOptions.GetTypeInfo(typeof(McpUiClientCapabilities))); + } + + return null; + } +} diff --git a/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj b/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj index 0985f4cd7..dc905e6e6 100644 --- a/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj +++ b/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj @@ -85,6 +85,7 @@ + diff --git a/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs b/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs index f0d76def5..d7b2f2170 100644 --- a/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs +++ b/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs @@ -22,7 +22,6 @@ public void McpApps_Constants_HaveExpectedValues() { Assert.Equal("text/html;profile=mcp-app", McpApps.ResourceMimeType); Assert.Equal("io.modelcontextprotocol/ui", McpApps.ExtensionId); - Assert.Equal("ui/resourceUri", McpApps.ResourceUriMetaKey); } [Fact] @@ -212,9 +211,6 @@ public void McpAppUiAttribute_PopulatesBothUiObjectAndLegacyKey() var uiNode = meta["ui"]?.AsObject(); Assert.NotNull(uiNode); Assert.Equal("ui://weather/view.html", uiNode["resourceUri"]?.GetValue()); - - // Legacy flat key - Assert.Equal("ui://weather/view.html", meta[McpApps.ResourceUriMetaKey]?.GetValue()); } [Fact] @@ -248,9 +244,6 @@ public void McpAppUiAttribute_TakesPrecedenceOver_McpMetaAttribute() Assert.NotNull(uiNode); Assert.Equal("ui://app-ui/view.html", uiNode["resourceUri"]?.GetValue()); - // The legacy key should be from McpAppUiAttribute - Assert.Equal("ui://app-ui/view.html", meta[McpApps.ResourceUriMetaKey]?.GetValue()); - // Other McpMeta attributes should still be present Assert.Equal("extra-value", meta["extraKey"]?.GetValue()); } @@ -263,14 +256,12 @@ public void McpAppUiAttribute_ExplicitOptionsMeta_TakesPrecedenceOver_Attribute( var explicitMeta = new JsonObject { ["ui"] = new JsonObject { ["resourceUri"] = "ui://explicit/override.html" }, - [McpApps.ResourceUriMetaKey] = "ui://explicit/override.html", }; var tool = McpServerTool.Create(method, target: null, new McpServerToolCreateOptions { Meta = explicitMeta }); var uiNode = tool.ProtocolTool.Meta?["ui"]?.AsObject(); Assert.Equal("ui://explicit/override.html", uiNode?["resourceUri"]?.GetValue()); - Assert.Equal("ui://explicit/override.html", tool.ProtocolTool.Meta?[McpApps.ResourceUriMetaKey]?.GetValue()); } #endregion @@ -294,7 +285,6 @@ public void AppUi_PopulatesBothUiObjectAndLegacyKey() var uiNode = meta["ui"]?.AsObject(); Assert.NotNull(uiNode); Assert.Equal("ui://weather/view.html", uiNode["resourceUri"]?.GetValue()); - Assert.Equal("ui://weather/view.html", meta[McpApps.ResourceUriMetaKey]?.GetValue()); } [Fact] @@ -343,9 +333,8 @@ public void AppUi_ExplicitMeta_TakesPrecedenceOver_AppUi() } [Fact] - public void AppUi_NullResourceUri_DoesNotPopulateLegacyKey() + public void AppUi_NullResourceUri_ProducesUiObjectWithoutResourceUri() { - // AppUi with no ResourceUri should not add the legacy flat key var tool = McpServerTool.Create( (string location) => $"Weather for {location}", new McpServerToolCreateOptions @@ -354,7 +343,9 @@ public void AppUi_NullResourceUri_DoesNotPopulateLegacyKey() AppUi = new McpUiToolMeta { Visibility = [McpUiToolVisibility.App] }, }); - Assert.Null(tool.ProtocolTool.Meta?[McpApps.ResourceUriMetaKey]); + var uiNode = tool.ProtocolTool.Meta?["ui"]?.AsObject(); + Assert.NotNull(uiNode); + Assert.Null(uiNode["resourceUri"]); } [Fact] @@ -373,7 +364,6 @@ public void AppUi_IsPreservedWhenOptionsAreClonedInDeriveOptions() var meta = tool.ProtocolTool.Meta; Assert.NotNull(meta); Assert.NotNull(meta["ui"]); - Assert.NotNull(meta[McpApps.ResourceUriMetaKey]); } #endregion From 5673bd799c8596af7dd3829b7d9d457cebe5dcea Mon Sep 17 00:00:00 2001 From: Mike Kistler Date: Wed, 29 Apr 2026 16:43:27 -0500 Subject: [PATCH 4/7] Address review feedback: rename, move types, remove Core coupling Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- ModelContextProtocol.slnx | 2 +- docs/list-of-diagnostics.md | 3 +- src/Common/Experimentals.cs | 9 +- .../McpJsonUtilities.cs | 7 - .../Server/AIFunctionMcpServerTool.cs | 39 +--- .../Server/McpApps.cs | 31 --- .../Server/McpServerToolCreateOptions.cs | 30 --- .../Server/McpApps.cs | 75 ------- ...delContextProtocol.Extensions.Apps.csproj} | 6 +- .../Server/McpAppUiAttribute.cs | 8 +- .../Server/McpApps.cs | 207 ++++++++++++++++++ .../Server/McpAppsJsonContext.cs | 19 ++ .../Server/McpUiClientCapabilities.cs | 0 .../Server/McpUiResourceCsp.cs | 0 .../Server/McpUiResourceMeta.cs | 0 .../Server/McpUiResourcePermissions.cs | 0 .../Server/McpUiToolMeta.cs | 0 .../Server/McpUiToolVisibility.cs | 1 - .../ModelContextProtocol.Tests.csproj | 2 +- .../Server/McpAppsTests.cs | 153 +++++++------ 20 files changed, 320 insertions(+), 272 deletions(-) delete mode 100644 src/ModelContextProtocol.Core/Server/McpApps.cs delete mode 100644 src/ModelContextProtocol.ExtApps/Server/McpApps.cs rename src/{ModelContextProtocol.ExtApps/ModelContextProtocol.ExtApps.csproj => ModelContextProtocol.Extensions.Apps/ModelContextProtocol.Extensions.Apps.csproj} (90%) rename src/{ModelContextProtocol.Core => ModelContextProtocol.Extensions.Apps}/Server/McpAppUiAttribute.cs (82%) create mode 100644 src/ModelContextProtocol.Extensions.Apps/Server/McpApps.cs create mode 100644 src/ModelContextProtocol.Extensions.Apps/Server/McpAppsJsonContext.cs rename src/{ModelContextProtocol.Core => ModelContextProtocol.Extensions.Apps}/Server/McpUiClientCapabilities.cs (100%) rename src/{ModelContextProtocol.Core => ModelContextProtocol.Extensions.Apps}/Server/McpUiResourceCsp.cs (100%) rename src/{ModelContextProtocol.Core => ModelContextProtocol.Extensions.Apps}/Server/McpUiResourceMeta.cs (100%) rename src/{ModelContextProtocol.Core => ModelContextProtocol.Extensions.Apps}/Server/McpUiResourcePermissions.cs (100%) rename src/{ModelContextProtocol.Core => ModelContextProtocol.Extensions.Apps}/Server/McpUiToolMeta.cs (100%) rename src/{ModelContextProtocol.Core => ModelContextProtocol.Extensions.Apps}/Server/McpUiToolVisibility.cs (95%) diff --git a/ModelContextProtocol.slnx b/ModelContextProtocol.slnx index f26305cdd..ffc845fc8 100644 --- a/ModelContextProtocol.slnx +++ b/ModelContextProtocol.slnx @@ -66,7 +66,7 @@ - + diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md index d3be3ee2e..572b2c183 100644 --- a/docs/list-of-diagnostics.md +++ b/docs/list-of-diagnostics.md @@ -23,8 +23,9 @@ If you use experimental APIs, you will get one of the diagnostics shown below. T | Diagnostic ID | Description | | :------------ | :---------- | -| `MCPEXP001` | Experimental APIs for features in the MCP specification itself, including Tasks and Extensions. Tasks provide a mechanism for asynchronous long-running operations that can be polled for status and results (see [MCP Tasks specification](https://modelcontextprotocol.io/specification/draft/basic/utilities/tasks)). Extensions provide a framework for extending the Model Context Protocol while maintaining interoperability (see [SEP-2133](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2133)). MCP Apps is the first official MCP extension, enabling servers to deliver interactive UIs inside AI clients (see [MCP Apps specification](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx)). | +| `MCPEXP001` | Experimental APIs for features in the MCP specification itself, including Tasks and Extensions. Tasks provide a mechanism for asynchronous long-running operations that can be polled for status and results (see [MCP Tasks specification](https://modelcontextprotocol.io/specification/draft/basic/utilities/tasks)). Extensions provide a framework for extending the Model Context Protocol while maintaining interoperability (see [SEP-2133](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2133)). | | `MCPEXP002` | Experimental SDK APIs unrelated to the MCP specification itself, including subclassing `McpClient`/`McpServer` (see [#1363](https://github.com/modelcontextprotocol/csharp-sdk/pull/1363)) and `RunSessionHandler`, which may be removed or change signatures in a future release (consider using `ConfigureSessionOptions` instead). | +| `MCPEXP003` | Experimental MCP Apps extension APIs. MCP Apps is the first official MCP extension (`io.modelcontextprotocol/ui`), enabling servers to deliver interactive UIs inside AI clients (see [MCP Apps specification](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx)). | ## Obsolete APIs diff --git a/src/Common/Experimentals.cs b/src/Common/Experimentals.cs index 54904db2a..83f517bec 100644 --- a/src/Common/Experimentals.cs +++ b/src/Common/Experimentals.cs @@ -75,10 +75,11 @@ internal static class Experimentals /// Diagnostic ID for experimental MCP Apps extension APIs. /// /// - /// This uses the same diagnostic ID as because - /// MCP Apps is implemented as an MCP extension ("io.modelcontextprotocol/ui"). + /// MCP Apps is the first official MCP extension ("io.modelcontextprotocol/ui"), enabling + /// servers to deliver interactive UIs inside AI clients. This uses a dedicated diagnostic ID + /// so that users can suppress it independently from other experimental APIs. /// - public const string Apps_DiagnosticId = "MCPEXP001"; + public const string Apps_DiagnosticId = "MCPEXP003"; /// /// Message for the experimental MCP Apps extension APIs. @@ -88,7 +89,7 @@ internal static class Experimentals /// /// URL for the experimental MCP Apps extension APIs. /// - public const string Apps_Url = "https://github.com/modelcontextprotocol/csharp-sdk/blob/main/docs/list-of-diagnostics.md#mcpexp001"; + public const string Apps_Url = "https://github.com/modelcontextprotocol/csharp-sdk/blob/main/docs/list-of-diagnostics.md#mcpexp003"; /// /// Diagnostic ID for experimental SDK APIs unrelated to the MCP specification, diff --git a/src/ModelContextProtocol.Core/McpJsonUtilities.cs b/src/ModelContextProtocol.Core/McpJsonUtilities.cs index 13a935311..abb6d29df 100644 --- a/src/ModelContextProtocol.Core/McpJsonUtilities.cs +++ b/src/ModelContextProtocol.Core/McpJsonUtilities.cs @@ -187,13 +187,6 @@ internal static bool IsValidMcpToolSchema(JsonElement element) [JsonSerializable(typeof(DynamicClientRegistrationRequest))] [JsonSerializable(typeof(DynamicClientRegistrationResponse))] - // MCP Apps extension types - [JsonSerializable(typeof(Server.McpUiToolMeta))] - [JsonSerializable(typeof(Server.McpUiClientCapabilities))] - [JsonSerializable(typeof(Server.McpUiResourceMeta))] - [JsonSerializable(typeof(Server.McpUiResourceCsp))] - [JsonSerializable(typeof(Server.McpUiResourcePermissions))] - // Primitive types for use in consuming AIFunctions [JsonSerializable(typeof(string))] [JsonSerializable(typeof(byte))] diff --git a/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs b/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs index b422bc8de..68a99fb73 100644 --- a/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs +++ b/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs @@ -144,21 +144,10 @@ options.OpenWorld is not null || }; } - // Populate Meta from options and/or McpMetaAttribute instances if a MethodInfo is available. - // Priority order (highest to lowest): - // 1. Explicit options.Meta entries - // 2. AppUi metadata (from McpAppUiAttribute or McpServerToolCreateOptions.AppUi) - // 3. McpMetaAttribute entries on the method - JsonObject? seededMeta = options.Meta; - if (options.AppUi is { } appUi) - { - seededMeta = seededMeta is not null ? CloneJsonObject(seededMeta) : new JsonObject(); - McpAppsInternal.ApplyUiToolMetaToJsonObject(appUi, seededMeta); - } - + // Populate Meta from options and/or McpMetaAttribute instances if a MethodInfo is available tool.Meta = function.UnderlyingMethod is not null ? - CreateMetaFromAttributes(function.UnderlyingMethod, seededMeta) : - seededMeta; + CreateMetaFromAttributes(function.UnderlyingMethod, options.Meta) : + options.Meta; // Apply user-specified Execution settings if provided if (options.Execution is not null) @@ -236,16 +225,6 @@ private static McpServerToolCreateOptions DeriveOptions(MethodInfo method, McpSe newOptions.Description ??= descAttr.Description; } - // Process McpAppUiAttribute — takes precedence over options.AppUi set via constructor. - if (method.GetCustomAttribute() is { } appUiAttr) - { - newOptions.AppUi = new McpUiToolMeta - { - ResourceUri = appUiAttr.ResourceUri, - Visibility = appUiAttr.Visibility, - }; - } - // Set metadata if not already provided newOptions.Metadata ??= CreateMetadata(method); @@ -426,18 +405,6 @@ internal static IReadOnlyList CreateMetadata(MethodInfo method) return meta; } - /// Creates a copy of a so that keys can be added without mutating the original. - private static JsonObject CloneJsonObject(JsonObject source) - { - var clone = new JsonObject(); - foreach (var kvp in source) - { - // DeepClone each value to avoid sharing nodes between two JsonObject instances. - clone[kvp.Key] = kvp.Value?.DeepClone(); - } - return clone; - } - #if NET /// Regex that flags runs of characters other than ASCII digits or letters. [GeneratedRegex("[^0-9A-Za-z]+")] diff --git a/src/ModelContextProtocol.Core/Server/McpApps.cs b/src/ModelContextProtocol.Core/Server/McpApps.cs deleted file mode 100644 index 25077aeb6..000000000 --- a/src/ModelContextProtocol.Core/Server/McpApps.cs +++ /dev/null @@ -1,31 +0,0 @@ -using ModelContextProtocol.Protocol; -using System.Diagnostics.CodeAnalysis; -using System.Text.Json; - -namespace ModelContextProtocol.Server; - -/// -/// Internal helper methods for MCP Apps integration within the Core package. -/// The public MCP Apps API surface is in the ModelContextProtocol.ExtApps package. -/// -internal static class McpAppsInternal -{ - /// - /// Applies UI tool metadata to a , setting the - /// ui object key if not already present. - /// - /// The UI tool metadata to apply. - /// The to populate. - internal static void ApplyUiToolMetaToJsonObject(McpUiToolMeta appUi, System.Text.Json.Nodes.JsonObject meta) - { - // Populate the structured "ui" object if not already present. - if (!meta.ContainsKey("ui")) - { - var uiNode = JsonSerializer.SerializeToNode(appUi, McpJsonUtilities.JsonContext.Default.McpUiToolMeta); - if (uiNode is not null) - { - meta["ui"] = uiNode; - } - } - } -} diff --git a/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs b/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs index ac2d39c76..88d718d13 100644 --- a/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs +++ b/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs @@ -197,35 +197,6 @@ public sealed class McpServerToolCreateOptions /// public JsonObject? Meta { get; set; } - /// - /// Gets or sets the MCP Apps UI metadata for this tool. - /// - /// - /// - /// When set, this metadata is merged into during tool creation, populating - /// the structured _meta.ui object. - /// - /// - /// Explicit entries already present in take precedence over values from - /// this property. The on a method overrides this property - /// when both are specified. - /// - /// - /// - /// - /// var tool = McpServerTool.Create(handler, new McpServerToolCreateOptions - /// { - /// AppUi = new McpUiToolMeta - /// { - /// ResourceUri = "ui://weather/view.html", - /// Visibility = [McpUiToolVisibility.Model, McpUiToolVisibility.App] - /// } - /// }); - /// - /// - [Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] - public McpUiToolMeta? AppUi { get; set; } - /// /// Gets or sets the execution hints for this tool. /// @@ -264,7 +235,6 @@ internal McpServerToolCreateOptions Clone() => Metadata = Metadata, Icons = Icons, Meta = Meta, - AppUi = AppUi, Execution = Execution, }; } diff --git a/src/ModelContextProtocol.ExtApps/Server/McpApps.cs b/src/ModelContextProtocol.ExtApps/Server/McpApps.cs deleted file mode 100644 index ed58c28eb..000000000 --- a/src/ModelContextProtocol.ExtApps/Server/McpApps.cs +++ /dev/null @@ -1,75 +0,0 @@ -using ModelContextProtocol.Protocol; -using System.Diagnostics.CodeAnalysis; -using System.Text.Json; -using System.Text.Json.Serialization.Metadata; - -namespace ModelContextProtocol.Server; - -/// -/// Provides constants and helper methods for building MCP Apps-enabled servers. -/// -/// -/// -/// MCP Apps is an extension to the Model Context Protocol that enables MCP servers to deliver -/// interactive user interfaces — dashboards, forms, visualizations, and more — directly inside -/// conversational AI clients. -/// -/// -/// Use the constants in this class when populating the extensions capability and the -/// _meta field of tools and resources. Use to check whether -/// the connected client supports the MCP Apps extension. -/// -/// -public static class McpApps -{ - /// - /// The MIME type used for MCP App HTML resources. - /// - /// - /// This MIME type should be used when registering UI resources with - /// text/html;profile=mcp-app to indicate they are MCP App resources. - /// - public const string ResourceMimeType = "text/html;profile=mcp-app"; - - /// - /// The extension identifier used for MCP Apps capability negotiation. - /// - /// - /// This key is used in the and - /// dictionaries to advertise support for - /// the MCP Apps extension. - /// - public const string ExtensionId = "io.modelcontextprotocol/ui"; - - /// - /// Gets the MCP Apps client capability, if advertised by the connected client. - /// - /// The client capabilities received during the MCP initialize handshake. - /// - /// A instance if the client advertises support for the MCP Apps extension; - /// otherwise, . - /// - /// - /// Use this method to determine whether the connected client supports the MCP Apps extension - /// and to read the client's supported MIME types. - /// - [Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] - public static McpUiClientCapabilities? GetUiCapability(ClientCapabilities? capabilities) - { - if (capabilities?.Extensions is not { } extensions || - !extensions.TryGetValue(ExtensionId, out var value)) - { - return null; - } - - if (value is JsonElement element) - { - return element.ValueKind == JsonValueKind.Null ? null : - (McpUiClientCapabilities?)JsonSerializer.Deserialize( - element, - (JsonTypeInfo)McpJsonUtilities.DefaultOptions.GetTypeInfo(typeof(McpUiClientCapabilities))); - } - - return null; - } -} diff --git a/src/ModelContextProtocol.ExtApps/ModelContextProtocol.ExtApps.csproj b/src/ModelContextProtocol.Extensions.Apps/ModelContextProtocol.Extensions.Apps.csproj similarity index 90% rename from src/ModelContextProtocol.ExtApps/ModelContextProtocol.ExtApps.csproj rename to src/ModelContextProtocol.Extensions.Apps/ModelContextProtocol.Extensions.Apps.csproj index bcea236ca..b3c988d21 100644 --- a/src/ModelContextProtocol.ExtApps/ModelContextProtocol.ExtApps.csproj +++ b/src/ModelContextProtocol.Extensions.Apps/ModelContextProtocol.Extensions.Apps.csproj @@ -4,11 +4,11 @@ net10.0;net9.0;net8.0;netstandard2.0 true true - ModelContextProtocol.ExtApps + ModelContextProtocol.Extensions.Apps MCP Apps extension for the .NET Model Context Protocol (MCP) SDK README.md - - $(NoWarn);MCPEXP001 + + $(NoWarn);MCPEXP003 false diff --git a/src/ModelContextProtocol.Core/Server/McpAppUiAttribute.cs b/src/ModelContextProtocol.Extensions.Apps/Server/McpAppUiAttribute.cs similarity index 82% rename from src/ModelContextProtocol.Core/Server/McpAppUiAttribute.cs rename to src/ModelContextProtocol.Extensions.Apps/Server/McpAppUiAttribute.cs index f5fafcb42..2bbe5a059 100644 --- a/src/ModelContextProtocol.Core/Server/McpAppUiAttribute.cs +++ b/src/ModelContextProtocol.Extensions.Apps/Server/McpAppUiAttribute.cs @@ -8,12 +8,14 @@ namespace ModelContextProtocol.Server; /// /// /// Apply this attribute alongside to associate an MCP Apps -/// UI resource with the tool. When processed, it populates the structured _meta.ui object -/// in the tool's metadata. +/// UI resource with the tool. When processed by +/// or , it populates the +/// structured _meta.ui object in the tool's metadata. /// /// /// This attribute takes precedence over any raw [McpMeta("ui", ...)] attribute on the -/// same method. +/// same method, but explicit Meta["ui"] set via +/// takes precedence over this attribute. /// /// /// diff --git a/src/ModelContextProtocol.Extensions.Apps/Server/McpApps.cs b/src/ModelContextProtocol.Extensions.Apps/Server/McpApps.cs new file mode 100644 index 000000000..82c3920c1 --- /dev/null +++ b/src/ModelContextProtocol.Extensions.Apps/Server/McpApps.cs @@ -0,0 +1,207 @@ +using ModelContextProtocol.Protocol; +using System.Diagnostics.CodeAnalysis; +using System.Text.Json; +using System.Text.Json.Nodes; + +namespace ModelContextProtocol.Server; + +/// +/// Provides constants and helper methods for building MCP Apps-enabled servers. +/// +/// +/// +/// MCP Apps is an extension to the Model Context Protocol that enables MCP servers to deliver +/// interactive user interfaces — dashboards, forms, visualizations, and more — directly inside +/// conversational AI clients. +/// +/// +/// Use the constants in this class when populating the extensions capability and the +/// _meta field of tools and resources. Use to check whether +/// the connected client supports the MCP Apps extension. +/// +/// +/// Use to set the _meta.ui metadata on a tool, or +/// to automatically process +/// instances on tools created from methods. +/// +/// +[Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] +public static class McpApps +{ + /// + /// The MIME type used for MCP App HTML resources. + /// + /// + /// This MIME type should be used when registering UI resources with + /// text/html;profile=mcp-app to indicate they are MCP App resources. + /// + public const string ResourceMimeType = "text/html;profile=mcp-app"; + + /// + /// The extension identifier used for MCP Apps capability negotiation. + /// + /// + /// This key is used in the and + /// dictionaries to advertise support for + /// the MCP Apps extension. + /// + public const string ExtensionId = "io.modelcontextprotocol/ui"; + + /// + /// Gets the configured with source-generated metadata + /// for MCP Apps extension types. + /// + /// + /// Use these options when serializing or deserializing MCP Apps types such as + /// , , and . + /// + public static JsonSerializerOptions SerializerOptions { get; } = CreateSerializerOptions(); + + private static JsonSerializerOptions CreateSerializerOptions() + { + var options = new JsonSerializerOptions(McpJsonUtilities.DefaultOptions); + options.TypeInfoResolverChain.Insert(0, McpAppsJsonContext.Default); + options.MakeReadOnly(); + return options; + } + + /// + /// Gets the MCP Apps client capability, if advertised by the connected client. + /// + /// The client capabilities received during the MCP initialize handshake. + /// + /// A instance if the client advertises support for the MCP Apps extension; + /// otherwise, . + /// + /// + /// Use this method to determine whether the connected client supports the MCP Apps extension + /// and to read the client's supported MIME types. + /// + public static McpUiClientCapabilities? GetUiCapability(ClientCapabilities? capabilities) + { + if (capabilities?.Extensions is not { } extensions || + !extensions.TryGetValue(ExtensionId, out var value)) + { + return null; + } + + if (value is JsonElement element) + { + return element.ValueKind == JsonValueKind.Null ? null : + JsonSerializer.Deserialize(element, McpAppsJsonContext.Default.McpUiClientCapabilities); + } + + return null; + } + + /// + /// Sets the MCP Apps UI metadata on a tool's property. + /// + /// The tool to set the UI metadata on. + /// The UI metadata to apply. + /// The same instance, for chaining. + /// + /// + /// This method sets the ui key in the tool's object. + /// If a ui key is already present in , it is not overwritten. + /// + /// + /// or is . + public static McpServerTool SetAppUi(McpServerTool tool, McpUiToolMeta appUi) + { +#if NET + ArgumentNullException.ThrowIfNull(tool); + ArgumentNullException.ThrowIfNull(appUi); +#else + if (tool is null) throw new ArgumentNullException(nameof(tool)); + if (appUi is null) throw new ArgumentNullException(nameof(appUi)); +#endif + + var protocolTool = tool.ProtocolTool; + protocolTool.Meta ??= new JsonObject(); + + if (!protocolTool.Meta.ContainsKey("ui")) + { + var uiNode = JsonSerializer.SerializeToNode(appUi, McpAppsJsonContext.Default.McpUiToolMeta); + if (uiNode is not null) + { + protocolTool.Meta["ui"] = uiNode; + } + } + + return tool; + } + + /// + /// Processes a collection of tools, applying metadata to any + /// tool whose underlying method has the attribute. + /// + /// The tools to process. + /// The same enumerable, for chaining. + /// + /// + /// For each tool that has a in its , + /// this method sets the ui key in the tool's if not already present. + /// + /// + /// If already contains a ui key (e.g., set explicitly via + /// ), the attribute is not applied. + /// + /// + /// is . + public static IEnumerable ApplyAppUiAttributes(IEnumerable tools) + { +#if NET + ArgumentNullException.ThrowIfNull(tools); +#else + if (tools is null) throw new ArgumentNullException(nameof(tools)); +#endif + + foreach (var tool in tools) + { + ApplyAppUiAttributes(tool); + } + + return tools; + } + + /// + /// Processes a single tool, applying metadata if the tool's + /// underlying method has the attribute. + /// + /// The tool to process. + /// The same instance, for chaining. + /// + /// + /// If the tool has a in its , + /// this method sets the ui key in the tool's if not already present. + /// + /// + /// is . + public static McpServerTool ApplyAppUiAttributes(McpServerTool tool) + { +#if NET + ArgumentNullException.ThrowIfNull(tool); +#else + if (tool is null) throw new ArgumentNullException(nameof(tool)); +#endif + + // Look for McpAppUiAttribute in tool metadata (attributes from the method) + foreach (var metadataItem in tool.Metadata) + { + if (metadataItem is McpAppUiAttribute appUiAttr) + { + var meta = new McpUiToolMeta + { + ResourceUri = appUiAttr.ResourceUri, + Visibility = appUiAttr.Visibility, + }; + + SetAppUi(tool, meta); + break; + } + } + + return tool; + } +} diff --git a/src/ModelContextProtocol.Extensions.Apps/Server/McpAppsJsonContext.cs b/src/ModelContextProtocol.Extensions.Apps/Server/McpAppsJsonContext.cs new file mode 100644 index 000000000..23e9abd58 --- /dev/null +++ b/src/ModelContextProtocol.Extensions.Apps/Server/McpAppsJsonContext.cs @@ -0,0 +1,19 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace ModelContextProtocol.Server; + +/// +/// Provides source-generated JSON serialization metadata for MCP Apps extension types. +/// +[JsonSourceGenerationOptions( + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, + PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)] +[JsonSerializable(typeof(McpUiToolMeta))] +[JsonSerializable(typeof(McpUiClientCapabilities))] +[JsonSerializable(typeof(McpUiResourceMeta))] +[JsonSerializable(typeof(McpUiResourceCsp))] +[JsonSerializable(typeof(McpUiResourcePermissions))] +internal sealed partial class McpAppsJsonContext : JsonSerializerContext +{ +} diff --git a/src/ModelContextProtocol.Core/Server/McpUiClientCapabilities.cs b/src/ModelContextProtocol.Extensions.Apps/Server/McpUiClientCapabilities.cs similarity index 100% rename from src/ModelContextProtocol.Core/Server/McpUiClientCapabilities.cs rename to src/ModelContextProtocol.Extensions.Apps/Server/McpUiClientCapabilities.cs diff --git a/src/ModelContextProtocol.Core/Server/McpUiResourceCsp.cs b/src/ModelContextProtocol.Extensions.Apps/Server/McpUiResourceCsp.cs similarity index 100% rename from src/ModelContextProtocol.Core/Server/McpUiResourceCsp.cs rename to src/ModelContextProtocol.Extensions.Apps/Server/McpUiResourceCsp.cs diff --git a/src/ModelContextProtocol.Core/Server/McpUiResourceMeta.cs b/src/ModelContextProtocol.Extensions.Apps/Server/McpUiResourceMeta.cs similarity index 100% rename from src/ModelContextProtocol.Core/Server/McpUiResourceMeta.cs rename to src/ModelContextProtocol.Extensions.Apps/Server/McpUiResourceMeta.cs diff --git a/src/ModelContextProtocol.Core/Server/McpUiResourcePermissions.cs b/src/ModelContextProtocol.Extensions.Apps/Server/McpUiResourcePermissions.cs similarity index 100% rename from src/ModelContextProtocol.Core/Server/McpUiResourcePermissions.cs rename to src/ModelContextProtocol.Extensions.Apps/Server/McpUiResourcePermissions.cs diff --git a/src/ModelContextProtocol.Core/Server/McpUiToolMeta.cs b/src/ModelContextProtocol.Extensions.Apps/Server/McpUiToolMeta.cs similarity index 100% rename from src/ModelContextProtocol.Core/Server/McpUiToolMeta.cs rename to src/ModelContextProtocol.Extensions.Apps/Server/McpUiToolMeta.cs diff --git a/src/ModelContextProtocol.Core/Server/McpUiToolVisibility.cs b/src/ModelContextProtocol.Extensions.Apps/Server/McpUiToolVisibility.cs similarity index 95% rename from src/ModelContextProtocol.Core/Server/McpUiToolVisibility.cs rename to src/ModelContextProtocol.Extensions.Apps/Server/McpUiToolVisibility.cs index e9a454c25..df84c5467 100644 --- a/src/ModelContextProtocol.Core/Server/McpUiToolVisibility.cs +++ b/src/ModelContextProtocol.Extensions.Apps/Server/McpUiToolVisibility.cs @@ -1,5 +1,4 @@ using System.Diagnostics.CodeAnalysis; -using System.Text.Json.Serialization; namespace ModelContextProtocol.Server; diff --git a/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj b/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj index dc905e6e6..4dc3088b7 100644 --- a/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj +++ b/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj @@ -85,7 +85,7 @@ - + diff --git a/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs b/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs index d7b2f2170..b2b010ae2 100644 --- a/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs +++ b/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs @@ -1,9 +1,8 @@ -#pragma warning disable MCPEXP001 +#pragma warning disable MCPEXP003 using ModelContextProtocol.Protocol; using ModelContextProtocol.Server; using System.ComponentModel; -using System.Diagnostics.CodeAnalysis; using System.Text.Json; using System.Text.Json.Nodes; @@ -11,7 +10,7 @@ namespace ModelContextProtocol.Tests.Server; /// /// Tests for MCP Apps extension support: McpApps constants, typed metadata models, -/// McpAppUiAttribute, and McpServerToolCreateOptions.AppUi. +/// McpAppUiAttribute, SetAppUi, and ApplyAppUiAttributes. /// public class McpAppsTests { @@ -52,8 +51,8 @@ public void McpUiToolMeta_CanBeRoundtrippedAsJson() Visibility = [McpUiToolVisibility.Model, McpUiToolVisibility.App], }; - var json = JsonSerializer.Serialize(meta, McpJsonUtilities.DefaultOptions); - var deserialized = JsonSerializer.Deserialize(json, McpJsonUtilities.DefaultOptions); + var json = JsonSerializer.Serialize(meta, McpApps.SerializerOptions); + var deserialized = JsonSerializer.Deserialize(json, McpApps.SerializerOptions); Assert.NotNull(deserialized); Assert.Equal("ui://weather/view.html", deserialized.ResourceUri); @@ -64,7 +63,7 @@ public void McpUiToolMeta_CanBeRoundtrippedAsJson() public void McpUiToolMeta_OmitsNullProperties() { var meta = new McpUiToolMeta { ResourceUri = "ui://app" }; - var json = JsonSerializer.Serialize(meta, McpJsonUtilities.DefaultOptions); + var json = JsonSerializer.Serialize(meta, McpApps.SerializerOptions); var doc = JsonDocument.Parse(json); Assert.True(doc.RootElement.TryGetProperty("resourceUri", out _)); @@ -91,8 +90,8 @@ public void McpUiResourceMeta_CanBeRoundtrippedAsJson() }, }; - var json = JsonSerializer.Serialize(meta, McpJsonUtilities.DefaultOptions); - var deserialized = JsonSerializer.Deserialize(json, McpJsonUtilities.DefaultOptions); + var json = JsonSerializer.Serialize(meta, McpApps.SerializerOptions); + var deserialized = JsonSerializer.Deserialize(json, McpApps.SerializerOptions); Assert.NotNull(deserialized); Assert.Equal("https://app.example.com", deserialized.Domain); @@ -114,8 +113,8 @@ public void McpUiClientCapabilities_CanBeRoundtrippedAsJson() MimeTypes = [McpApps.ResourceMimeType], }; - var json = JsonSerializer.Serialize(caps, McpJsonUtilities.DefaultOptions); - var deserialized = JsonSerializer.Deserialize(json, McpJsonUtilities.DefaultOptions); + var json = JsonSerializer.Serialize(caps, McpApps.SerializerOptions); + var deserialized = JsonSerializer.Deserialize(json, McpApps.SerializerOptions); Assert.NotNull(deserialized); Assert.Equal([McpApps.ResourceMimeType], deserialized.MimeTypes); @@ -196,14 +195,16 @@ public void GetUiCapability_ReturnsNull_WhenExtensionValueIsNull() #endregion - #region F6: McpAppUiAttribute + #region F6: McpAppUiAttribute via ApplyAppUiAttributes [Fact] - public void McpAppUiAttribute_PopulatesBothUiObjectAndLegacyKey() + public void ApplyAppUiAttributes_PopulatesUiObject() { var method = typeof(TestToolsWithAppUi).GetMethod(nameof(TestToolsWithAppUi.WeatherTool))!; var tool = McpServerTool.Create(method, target: null); + McpApps.ApplyAppUiAttributes(tool); + var meta = tool.ProtocolTool.Meta; Assert.NotNull(meta); @@ -214,11 +215,13 @@ public void McpAppUiAttribute_PopulatesBothUiObjectAndLegacyKey() } [Fact] - public void McpAppUiAttribute_WithVisibility_IncludesVisibilityInUiObject() + public void ApplyAppUiAttributes_WithVisibility_IncludesVisibilityInUiObject() { var method = typeof(TestToolsWithAppUi).GetMethod(nameof(TestToolsWithAppUi.ModelOnlyTool))!; var tool = McpServerTool.Create(method, target: null); + McpApps.ApplyAppUiAttributes(tool); + var uiNode = tool.ProtocolTool.Meta?["ui"]?.AsObject(); Assert.NotNull(uiNode); Assert.Equal("ui://model-only/view.html", uiNode["resourceUri"]?.GetValue()); @@ -230,26 +233,7 @@ public void McpAppUiAttribute_WithVisibility_IncludesVisibilityInUiObject() } [Fact] - public void McpAppUiAttribute_TakesPrecedenceOver_McpMetaAttribute() - { - // The tool has both [McpAppUi] and [McpMeta("ui", ...)] — AppUi should win for the "ui" key. - var method = typeof(TestToolsWithAppUi).GetMethod(nameof(TestToolsWithAppUi.ToolWithBothAttributes))!; - var tool = McpServerTool.Create(method, target: null); - - var meta = tool.ProtocolTool.Meta; - Assert.NotNull(meta); - - // The "ui" key should be from McpAppUiAttribute, not McpMetaAttribute - var uiNode = meta["ui"]?.AsObject(); - Assert.NotNull(uiNode); - Assert.Equal("ui://app-ui/view.html", uiNode["resourceUri"]?.GetValue()); - - // Other McpMeta attributes should still be present - Assert.Equal("extra-value", meta["extraKey"]?.GetValue()); - } - - [Fact] - public void McpAppUiAttribute_ExplicitOptionsMeta_TakesPrecedenceOver_Attribute() + public void ApplyAppUiAttributes_ExplicitMeta_TakesPrecedence() { // Explicit Meta["ui"] in options should override the attribute var method = typeof(TestToolsWithAppUi).GetMethod(nameof(TestToolsWithAppUi.WeatherTool))!; @@ -260,24 +244,52 @@ public void McpAppUiAttribute_ExplicitOptionsMeta_TakesPrecedenceOver_Attribute( var tool = McpServerTool.Create(method, target: null, new McpServerToolCreateOptions { Meta = explicitMeta }); + McpApps.ApplyAppUiAttributes(tool); + var uiNode = tool.ProtocolTool.Meta?["ui"]?.AsObject(); + // Explicit Meta["ui"] wins — ApplyAppUiAttributes does not overwrite Assert.Equal("ui://explicit/override.html", uiNode?["resourceUri"]?.GetValue()); } + [Fact] + public void ApplyAppUiAttributes_Collection_ProcessesAllTools() + { + var tools = new[] + { + McpServerTool.Create(typeof(TestToolsWithAppUi).GetMethod(nameof(TestToolsWithAppUi.WeatherTool))!, target: null), + McpServerTool.Create(typeof(TestToolsWithAppUi).GetMethod(nameof(TestToolsWithAppUi.ModelOnlyTool))!, target: null), + }; + + McpApps.ApplyAppUiAttributes(tools); + + Assert.NotNull(tools[0].ProtocolTool.Meta?["ui"]); + Assert.NotNull(tools[1].ProtocolTool.Meta?["ui"]); + } + + [Fact] + public void ApplyAppUiAttributes_NoAttribute_DoesNothing() + { + var tool = McpServerTool.Create( + (string input) => input, + new McpServerToolCreateOptions { Name = "plain_tool" }); + + McpApps.ApplyAppUiAttributes(tool); + + Assert.Null(tool.ProtocolTool.Meta); + } + #endregion - #region F7: McpServerToolCreateOptions.AppUi + #region F7: SetAppUi [Fact] - public void AppUi_PopulatesBothUiObjectAndLegacyKey() + public void SetAppUi_PopulatesUiObject() { var tool = McpServerTool.Create( (string location) => $"Weather for {location}", - new McpServerToolCreateOptions - { - Name = "get_weather", - AppUi = new McpUiToolMeta { ResourceUri = "ui://weather/view.html" }, - }); + new McpServerToolCreateOptions { Name = "get_weather" }); + + McpApps.SetAppUi(tool, new McpUiToolMeta { ResourceUri = "ui://weather/view.html" }); var meta = tool.ProtocolTool.Meta; Assert.NotNull(meta); @@ -288,19 +300,17 @@ public void AppUi_PopulatesBothUiObjectAndLegacyKey() } [Fact] - public void AppUi_WithVisibility_IncludesVisibilityInUiObject() + public void SetAppUi_WithVisibility_IncludesVisibilityInUiObject() { var tool = McpServerTool.Create( (string location) => $"Weather for {location}", - new McpServerToolCreateOptions - { - Name = "get_weather", - AppUi = new McpUiToolMeta - { - ResourceUri = "ui://weather/view.html", - Visibility = [McpUiToolVisibility.Model], - }, - }); + new McpServerToolCreateOptions { Name = "get_weather" }); + + McpApps.SetAppUi(tool, new McpUiToolMeta + { + ResourceUri = "ui://weather/view.html", + Visibility = [McpUiToolVisibility.Model], + }); var uiNode = tool.ProtocolTool.Meta?["ui"]?.AsObject(); Assert.NotNull(uiNode); @@ -312,36 +322,34 @@ public void AppUi_WithVisibility_IncludesVisibilityInUiObject() } [Fact] - public void AppUi_ExplicitMeta_TakesPrecedenceOver_AppUi() + public void SetAppUi_DoesNotOverwrite_ExistingUiKey() { var tool = McpServerTool.Create( (string location) => $"Weather for {location}", new McpServerToolCreateOptions { Name = "get_weather", - // Explicit Meta entry for "ui" should override AppUi Meta = new JsonObject { ["ui"] = new JsonObject { ["resourceUri"] = "ui://explicit/view.html" }, }, - AppUi = new McpUiToolMeta { ResourceUri = "ui://app-ui/view.html" }, }); + McpApps.SetAppUi(tool, new McpUiToolMeta { ResourceUri = "ui://new/view.html" }); + + // Existing Meta["ui"] is preserved var uiNode = tool.ProtocolTool.Meta?["ui"]?.AsObject(); - // Explicit Meta["ui"] wins Assert.Equal("ui://explicit/view.html", uiNode?["resourceUri"]?.GetValue()); } [Fact] - public void AppUi_NullResourceUri_ProducesUiObjectWithoutResourceUri() + public void SetAppUi_NullResourceUri_ProducesUiObjectWithoutResourceUri() { var tool = McpServerTool.Create( (string location) => $"Weather for {location}", - new McpServerToolCreateOptions - { - Name = "get_weather", - AppUi = new McpUiToolMeta { Visibility = [McpUiToolVisibility.App] }, - }); + new McpServerToolCreateOptions { Name = "get_weather" }); + + McpApps.SetAppUi(tool, new McpUiToolMeta { Visibility = [McpUiToolVisibility.App] }); var uiNode = tool.ProtocolTool.Meta?["ui"]?.AsObject(); Assert.NotNull(uiNode); @@ -349,21 +357,14 @@ public void AppUi_NullResourceUri_ProducesUiObjectWithoutResourceUri() } [Fact] - public void AppUi_IsPreservedWhenOptionsAreClonedInDeriveOptions() + public void SetAppUi_ReturnsSameTool() { - // DeriveOptions() calls options.Clone() internally when creating via MethodInfo. - // If AppUi is not included in Clone(), it would be lost when creating the tool via a method. - var appUi = new McpUiToolMeta { ResourceUri = "ui://weather/view.html" }; - var options = new McpServerToolCreateOptions { AppUi = appUi }; - - // Use the MethodInfo path, which calls DeriveOptions -> options.Clone() - var method = typeof(TestToolsWithAppUi).GetMethod(nameof(TestToolsWithAppUi.WeatherTool))!; - var tool = McpServerTool.Create(method, target: null, options); + var tool = McpServerTool.Create( + (string location) => $"Weather for {location}", + new McpServerToolCreateOptions { Name = "get_weather" }); - // The attribute on the method overrides options.AppUi, but both should produce the same meta. - var meta = tool.ProtocolTool.Meta; - Assert.NotNull(meta); - Assert.NotNull(meta["ui"]); + var result = McpApps.SetAppUi(tool, new McpUiToolMeta { ResourceUri = "ui://weather/view.html" }); + Assert.Same(tool, result); } #endregion @@ -381,12 +382,6 @@ private static class TestToolsWithAppUi [McpServerTool] [McpAppUi(ResourceUri = "ui://model-only/view.html", Visibility = [McpUiToolVisibility.Model])] public static string ModelOnlyTool(string location) => $"Model only for {location}"; - - [McpServerTool] - [McpAppUi(ResourceUri = "ui://app-ui/view.html")] - [McpMeta("ui", JsonValue = """{"resourceUri": "ui://mcpmeta/view.html"}""")] - [McpMeta("extraKey", "extra-value")] - public static string ToolWithBothAttributes(string input) => input; } #endregion From 7753c532fa974607de6275d36953477850a81251 Mon Sep 17 00:00:00 2001 From: Mike Kistler Date: Wed, 29 Apr 2026 19:57:59 -0500 Subject: [PATCH 5/7] Add WithMcpApps() builder extension for IMcpServerBuilder Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- ...odelContextProtocol.Extensions.Apps.csproj | 2 +- .../Server/McpAppsBuilderExtensions.cs | 61 +++++++++++++++++++ .../Server/McpAppsTests.cs | 28 +++++++++ 3 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 src/ModelContextProtocol.Extensions.Apps/Server/McpAppsBuilderExtensions.cs diff --git a/src/ModelContextProtocol.Extensions.Apps/ModelContextProtocol.Extensions.Apps.csproj b/src/ModelContextProtocol.Extensions.Apps/ModelContextProtocol.Extensions.Apps.csproj index b3c988d21..ccdce456c 100644 --- a/src/ModelContextProtocol.Extensions.Apps/ModelContextProtocol.Extensions.Apps.csproj +++ b/src/ModelContextProtocol.Extensions.Apps/ModelContextProtocol.Extensions.Apps.csproj @@ -34,7 +34,7 @@ - + diff --git a/src/ModelContextProtocol.Extensions.Apps/Server/McpAppsBuilderExtensions.cs b/src/ModelContextProtocol.Extensions.Apps/Server/McpAppsBuilderExtensions.cs new file mode 100644 index 000000000..d9332651e --- /dev/null +++ b/src/ModelContextProtocol.Extensions.Apps/Server/McpAppsBuilderExtensions.cs @@ -0,0 +1,61 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using System.Diagnostics.CodeAnalysis; + +namespace ModelContextProtocol.Server; + +/// +/// Extension methods for to enable MCP Apps support. +/// +[Experimental(Experimentals.Apps_DiagnosticId, UrlFormat = Experimentals.Apps_Url)] +public static class McpAppsBuilderExtensions +{ + /// + /// Enables MCP Apps support by automatically processing on registered tools. + /// + /// The server builder. + /// The builder provided in . + /// + /// + /// Call this method after registering tools (e.g., after WithTools<T>()) to automatically + /// apply metadata to the tool's _meta.ui field. + /// + /// + /// Tools that already have a ui key in their (e.g., set explicitly + /// via ) are not modified. + /// + /// + /// + /// + /// builder.Services + /// .AddMcpServer() + /// .WithTools<MyToolType>() + /// .WithMcpApps(); + /// + /// + public static IMcpServerBuilder WithMcpApps(this IMcpServerBuilder builder) + { +#if NET + ArgumentNullException.ThrowIfNull(builder); +#else + if (builder is null) throw new ArgumentNullException(nameof(builder)); +#endif + + builder.Services.AddSingleton, McpAppsPostConfigureOptions>(); + return builder; + } + + private sealed class McpAppsPostConfigureOptions : IPostConfigureOptions + { + public void PostConfigure(string? name, McpServerOptions options) + { + if (options.ToolCollection is { IsEmpty: false } tools) + { + foreach (var tool in tools) + { + McpApps.ApplyAppUiAttributes(tool); + } + } + } + } +} diff --git a/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs b/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs index b2b010ae2..7df8f0365 100644 --- a/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs +++ b/tests/ModelContextProtocol.Tests/Server/McpAppsTests.cs @@ -1,5 +1,7 @@ #pragma warning disable MCPEXP003 +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; using ModelContextProtocol.Protocol; using ModelContextProtocol.Server; using System.ComponentModel; @@ -369,6 +371,32 @@ public void SetAppUi_ReturnsSameTool() #endregion + #region Builder Extension: WithMcpApps + + [Fact] + public void WithMcpApps_AppliesAppUiAttributes_ViaOptions() + { + var sc = new ServiceCollection(); + sc.AddMcpServer() + .WithTools([typeof(TestToolsWithAppUi)]) + .WithMcpApps(); + + using var sp = sc.BuildServiceProvider(); + var options = sp.GetRequiredService>().Value; + + Assert.NotNull(options.ToolCollection); + Assert.NotEmpty(options.ToolCollection); + + // Both tools should have their [McpAppUi] attributes applied + var toolsWithUi = options.ToolCollection.Where(t => t.ProtocolTool.Meta?["ui"] is not null).ToList(); + Assert.Equal(2, toolsWithUi.Count); + + var weatherTool = toolsWithUi.First(t => t.ProtocolTool.Meta!["ui"]!["resourceUri"]?.GetValue() == "ui://weather/view.html"); + Assert.NotNull(weatherTool); + } + + #endregion + #region Test helper types [McpServerToolType] From 7f54b8c958bbdfc321b5c865a5c4db31a7a71bbb Mon Sep 17 00:00:00 2001 From: Mike Kistler Date: Wed, 29 Apr 2026 20:05:46 -0500 Subject: [PATCH 6/7] Add MCP Apps conceptual documentation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/concepts/apps/apps.md | 145 +++++++++++++++++++++++++++++++++++++ docs/concepts/index.md | 6 ++ docs/concepts/toc.yml | 6 +- 3 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 docs/concepts/apps/apps.md diff --git a/docs/concepts/apps/apps.md b/docs/concepts/apps/apps.md new file mode 100644 index 000000000..3a12e3632 --- /dev/null +++ b/docs/concepts/apps/apps.md @@ -0,0 +1,145 @@ +--- +title: MCP Apps +author: mikekistler +description: How to use the MCP Apps extension to deliver interactive UIs from MCP servers. +uid: apps +--- + +# MCP Apps + +[MCP Apps] is an extension to the Model Context Protocol that enables MCP servers to deliver interactive user interfaces — dashboards, forms, visualizations, and more — directly inside conversational AI clients. + +[MCP Apps]: https://modelcontextprotocol.io/specification/draft/extensions/apps + +> [!IMPORTANT] +> MCP Apps support is experimental. All types are marked with `[Experimental("MCPEXP003")]` and require suppressing that diagnostic to use. + +## Installation + +MCP Apps is provided in the `ModelContextProtocol.Extensions.Apps` package, which layers on top of the core SDK: + +```shell +dotnet add package ModelContextProtocol.Extensions.Apps +``` + +## Overview + +The MCP Apps extension introduces the concept of **UI resources** — HTML pages served by the MCP server that a client can display alongside the conversation. Tools can be associated with a UI resource so the client knows which interface to show when a tool is called. + +The key concepts are: + +- **UI capability negotiation** — Client and server declare support via `extensions["io.modelcontextprotocol/ui"]` +- **UI resources** — HTML content served with the MIME type `text/html;profile=mcp-app` +- **Tool UI metadata** — Tools declare their associated UI resource in `_meta.ui` + +## Associating tools with UI resources + +### Using the builder extension (recommended) + +The simplest approach is to apply `[McpAppUi]` attributes to your tool methods and call `WithMcpApps()` on the server builder: + +```csharp +[McpServerToolType] +public class WeatherTools +{ + [McpServerTool, Description("Get current weather for a location")] + [McpAppUi(ResourceUri = "ui://weather/view.html")] + public static string GetWeather(string location) => $"Weather for {location}"; + + [McpServerTool, Description("Get forecast (model-only tool)")] + [McpAppUi(ResourceUri = "ui://weather/forecast.html", Visibility = [McpUiToolVisibility.Model])] + public static string GetForecast(string location) => $"Forecast for {location}"; +} +``` + +```csharp +builder.Services.AddMcpServer() + .WithTools() + .WithMcpApps(); +``` + +The `WithMcpApps()` call registers a post-configuration step that processes all registered tools and applies `[McpAppUi]` attribute metadata to their `_meta.ui` field automatically. + +### Using the attribute with manual processing + +If you create tools manually (without `WithMcpApps()`), you can still use the attribute and process tools explicitly: + +```csharp +var tools = new[] +{ + McpServerTool.Create(typeof(WeatherTools).GetMethod(nameof(WeatherTools.GetWeather))!), + McpServerTool.Create(typeof(WeatherTools).GetMethod(nameof(WeatherTools.GetForecast))!), +}; + +McpApps.ApplyAppUiAttributes(tools); +``` + +### Using the programmatic API + +For full control, use `McpApps.SetAppUi` to set UI metadata directly: + +```csharp +var tool = McpServerTool.Create((string location) => $"Weather for {location}"); + +McpApps.SetAppUi(tool, new McpUiToolMeta +{ + ResourceUri = "ui://weather/view.html", + Visibility = [McpUiToolVisibility.Model, McpUiToolVisibility.App], +}); +``` + +## Checking client capabilities + +During a session, you can check whether the connected client supports MCP Apps: + +```csharp +[McpServerTool, Description("Get weather")] +[McpAppUi(ResourceUri = "ui://weather/view.html")] +public static string GetWeather(McpServer server, string location) +{ + var uiCapability = McpApps.GetUiCapability(server.ClientCapabilities); + if (uiCapability is not null) + { + // Client supports MCP Apps — the UI will be displayed + } + + return $"Weather for {location}"; +} +``` + +## Tool visibility + +The `Visibility` property controls which principals can invoke the tool: + +| Value | Meaning | +| - | - | +| `McpUiToolVisibility.Model` | Only the LLM can call this tool | +| `McpUiToolVisibility.App` | Only the app UI can call this tool | +| Both (or null/empty) | Both the model and app can call the tool (default) | + +## UI resources + +UI resources are HTML pages registered with the MCP server using the `ui://` URI scheme and the `text/html;profile=mcp-app` MIME type. The `McpUiResourceMeta` type provides metadata for these resources, including: + +- **CSP (Content Security Policy)** — Controls allowed origins for network requests and resource loads +- **Permissions** — Sandbox permissions (scripts, forms, popups, etc.) +- **Domain** — Dedicated origin for OAuth flows and CORS +- **PrefersBorder** — Whether the host should render a visual border + +## Constants + +The class provides constants for protocol values: + +| Constant | Value | Usage | +| - | - | - | +| `McpApps.ResourceMimeType` | `text/html;profile=mcp-app` | MIME type for UI resources | +| `McpApps.ExtensionId` | `io.modelcontextprotocol/ui` | Key in `extensions` capability dictionary | + +## Serialization + +MCP Apps types use source-generated JSON serialization for Native AOT compatibility. Use `McpApps.SerializerOptions` when serializing extension types: + +```csharp +var json = JsonSerializer.Serialize(toolMeta, McpApps.SerializerOptions); +var deserialized = JsonSerializer.Deserialize(json, McpApps.SerializerOptions); +``` diff --git a/docs/concepts/index.md b/docs/concepts/index.md index d7cde44e9..47f0b498c 100644 --- a/docs/concepts/index.md +++ b/docs/concepts/index.md @@ -39,3 +39,9 @@ Install the SDK and build your first MCP client and server. | [Stateless and Stateful](stateless/stateless.md) | Learn when to use stateless vs. stateful mode for HTTP servers and how to configure sessions. | | [HTTP Context](httpcontext/httpcontext.md) | Learn how to access the underlying `HttpContext` for a request. | | [MCP Server Handler Filters](filters.md) | Learn how to add filters to the handler pipeline. Filters let you wrap the original handler with additional functionality. | + +### Extensions + +| Title | Description | +| - | - | +| [MCP Apps](apps/apps.md) | Learn how to use the MCP Apps extension to deliver interactive UIs from MCP servers. | diff --git a/docs/concepts/toc.yml b/docs/concepts/toc.yml index 4e0001cd5..1bc6a4839 100644 --- a/docs/concepts/toc.yml +++ b/docs/concepts/toc.yml @@ -44,4 +44,8 @@ items: - name: HTTP Context uid: httpcontext - name: Filters - uid: filters \ No newline at end of file + uid: filters +- name: Extensions + items: + - name: MCP Apps + uid: apps \ No newline at end of file From 5d38a5ba0fd9136b9f04c017f850d754db95a1fd Mon Sep 17 00:00:00 2001 From: Mike Kistler Date: Mon, 4 May 2026 09:41:40 -0500 Subject: [PATCH 7/7] Add WeatherAppServer sample demonstrating MCP Apps extension Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- ModelContextProtocol.slnx | 1 + samples/WeatherAppServer/Program.cs | 33 +++ samples/WeatherAppServer/README.md | 41 +++ samples/WeatherAppServer/UsCity.cs | 64 +++++ .../WeatherAppServer/WeatherAppServer.csproj | 20 ++ samples/WeatherAppServer/WeatherResources.cs | 23 ++ samples/WeatherAppServer/WeatherTools.cs | 63 +++++ samples/WeatherAppServer/WeatherUI.png | Bin 0 -> 367532 bytes .../WeatherAppServer/ui/weather-forecast.html | 257 ++++++++++++++++++ 9 files changed, 502 insertions(+) create mode 100644 samples/WeatherAppServer/Program.cs create mode 100644 samples/WeatherAppServer/README.md create mode 100644 samples/WeatherAppServer/UsCity.cs create mode 100644 samples/WeatherAppServer/WeatherAppServer.csproj create mode 100644 samples/WeatherAppServer/WeatherResources.cs create mode 100644 samples/WeatherAppServer/WeatherTools.cs create mode 100644 samples/WeatherAppServer/WeatherUI.png create mode 100644 samples/WeatherAppServer/ui/weather-forecast.html diff --git a/ModelContextProtocol.slnx b/ModelContextProtocol.slnx index ffc845fc8..e001e4bba 100644 --- a/ModelContextProtocol.slnx +++ b/ModelContextProtocol.slnx @@ -50,6 +50,7 @@ + diff --git a/samples/WeatherAppServer/Program.cs b/samples/WeatherAppServer/Program.cs new file mode 100644 index 000000000..645a00908 --- /dev/null +++ b/samples/WeatherAppServer/Program.cs @@ -0,0 +1,33 @@ +using Microsoft.Extensions.DependencyInjection; +using ModelContextProtocol.AspNetCore; +using ModelContextProtocol.Protocol; +using ModelContextProtocol.Server; +using System.Net.Http.Headers; + +var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddSingleton(_ => +{ + var client = new HttpClient { BaseAddress = new Uri("https://api.weather.gov") }; + client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("WeatherAppServer", "1.0")); + return client; +}); + +builder.Services + .AddMcpServer(options => + { + options.ServerInfo = new Implementation { Name = "weather-app-server", Version = "1.0.0" }; + options.Capabilities = new ServerCapabilities + { + Tools = new ToolsCapability(), + Resources = new ResourcesCapability(), + }; + }) + .WithHttpTransport() + .WithTools() + .WithResources() + .WithMcpApps(); + +var app = builder.Build(); +app.MapMcp("/mcp"); +app.Run(); diff --git a/samples/WeatherAppServer/README.md b/samples/WeatherAppServer/README.md new file mode 100644 index 000000000..8e7fe3dfd --- /dev/null +++ b/samples/WeatherAppServer/README.md @@ -0,0 +1,41 @@ +# Weather App Server + +An MCP server that demonstrates the **MCP Apps** extension by serving an interactive weather forecast UI alongside weather tools. + +## What it shows + +- **`[McpAppUi]` attribute** — declaratively associates a UI resource with a tool +- **`WithMcpApps()`** — builder extension that processes `[McpAppUi]` attributes +- **UI resource** — an HTML page served via `McpServerResource` with MIME type `text/html;profile=mcp-app` +- **Structured content** — tool results include `StructuredContent` for the UI to render + +## Running + +```bash +dotnet run +``` + +The server starts on `http://localhost:5000` by default. Connect any MCP Apps-capable client to the `/mcp` endpoint. + +Then prompt that will cause the LLM to request the use of the "weather_ui" tool. +A general prompt like "What's the weather?" will probably work, but if not you could try explicitly requesting the tool +with something like "@weather_ui". This should load the Weather App UI in an iFrame that you can then interact with +to get the weather forecast for a number of US cities. + +![UI of the Weather Forecast MCP App in VS Code](./WeatherUI.png) + +## Tools + +| Tool | Description | +|------|-------------| +| `weather_ui` | Opens the weather forecast UI | +| `weather_forecast` | Gets a multi-period forecast from the National Weather Service for a US city | + +Both tools are linked to the `ui://weather-app/forecast` resource via the `[McpAppUi]` attribute. + +## Resources + +| URI | Description | +|-----|-------------| +| `ui://weather-app/forecast` | Interactive weather forecast HTML UI | +| `data://weather-app/us-cities` | JSON list of supported US cities | diff --git a/samples/WeatherAppServer/UsCity.cs b/samples/WeatherAppServer/UsCity.cs new file mode 100644 index 000000000..57b3ade95 --- /dev/null +++ b/samples/WeatherAppServer/UsCity.cs @@ -0,0 +1,64 @@ +using System.Text.Json.Serialization; + +[JsonConverter(typeof(JsonStringEnumConverter))] +public enum UsCity +{ + [JsonStringEnumMemberName("Albuquerque, NM")] AlbuquerqueNM, + [JsonStringEnumMemberName("Atlanta, GA")] AtlantaGA, + [JsonStringEnumMemberName("Austin, TX")] AustinTX, + [JsonStringEnumMemberName("Boston, MA")] BostonMA, + [JsonStringEnumMemberName("Charlotte, NC")] CharlotteNC, + [JsonStringEnumMemberName("Chicago, IL")] ChicagoIL, + [JsonStringEnumMemberName("Dallas, TX")] DallasTX, + [JsonStringEnumMemberName("Denver, CO")] DenverCO, + [JsonStringEnumMemberName("Houston, TX")] HoustonTX, + [JsonStringEnumMemberName("Indianapolis, IN")] IndianapolisIN, + [JsonStringEnumMemberName("Las Vegas, NV")] LasVegasNV, + [JsonStringEnumMemberName("Los Angeles, CA")] LosAngelesCA, + [JsonStringEnumMemberName("Miami, FL")] MiamiFL, + [JsonStringEnumMemberName("Minneapolis, MN")] MinneapolisMN, + [JsonStringEnumMemberName("Nashville, TN")] NashvilleTN, + [JsonStringEnumMemberName("New York, NY")] NewYorkNY, + [JsonStringEnumMemberName("Orlando, FL")] OrlandoFL, + [JsonStringEnumMemberName("Philadelphia, PA")] PhiladelphiaPA, + [JsonStringEnumMemberName("Phoenix, AZ")] PhoenixAZ, + [JsonStringEnumMemberName("Portland, OR")] PortlandOR, + [JsonStringEnumMemberName("Salt Lake City, UT")] SaltLakeCityUT, + [JsonStringEnumMemberName("San Diego, CA")] SanDiegoCA, + [JsonStringEnumMemberName("San Francisco, CA")] SanFranciscoCA, + [JsonStringEnumMemberName("Seattle, WA")] SeattleWA, + [JsonStringEnumMemberName("Washington, DC")] WashingtonDC, +} + +public static class UsCityData +{ + public static (double Latitude, double Longitude) GetCoordinates(UsCity city) => city switch + { + UsCity.AlbuquerqueNM => (35.0844, -106.6504), + UsCity.AtlantaGA => (33.7490, -84.3880), + UsCity.AustinTX => (30.2672, -97.7431), + UsCity.BostonMA => (42.3601, -71.0589), + UsCity.CharlotteNC => (35.2271, -80.8431), + UsCity.ChicagoIL => (41.8781, -87.6298), + UsCity.DallasTX => (32.7767, -96.7970), + UsCity.DenverCO => (39.7392, -104.9903), + UsCity.HoustonTX => (29.7604, -95.3698), + UsCity.IndianapolisIN => (39.7684, -86.1581), + UsCity.LasVegasNV => (36.1699, -115.1398), + UsCity.LosAngelesCA => (34.0522, -118.2437), + UsCity.MiamiFL => (25.7617, -80.1918), + UsCity.MinneapolisMN => (44.9778, -93.2650), + UsCity.NashvilleTN => (36.1627, -86.7816), + UsCity.NewYorkNY => (40.7128, -74.0060), + UsCity.OrlandoFL => (28.5383, -81.3792), + UsCity.PhiladelphiaPA => (39.9526, -75.1652), + UsCity.PhoenixAZ => (33.4484, -112.0740), + UsCity.PortlandOR => (45.5152, -122.6784), + UsCity.SaltLakeCityUT => (40.7608, -111.8910), + UsCity.SanDiegoCA => (32.7157, -117.1611), + UsCity.SanFranciscoCA => (37.7749, -122.4194), + UsCity.SeattleWA => (47.6062, -122.3321), + UsCity.WashingtonDC => (38.9072, -77.0369), + _ => throw new ArgumentOutOfRangeException(nameof(city)) + }; +} diff --git a/samples/WeatherAppServer/WeatherAppServer.csproj b/samples/WeatherAppServer/WeatherAppServer.csproj new file mode 100644 index 000000000..216810024 --- /dev/null +++ b/samples/WeatherAppServer/WeatherAppServer.csproj @@ -0,0 +1,20 @@ + + + + net10.0 + enable + enable + + $(NoWarn);MCPEXP003 + + + + + + + + + + + + diff --git a/samples/WeatherAppServer/WeatherResources.cs b/samples/WeatherAppServer/WeatherResources.cs new file mode 100644 index 000000000..daa563104 --- /dev/null +++ b/samples/WeatherAppServer/WeatherResources.cs @@ -0,0 +1,23 @@ +using ModelContextProtocol.Server; +using System.ComponentModel; +using System.Text.Json; +using System.Text.Json.Serialization; + +[McpServerResourceType] +public sealed class WeatherResources +{ + private static readonly string UiDir = Path.Combine(AppContext.BaseDirectory, "ui"); + + [McpServerResource(UriTemplate = "ui://weather-app/forecast", Name = "weather-forecast-ui", MimeType = McpApps.ResourceMimeType)] + [Description("Interactive weather forecast UI with city picker")] + public static string GetWeatherForecastUi() => File.ReadAllText(Path.Combine(UiDir, "weather-forecast.html")); + + [McpServerResource(UriTemplate = "data://weather-app/us-cities", Name = "us-cities", MimeType = "application/json")] + [Description("List of supported US cities for weather forecasts")] + public static string GetUsCities() + { + var options = new JsonSerializerOptions { Converters = { new JsonStringEnumConverter() } }; + var cities = Enum.GetValues().Select(c => JsonSerializer.Serialize(c, options).Trim('"')).Order().ToList(); + return JsonSerializer.Serialize(cities); + } +} diff --git a/samples/WeatherAppServer/WeatherTools.cs b/samples/WeatherAppServer/WeatherTools.cs new file mode 100644 index 000000000..cc9a2634f --- /dev/null +++ b/samples/WeatherAppServer/WeatherTools.cs @@ -0,0 +1,63 @@ +using ModelContextProtocol; +using ModelContextProtocol.Protocol; +using ModelContextProtocol.Server; +using System.ComponentModel; +using System.Globalization; +using System.Text.Json; + +[McpServerToolType] +public sealed class WeatherTools +{ + [McpServerTool(Name = "weather_ui")] + [McpAppUi(ResourceUri = "ui://weather-app/forecast")] + [Description("Display an interactive weather forecast UI with city picker.")] + public static string WeatherUi() => "Showing weather forecast UI."; + + [McpServerTool(Name = "weather_forecast")] + [McpAppUi(ResourceUri = "ui://weather-app/forecast")] + [Description("Get weather forecast for a US city. Returns detailed multi-period forecast from the National Weather Service.")] + public static async Task WeatherForecast( + HttpClient client, + [Description("US city to get the forecast for")] UsCity cityState) + { + var (latitude, longitude) = UsCityData.GetCoordinates(cityState); + var pointUrl = string.Create(CultureInfo.InvariantCulture, $"/points/{latitude},{longitude}"); + + using var locationResponse = await client.GetAsync(pointUrl); + locationResponse.EnsureSuccessStatusCode(); + using var locationDocument = await JsonDocument.ParseAsync(await locationResponse.Content.ReadAsStreamAsync()); + + var forecastUrl = locationDocument.RootElement.GetProperty("properties").GetProperty("forecast").GetString() + ?? throw new McpException($"No forecast URL provided by weather.gov for {cityState}"); + + using var forecastResponse = await client.GetAsync(forecastUrl); + forecastResponse.EnsureSuccessStatusCode(); + using var forecastDocument = await JsonDocument.ParseAsync(await forecastResponse.Content.ReadAsStreamAsync()); + + var periods = forecastDocument.RootElement.GetProperty("properties").GetProperty("periods").EnumerateArray().ToList(); + + var structuredPeriods = periods.Select(period => new + { + name = period.GetProperty("name").GetString(), + temperature = period.GetProperty("temperature").GetInt32(), + temperatureUnit = period.GetProperty("temperatureUnit").GetString(), + windSpeed = period.GetProperty("windSpeed").GetString(), + windDirection = period.GetProperty("windDirection").GetString(), + shortForecast = period.GetProperty("shortForecast").GetString(), + detailedForecast = period.GetProperty("detailedForecast").GetString(), + isDaytime = period.GetProperty("isDaytime").GetBoolean() + }).ToList(); + + return new CallToolResult + { + Content = [new TextContentBlock { Text = $"Weather forecast for {cityState}." }], + StructuredContent = JsonSerializer.SerializeToElement(new + { + cityState = cityState.ToString(), + latitude, + longitude, + periods = structuredPeriods + }) + }; + } +} diff --git a/samples/WeatherAppServer/WeatherUI.png b/samples/WeatherAppServer/WeatherUI.png new file mode 100644 index 0000000000000000000000000000000000000000..db97a2353af0b4ae588662c9c63912ce1f0d89c3 GIT binary patch literal 367532 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
nplOC@DGpp(r0)&Y_qPTq4e&ey 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

y3=+*?l(Fbsps`xH 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 literal 0 HcmV?d00001 diff --git a/samples/WeatherAppServer/ui/weather-forecast.html b/samples/WeatherAppServer/ui/weather-forecast.html new file mode 100644 index 000000000..a78ef6d09 --- /dev/null +++ b/samples/WeatherAppServer/ui/weather-forecast.html @@ -0,0 +1,257 @@ + + + + + + Weather Forecast + + + +

+ 🌤️ Weather Forecast + +
+
+
+ City + +
+ +
+
+
🌎
Select a city to view the weather forecast
+
+
Ready
+ + + +