Skip to content

Remove MCP server and UI from the dashboard#15528

Open
JamesNK wants to merge 4 commits intomainfrom
jamesnk/remove-dashboard-mcp
Open

Remove MCP server and UI from the dashboard#15528
JamesNK wants to merge 4 commits intomainfrom
jamesnk/remove-dashboard-mcp

Conversation

@JamesNK
Copy link
Member

@JamesNK JamesNK commented Mar 24, 2026

Description

Remove the MCP (Model Context Protocol) server and UI from the Aspire Dashboard. The dashboard MCP server is being replaced by the CLI MCP server, so the dashboard-hosted MCP endpoint, its configuration, authentication, UI dialog, and all related infrastructure are no longer needed.

What's removed

Dashboard MCP server & UI:

  • MCP server endpoint, tools (AspireResourceMcpTools, AspireTelemetryMcpTools), and extensions (McpExtensions)
  • MCP authentication handlers (McpApiKeyAuthenticationHandler, McpCompositeAuthenticationHandler)
  • MCP server dialog UI (McpServerDialog.razor/.cs/.css)
  • MCP-related dashboard options (McpAuthMode, MCP options in DashboardOptions, PostConfigureDashboardOptions, ValidateDashboardOptions)
  • MCP connection type from ConnectionType enum
  • MCP endpoint from DashboardEndpointsBuilder and DashboardWebApplication
  • MCP button and AI icon from MainLayout
  • ModelContextProtocol and ModelContextProtocol.AspNetCore NuGet package references
  • All MCP resource strings from Dialogs.resx, Layout.resx, and their xlf translations

Hosting MCP propagation:

  • Dashboard MCP connection info from backchannel (DashboardUrlsHelper, DashboardEventHandlers, DashboardOptions)
  • MCP endpoint URL/API key environment variables from dashboard resource setup
  • MCP secret generation from DistributedApplicationBuilder
  • MCP endpoint validation from TransportOptionsValidator

CLI backchannel:

  • Dashboard MCP connection info from IAppHostAuxiliaryBackchannel and AppHostAuxiliaryBackchannel
  • MCP info from backchannel monitor debug logging

Environment variable & templates:

  • ASPIRE_DASHBOARD_MCP_ENDPOINT_URL removed from all playground launchSettings.json (56 files), project templates, CLI templates, KnownConfigNames, and DashboardConfigNames
  • MCP port configuration removed from template.json, dotnetcli.host.json, and localization files across all 6 project templates

Tests:

  • Removed McpConfigurationTests, McpServiceTests, AspireResourceMcpToolsTests, AspireTelemetryMcpToolsTests, McpConfigModelTests, McpIconHelperTests
  • Cleaned up MCP assertions from DashboardResourceTests, StartupTests, TelemetryApiTests, AuxiliaryBackchannelTests, FrontendBrowserTokenAuthTests

What's preserved for backwards compatibility

  • DashboardMcpConnectionInfo class in BackchannelDataTypes.cs (kept for older CLI versions)
  • GetDashboardMcpConnectionInfoAsync RPC method in AuxiliaryBackchannelRpcTarget.cs (returns null)
  • V1 capability documentation in cli-backchannel.md

Checklist

  • Is this feature complete?
    • Yes. Ready to ship.
    • No. Follow-up changes expected.
  • Are you including unit tests for the changes and scenario tests if relevant?
    • Yes
    • No
  • Did you add public API?
    • Yes
    • No
  • Does the change make any security assumptions or guarantees?
    • Yes
    • No
  • Does the change require an update in our Aspire docs?

JamesNK added 2 commits March 24, 2026 21:33
- Restore DashboardMcpConnectionInfo class in BackchannelDataTypes.cs
- Restore GetDashboardMcpConnectionInfoAsync in AuxiliaryBackchannelRpcTarget.cs (returns null)
- Update V1 capabilities comment to include GetDashboardMcpConnectionInfoAsync
- Restore method in cli-backchannel.md V1 capabilities table
@JamesNK JamesNK requested a review from mitchdenny as a code owner March 24, 2026 13:46
Copilot AI review requested due to automatic review settings March 24, 2026 13:46
@github-actions
Copy link
Contributor

github-actions bot commented Mar 24, 2026

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 15528

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 15528"

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes the Aspire Dashboard-hosted MCP (Model Context Protocol) server and its UI/config plumbing, shifting MCP responsibilities to the CLI MCP server and cleaning up related options, environment variables, templates, and tests.

Changes:

  • Removes MCP endpoint/auth/UI integration from the Dashboard and associated telemetry keys/resources.
  • Removes MCP-related configuration names and ASPIRE_DASHBOARD_MCP_ENDPOINT_URL from templates/playgrounds and CLI templating.
  • Updates tests and backchannel/CLI plumbing to no longer expect or log MCP connection info.

Reviewed changes

Copilot reviewed 257 out of 259 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/Aspire.Dashboard.Tests/Integration/Playwright/Infrastructure/DashboardServerFixture.cs Removes MCP auth-mode config from dashboard test fixture defaults.
tests/Aspire.Dashboard.Tests/Integration/IntegrationTestHelpers.cs Removes MCP URL config from integration test configuration setup.
tests/Aspire.Dashboard.Tests/Integration/FrontendBrowserTokenAuthTests.cs Removes MCP-specific startup log assertions from tests.
tests/Aspire.Dashboard.Tests/BrowserSecurityHeadersMiddlewareTests.cs Drops MCP connection type coverage from security headers middleware tests.
tests/Aspire.Cli.Tests/TestServices/TestAppHostAuxiliaryBackchannel.cs Removes MCP connection info property from test backchannel implementation.
tests/Aspire.Cli.Tests/Mcp/ListAppHostsToolTests.cs Updates construction of backchannel objects after MCP info removal.
tests/Aspire.Cli.Tests/Mcp/AppHostConnectionSelectionLogicTests.cs Updates helper construction after MCP info removal.
src/Shared/KnownConfigNames.cs Removes the ASPIRE_DASHBOARD_MCP_ENDPOINT_URL known config name constant.
src/Shared/DashboardConfigNames.cs Removes MCP-related config names and narrows API-auth comments to non-MCP usage.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/Aspire-StarterApplication.1.AppHost/Properties/launchSettings.json Removes ASPIRE_DASHBOARD_MCP_ENDPOINT_URL from template launch settings.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/template.json Removes MCP port parameters/generators from template configuration.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.zh-Hans.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.pt-BR.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.ko.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.it.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.fr.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/localize/templatestrings.en.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/.template.config/dotnetcli.host.json Removes MCP port symbols from dotnetcli host metadata.
src/Aspire.ProjectTemplates/templates/aspire-starter/Aspire-StarterApplication.1.AppHost/Properties/launchSettings.json Removes ASPIRE_DASHBOARD_MCP_ENDPOINT_URL from template launch settings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/template.json Removes MCP port parameters/generators from template configuration.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.zh-Hant.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.zh-Hans.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.tr.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.ru.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.pt-BR.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.pl.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.ko.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.ja.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.it.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.fr.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.es.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.en.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/localize/templatestrings.de.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-starter/.template.config/dotnetcli.host.json Removes MCP port symbols from dotnetcli host metadata.
src/Aspire.ProjectTemplates/templates/aspire-py-starter/apphost.run.json Removes ASPIRE_DASHBOARD_MCP_ENDPOINT_URL from template run settings.
src/Aspire.ProjectTemplates/templates/aspire-py-starter/.template.config/template.json Removes MCP port parameters/generators from template configuration.
src/Aspire.ProjectTemplates/templates/aspire-py-starter/.template.config/localize/templatestrings.zh-Hant.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-py-starter/.template.config/localize/templatestrings.zh-Hans.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-py-starter/.template.config/localize/templatestrings.tr.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-py-starter/.template.config/localize/templatestrings.ru.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-py-starter/.template.config/localize/templatestrings.pt-BR.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-py-starter/.template.config/localize/templatestrings.ko.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-py-starter/.template.config/localize/templatestrings.it.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-py-starter/.template.config/localize/templatestrings.fr.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-py-starter/.template.config/localize/templatestrings.es.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-py-starter/.template.config/localize/templatestrings.en.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-py-starter/.template.config/localize/templatestrings.de.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-js-frontend-starter/.template.config/localize/templatestrings.zh-Hans.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-js-frontend-starter/.template.config/localize/templatestrings.ko.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-js-frontend-starter/.template.config/localize/templatestrings.it.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/AspireApplication.1.AppHost/Properties/launchSettings.json Removes ASPIRE_DASHBOARD_MCP_ENDPOINT_URL from template launch settings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/template.json Removes MCP port parameters/generators from template configuration.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.zh-Hant.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.zh-Hans.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.tr.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.ru.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.pt-BR.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.pl.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.ko.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.ja.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.it.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.fr.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.es.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.en.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.de.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/localize/templatestrings.cs.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-empty/.template.config/dotnetcli.host.json Removes MCP port symbols from dotnetcli host metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost/Properties/launchSettings.json Removes ASPIRE_DASHBOARD_MCP_ENDPOINT_URL from template launch settings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/template.json Removes MCP port parameters/generators from template configuration.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.zh-Hant.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.zh-Hans.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.tr.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.ru.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.pt-BR.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.pl.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.ko.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.ja.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.it.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.fr.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.es.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.en.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.de.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/localize/templatestrings.cs.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost/.template.config/dotnetcli.host.json Removes MCP port symbols from dotnetcli host metadata.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/apphost.run.json Removes ASPIRE_DASHBOARD_MCP_ENDPOINT_URL from template run settings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/template.json Removes MCP port parameters/generators from template configuration.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.zh-Hant.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.zh-Hans.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.tr.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.ru.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.pt-BR.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.pl.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.ko.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.ja.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.it.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.fr.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.es.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.en.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.de.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/localize/templatestrings.cs.json Removes MCP port symbol descriptions from localized template strings.
src/Aspire.ProjectTemplates/templates/aspire-apphost-singlefile/.template.config/dotnetcli.host.json Removes MCP port symbols from dotnetcli host metadata.
src/Aspire.Hosting/DistributedApplicationBuilder.cs Removes MCP API key secret generation and related comments from hosting.
src/Aspire.Hosting/Dashboard/TransportOptionsValidator.cs Removes validation of the MCP endpoint environment variable.
src/Aspire.Hosting/Dashboard/DashboardOptions.cs Removes MCP endpoint/API key propagation from hosting dashboard options.
src/Aspire.Dashboard/Telemetry/TelemetryPropertyKeys.cs Removes MCP tool-call telemetry property keys.
src/Aspire.Dashboard/Telemetry/TelemetryEventKeys.cs Removes MCP tool-call telemetry event keys.
src/Aspire.Dashboard/Resources/xlf/Layout.zh-Hant.xlf Removes MCP-related localized strings from XLF resources.
src/Aspire.Dashboard/Resources/xlf/Layout.zh-Hans.xlf Removes MCP-related localized strings from XLF resources.
src/Aspire.Dashboard/Resources/xlf/Layout.tr.xlf Removes MCP-related localized strings from XLF resources.
src/Aspire.Dashboard/Resources/xlf/Layout.ru.xlf Removes MCP-related localized strings from XLF resources.
src/Aspire.Dashboard/Resources/xlf/Layout.pt-BR.xlf Removes MCP-related localized strings from XLF resources.
src/Aspire.Dashboard/Resources/xlf/Layout.pl.xlf Removes MCP-related localized strings from XLF resources.
src/Aspire.Dashboard/Resources/xlf/Layout.ko.xlf Removes MCP-related localized strings from XLF resources.
src/Aspire.Dashboard/Resources/xlf/Layout.ja.xlf Removes MCP-related localized strings from XLF resources.
src/Aspire.Dashboard/Resources/xlf/Layout.it.xlf Removes MCP-related localized strings from XLF resources.
src/Aspire.Dashboard/Resources/xlf/Layout.fr.xlf Removes MCP-related localized strings from XLF resources.
src/Aspire.Dashboard/Resources/xlf/Layout.es.xlf Removes MCP-related localized strings from XLF resources.
src/Aspire.Dashboard/Resources/xlf/Layout.de.xlf Removes MCP-related localized strings from XLF resources.
src/Aspire.Dashboard/Resources/xlf/Layout.cs.xlf Removes MCP-related localized strings from XLF resources.
src/Aspire.Dashboard/Resources/Layout.resx Removes MCP-related resource strings.
src/Aspire.Dashboard/Resources/Layout.Designer.cs Removes MCP-related generated resource accessors.
src/Aspire.Dashboard/Mcp/McpConfigPropertyViewModel.cs Deletes MCP UI/config view model file.
src/Aspire.Dashboard/Mcp/McpCompositeAuthenticationHandler.cs Deletes MCP composite authentication handler and related types.
src/Aspire.Dashboard/DashboardEndpointsBuilder.cs Removes MCP endpoint mapping from dashboard endpoint builder.
src/Aspire.Dashboard/Configuration/ValidateDashboardOptions.cs Removes MCP options parsing and MCP-to-API backward-compat validation logic.
src/Aspire.Dashboard/Configuration/McpAuthMode.cs Deletes MCP auth mode enum.
src/Aspire.Dashboard/Configuration/ApiAuthMode.cs Updates API auth mode documentation to remove MCP mention.
src/Aspire.Dashboard/Components/Layout/MainLayout.razor Removes MCP button/icon from the dashboard header UI.
src/Aspire.Dashboard/Components/Dialogs/McpServerDialog.razor.css Deletes MCP server dialog styling (UI removal).
src/Aspire.Dashboard/Authentication/Connection/ConnectionTypeMiddleware.cs Updates documentation to remove MCP references.
src/Aspire.Dashboard/Authentication/Connection/ConnectionTypeAuthenticationHandler.cs Removes MCP connection auth scheme constant.
src/Aspire.Dashboard/Authentication/Connection/ConnectionType.cs Removes MCP connection type enum value.
src/Aspire.Dashboard/Aspire.Dashboard.csproj Removes MCP package references and shared MCP icon/resource inclusions.
src/Aspire.Cli/Templating/Templates/empty-apphost/aspire.config.json Removes MCP endpoint env var from CLI template config.
src/Aspire.Cli/Templating/CliTemplateFactory.cs Removes MCP token replacement and random MCP port generation.
src/Aspire.Cli/Projects/DotNetAppHostProject.cs Removes MCP endpoint env var from single-file AppHost environment setup.
src/Aspire.Cli/Backchannel/IAppHostAuxiliaryBackchannel.cs Removes MCP info property from auxiliary backchannel interface.
src/Aspire.Cli/Backchannel/BackchannelJsonSerializerContext.cs Removes MCP connection info type from JSON source generation context.
src/Aspire.Cli/Backchannel/AuxiliaryBackchannelMonitor.cs Removes MCP-related logging fields from auxiliary backchannel monitor output.
playground/yarp/Yarp.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/withdockerfile/WithDockerfile.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/webpubsub/WebPubSub.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/waitfor/WaitForSandbox.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/signalr/SignalR.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/seq/Seq.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/python/Python.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/publishers/Publishers.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/pipelines/Pipelines.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/orleans/Orleans.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/nats/Nats.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/mysql/MySqlDb.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/mongo/Mongo.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/milvus/MilvusPlayground.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/keycloak/Keycloak.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/kafka/KafkaBasic.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/deployers/Deployers.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/cdk/CdkSample.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/bicep/BicepSample.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/TestShop/TestShop.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/Stress/Stress.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/SqlServerScript/AppHost1/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/SqlServerEndToEnd/SqlServerEndToEnd.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/Redis/Redis.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/Qdrant/Qdrant.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/ProxylessEndToEnd/ProxylessEndToEnd.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/PostgresEndToEnd/PostgresEndToEnd.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/OracleEndToEnd/OracleEndToEnd.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/OpenAIEndToEnd/OpenAIEndToEnd.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/HealthChecks/HealthChecksSandbox.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/GitHubModelsEndToEnd/GitHubModelsEndToEnd.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/FoundryEndToEnd/FoundryEndToEnd.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/FoundryAgentEnterprise/FoundryAgentEnterprise.AppHost/appsettings.json Removes MCP endpoint env var from playground app settings.
playground/FoundryAgentBasic/FoundryAgentBasic.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/ExternalServices/ExternalServices.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/DotnetTool/DotnetTool.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/DevTunnels/DevTunnels.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/DatabaseMigration/DatabaseMigration.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/CustomResources/CustomResources.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/CosmosEndToEnd/CosmosEndToEnd.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/BrowserTelemetry/BrowserTelemetry.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AzureVirtualNetworkEndToEnd/AzureVirtualNetworkEndToEnd.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AzureStorageEndToEnd/AzureStorageEndToEnd.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AzureServiceBus/ServiceBus.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AzureSearchEndToEnd/AzureSearch.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AzureOpenAIEndToEnd/AzureOpenAIEndToEnd.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AzureKusto/AzureKusto.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AzureFunctionsEndToEnd/AzureFunctionsEndToEnd.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AzureContainerApps/AzureContainerApps.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AzureAppService/AzureAppService.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AzureAppConfiguration/AzureAppConfiguration.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AspireWithNode/AspireWithNode.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AspireWithMaui/AspireWithMaui.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AspireWithJavaScript/AspireJavaScript.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
playground/AspireEventHub/EventHubs.AppHost/Properties/launchSettings.json Removes MCP endpoint env var from playground launch settings.
Files not reviewed (2)
  • src/Aspire.Dashboard/Resources/Dialogs.Designer.cs: Language not supported
  • src/Aspire.Dashboard/Resources/Layout.Designer.cs: Language not supported

Comment on lines 106 to 116
// Validate API auth configuration
var effectiveApiAuthMode = options.Api.AuthMode;
// Also check MCP-specific AuthMode for backward compatibility
if (effectiveApiAuthMode is null && options.Mcp.AuthMode is not null)
{
effectiveApiAuthMode = options.Mcp.AuthMode switch
{
McpAuthMode.ApiKey => ApiAuthMode.ApiKey,
McpAuthMode.Unsecured => ApiAuthMode.Unsecured,
_ => null
};
}

if (effectiveApiAuthMode is ApiAuthMode.ApiKey)
{
// Check if any API key is configured (either in Api or Mcp section)
var hasApiKey = !string.IsNullOrEmpty(options.Api.PrimaryApiKey) || !string.IsNullOrEmpty(options.Mcp.PrimaryApiKey);
// Check if any API key is configured
var hasApiKey = !string.IsNullOrEmpty(options.Api.PrimaryApiKey);
if (!hasApiKey)
{
errorMessages.Add($"PrimaryApiKey is required when API authentication mode is ApiKey. Specify Dashboard:Api:PrimaryApiKey or Dashboard:Mcp:PrimaryApiKey.");
errorMessages.Add($"PrimaryApiKey is required when API authentication mode is ApiKey. Specify Dashboard:Api:PrimaryApiKey.");
}
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing the fallback from legacy Dashboard:Mcp:* auth settings means existing configurations that previously relied on Dashboard:Mcp:AuthMode / Dashboard:Mcp:PrimaryApiKey to secure the dashboard API will now be ignored, and Api.AuthMode will default based only on Dashboard:Api:* (potentially becoming Unsecured). To avoid an accidental security regression during upgrades, consider preserving backward compatibility by reading the legacy Dashboard:Mcp:* keys (if present) and mapping them onto options.Api.*, or at least emitting a clear startup warning/error when legacy keys are detected.

Copilot uses AI. Check for mistakes.
@JamesNK
Copy link
Member Author

JamesNK commented Mar 24, 2026

This PR completely removes the MCP UI from the dashboard. I don't know whether we still want something that mentions aspire agent init or aspire agent mcp. I can restore the MCP button + dialog if you'd like.

@sebastienros
Copy link
Contributor

rip

@adamint
Copy link
Member

adamint commented Mar 24, 2026

I don't know whether we still want something that mentions aspire agent init or aspire agent mcp.

That would be nice

Copy link
Member

@adamint adamint left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

end of an era

@github-actions
Copy link
Contributor

🎬 CLI E2E Test Recordings — 49 recordings uploaded (commit 983ad42)

View recordings
Test Recording
AddPackageInteractiveWhileAppHostRunningDetached ▶️ View Recording
AddPackageWhileAppHostRunningDetached ▶️ View Recording
AgentCommands_AllHelpOutputs_AreCorrect ▶️ View Recording
AgentInitCommand_DefaultSelection_InstallsSkillOnly ▶️ View Recording
AgentInitCommand_MigratesDeprecatedConfig ▶️ View Recording
AspireAddPackageVersionToDirectoryPackagesProps ▶️ View Recording
AspireUpdateRemovesAppHostPackageVersionFromDirectoryPackagesProps ▶️ View Recording
Banner_DisplayedOnFirstRun ▶️ View Recording
Banner_DisplayedWithExplicitFlag ▶️ View Recording
CertificatesClean_RemovesCertificates ▶️ View Recording
CertificatesTrust_WithNoCert_CreatesAndTrustsCertificate ▶️ View Recording
CertificatesTrust_WithUntrustedCert_TrustsCertificate ▶️ View Recording
ConfigSetGet_CreatesNestedJsonFormat ▶️ View Recording
CreateAndRunAspireStarterProject ▶️ View Recording
CreateAndRunAspireStarterProjectWithBundle ▶️ View Recording
CreateAndRunEmptyAppHostProject ▶️ View Recording
CreateAndRunJsReactProject ▶️ View Recording
CreateAndRunPythonReactProject ▶️ View Recording
CreateAndRunTypeScriptEmptyAppHostProject ▶️ View Recording
CreateAndRunTypeScriptStarterProject ▶️ View Recording
CreateStartAndStopAspireProject ▶️ View Recording
CreateTypeScriptAppHostWithViteApp ▶️ View Recording
DescribeCommandResolvesReplicaNames ▶️ View Recording
DescribeCommandShowsRunningResources ▶️ View Recording
DetachFormatJsonProducesValidJson ▶️ View Recording
DoctorCommand_DetectsDeprecatedAgentConfig ▶️ View Recording
DoctorCommand_WithSslCertDir_ShowsTrusted ▶️ View Recording
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted ▶️ View Recording
GlobalMigration_HandlesCommentsAndTrailingCommas ▶️ View Recording
GlobalMigration_HandlesMalformedLegacyJson ▶️ View Recording
GlobalMigration_PreservesAllValueTypes ▶️ View Recording
GlobalMigration_SkipsWhenNewConfigExists ▶️ View Recording
GlobalSettings_MigratedFromLegacyFormat ▶️ View Recording
InvalidAppHostPathWithComments_IsHealedOnRun ▶️ View Recording
LogsCommandShowsResourceLogs ▶️ View Recording
PsCommandListsRunningAppHost ▶️ View Recording
PsFormatJsonOutputsOnlyJsonToStdout ▶️ View Recording
PublishWithDockerComposeServiceCallbackSucceeds ▶️ View Recording
RestoreGeneratesSdkFiles ▶️ View Recording
RunWithMissingAwaitShowsHelpfulError ▶️ View Recording
SecretCrudOnDotNetAppHost ▶️ View Recording
SecretCrudOnTypeScriptAppHost ▶️ View Recording
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels ▶️ View Recording
StopAllAppHostsFromAppHostDirectory ▶️ View Recording
StopAllAppHostsFromUnrelatedDirectory ▶️ View Recording
StopNonInteractiveMultipleAppHostsShowsError ▶️ View Recording
StopNonInteractiveSingleAppHost ▶️ View Recording
StopWithNoRunningAppHostExitsSuccessfully ▶️ View Recording
TypeScriptAppHostWithProjectReferenceIntegration ▶️ View Recording

📹 Recordings uploaded automatically from CI run #23493731547

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants