Repository navigation
ui: Remove recommended MCP Servers + improve MCP Servers Settings UI/UX - #25535
Conversation
|
Let's also change "Not now" to "Dismiss" in the recommendations opt-in box |
|
One thing that could be improved is that the current solution
before it shows the recommendations. This should be more granular. Potential approach:
That way, users can check out each provider independently (read reviews, visit website, ask in forums, etc.) before deciding whether they actually want to contact the server. |
a45f573 to
4e00c85
Compare
…ion for downgrade compatibility
There was a problem hiding this comment.
Pull request overview
This PR updates the web UI MCP onboarding and settings flow to avoid preloading “recommended” third-party MCP servers (and the associated opt-in dialog), so the UI no longer triggers third-party requests before a user explicitly adds a server. It also refactors MCP settings/ordering behavior and adds a migration to consolidate legacy “default enabled” state.
Changes:
- Remove the recommended MCP servers list + first-run recommendations dialog/hook, and change the MCP_SERVERS default to an empty list.
- Adjust MCP server health-check behavior to avoid re-checking already-resolved servers and reduce UI “skeleton flashing”.
- Add a migration + tests to merge legacy
mcpDefaultServerOverridesintomcpServers[i].enabled, and introduce a reusable “Empty state” UI component used by the MCP Servers settings screen.
Reviewed changes
Copilot reviewed 34 out of 35 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/ui/tests/unit/recommended-mcp-servers.test.ts | Removed tests tied to the deleted “recommended MCP servers” feature. |
| tools/ui/tests/unit/parse-mcp-server-settings.test.ts | Updated parser test comment to remove references to recommended-server seeding. |
| tools/ui/tests/unit/mcp-servers-default.test.ts | Added test asserting MCP_SERVERS default is now '[]'. |
| tools/ui/tests/unit/mcp-default-overrides-merge.test.ts | Added unit tests for the new legacy-overrides merge migration. |
| tools/ui/src/routes/+layout.svelte | Removed recommendations dialog/hook; adjusted background MCP health-check behavior. |
| tools/ui/src/lib/types/mcp.d.ts | Removed RecommendedMCPServer type (feature deleted). |
| tools/ui/src/lib/types/index.ts | Removed export of RecommendedMCPServer. |
| tools/ui/src/lib/stores/mcp.svelte.ts | Simplified favicon fallback; removed sorting/loading helpers; preserved insertion order for visible servers. |
| tools/ui/src/lib/stores/conversations.svelte.ts | Removed pending MCP default overrides flow; derive “no conversation” defaults from mcpServers[i].enabled. |
| tools/ui/src/lib/services/migration.service.ts | Added mcp-default-overrides-merge-v1 migration and updated legacy default-enabled migration storage key usage. |
| tools/ui/src/lib/hooks/use-tools-panel.svelte.ts | Switched to getServers() after removing sorting helper. |
| tools/ui/src/lib/hooks/use-mcp-recommendations.svelte.ts | Deleted recommendations hook. |
| tools/ui/src/lib/constants/storage.ts | Removed localStorage key used by the recommendations dialog. |
| tools/ui/src/lib/constants/settings-registry.ts | Changed MCP_SERVERS default to '[]'; removed MCP default overrides setting entry. |
| tools/ui/src/lib/constants/settings-keys.ts | Removed MCP_DEFAULT_SERVER_OVERRIDES key. |
| tools/ui/src/lib/constants/recommended-mcp-servers.ts | Deleted recommended servers constants. |
| tools/ui/src/lib/constants/mcp-form.ts | Removed MCP_CARD_VISIBLE_TOOL_LIMIT constant (used only by deleted compact card). |
| tools/ui/src/lib/constants/index.ts | Stopped exporting recommended-server constants (deleted). |
| tools/ui/src/lib/components/ui/empty/index.ts | Added barrel exports for new Empty state UI components. |
| tools/ui/src/lib/components/ui/empty/empty.svelte | Added Empty state root component. |
| tools/ui/src/lib/components/ui/empty/empty-title.svelte | Added Empty state title subcomponent. |
| tools/ui/src/lib/components/ui/empty/empty-media.svelte | Added Empty state media/icon subcomponent. |
| tools/ui/src/lib/components/ui/empty/empty-header.svelte | Added Empty state header subcomponent. |
| tools/ui/src/lib/components/ui/empty/empty-description.svelte | Added Empty state description subcomponent. |
| tools/ui/src/lib/components/ui/empty/empty-content.svelte | Added Empty state content subcomponent. |
| tools/ui/src/lib/components/app/settings/SettingsMcpServers.svelte | Updated MCP Servers settings UI to use Empty state and per-card skeleton behavior. |
| tools/ui/src/lib/components/app/mcp/McpServerCard/McpServerCardCompact.svelte | Deleted compact MCP server card (only used by recommendations dialog). |
| tools/ui/src/lib/components/app/mcp/McpActiveServersAvatars.svelte | Switched to getServers() after removing sorting helper. |
| tools/ui/src/lib/components/app/mcp/index.ts | Removed export + docs for deleted compact MCP server card. |
| tools/ui/src/lib/components/app/dialogs/index.ts | Removed export + docs for deleted recommendations dialog. |
| tools/ui/src/lib/components/app/dialogs/DialogMcpServerRecommendations.svelte | Deleted recommendations dialog implementation. |
| tools/ui/src/lib/components/app/chat/ChatForm/ChatFormPickers/ChatFormPickerMcpResources.svelte | Switched to getServers() after removing sorting helper. |
| tools/ui/src/lib/components/app/chat/ChatForm/ChatFormPickers/ChatFormPickerMcpPrompts/ChatFormPickerMcpPrompts.svelte | Switched to getServers() after removing sorting helper. |
| tools/ui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActionAdd/ChatFormActionAddToolsSubmenu.svelte | Switched to getServers() after removing sorting helper. |
| tools/ui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActionAdd/ChatFormActionAddMcpServersSubmenu.svelte | Switched to getServers() after removing sorting helper. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
ServeurpersoCom
left a comment
There was a problem hiding this comment.
LGTM, Quicktest OK / No regressions on MCP and pre-configured servers via the backend JSON
ggerganov
left a comment
There was a problem hiding this comment.
I still think there should be recommended MCP servers. The recommended list should be available when adding an MCP server. There is no need to send any online requests - it's just a static list of servers.
|
Yes this approach is still better than a wizard that appears only once when the browser storage is cleared |
oki, i will re-add the recommendations UI that I had added during this PR's changes, but will make them 100% static |
…UX (ggml-org#25535) * fix: drop MCP recommendations auto-popup and silent preloads * feat: Add consent-driven MCP recommendations inside Add New Server dialog * refactor: Drop mcpDefaultServerOverrides for mcpServers[i].enabled * feat: Center the empty state on the MCP settings page * fix: keep existing MCP cards intact when adding a new server * fix: keep MCP cards stable when a new server is added * refactor: keep MCP server list in config insertion order * feat: shrink the recommended-MCP cards to two tools each and fit them in one row * feat: make recommended MCP cards click-to-fill and tighten copy * feat: highlight the selected MCP recommendation and stop auto-focus on dialog open * feat: derive MCP recommendation selection from the form URL * fix: make recommendation MCP cards fully non-focusable * fix: redirect focus from first card to the URL input on consent * chore: Formatting * refactor: Remove Recommended MCP Servers completely * fix: Preserve legacy mcpDefaultServerOverrides key after merge migration for downgrade compatibility
…UX (ggml-org#25535) * fix: drop MCP recommendations auto-popup and silent preloads * feat: Add consent-driven MCP recommendations inside Add New Server dialog * refactor: Drop mcpDefaultServerOverrides for mcpServers[i].enabled * feat: Center the empty state on the MCP settings page * fix: keep existing MCP cards intact when adding a new server * fix: keep MCP cards stable when a new server is added * refactor: keep MCP server list in config insertion order * feat: shrink the recommended-MCP cards to two tools each and fit them in one row * feat: make recommended MCP cards click-to-fill and tighten copy * feat: highlight the selected MCP recommendation and stop auto-focus on dialog open * feat: derive MCP recommendation selection from the form URL * fix: make recommendation MCP cards fully non-focusable * fix: redirect focus from first card to the URL input on consent * chore: Formatting * refactor: Remove Recommended MCP Servers completely * fix: Preserve legacy mcpDefaultServerOverrides key after merge migration for downgrade compatibility
…UX (ggml-org#25535) * fix: drop MCP recommendations auto-popup and silent preloads * feat: Add consent-driven MCP recommendations inside Add New Server dialog * refactor: Drop mcpDefaultServerOverrides for mcpServers[i].enabled * feat: Center the empty state on the MCP settings page * fix: keep existing MCP cards intact when adding a new server * fix: keep MCP cards stable when a new server is added * refactor: keep MCP server list in config insertion order * feat: shrink the recommended-MCP cards to two tools each and fit them in one row * feat: make recommended MCP cards click-to-fill and tighten copy * feat: highlight the selected MCP recommendation and stop auto-focus on dialog open * feat: derive MCP recommendation selection from the form URL * fix: make recommendation MCP cards fully non-focusable * fix: redirect focus from first card to the URL input on consent * chore: Formatting * refactor: Remove Recommended MCP Servers completely * fix: Preserve legacy mcpDefaultServerOverrides key after merge migration for downgrade compatibility
…UX (ggml-org#25535) * fix: drop MCP recommendations auto-popup and silent preloads * feat: Add consent-driven MCP recommendations inside Add New Server dialog * refactor: Drop mcpDefaultServerOverrides for mcpServers[i].enabled * feat: Center the empty state on the MCP settings page * fix: keep existing MCP cards intact when adding a new server * fix: keep MCP cards stable when a new server is added * refactor: keep MCP server list in config insertion order * feat: shrink the recommended-MCP cards to two tools each and fit them in one row * feat: make recommended MCP cards click-to-fill and tighten copy * feat: highlight the selected MCP recommendation and stop auto-focus on dialog open * feat: derive MCP recommendation selection from the form URL * fix: make recommendation MCP cards fully non-focusable * fix: redirect focus from first card to the URL input on consent * chore: Formatting * refactor: Remove Recommended MCP Servers completely * fix: Preserve legacy mcpDefaultServerOverrides key after merge migration for downgrade compatibility
Overview
Close #25509
Close #25274
Additional information
Requirements