Skip to content

ui: Remove recommended MCP Servers + improve MCP Servers Settings UI/UX - #25535

Merged
ServeurpersoCom merged 16 commits into
ggml-org:masterfrom
allozaur:fix/25509-25274-suggested-mcps
Jul 13, 2026
Merged

ServeurpersoCom merged 16 commits into
ggml-org:masterfrom
allozaur:fix/25509-25274-suggested-mcps

Conversation

@allozaur

@allozaur allozaur commented Jul 10, 2026 •

Copy link
Copy Markdown
Contributor

Overview

Close #25509
Close #25274

Additional information

Requirements

Comment thread tools/ui/src/lib/components/app/dialogs/DialogMcpServerAddNew.svelte Outdated
Comment thread tools/ui/src/lib/constants/storage.ts Outdated
Comment thread tools/ui/src/lib/services/migration.service.ts
@allozaur allozaur mentioned this pull request Jul 11, 2026
4 tasks done
@allozaur

Copy link
Copy Markdown
Contributor Author

Let's also change "Not now" to "Dismiss" in the recommendations opt-in box

@c14n

c14n commented Jul 11, 2026

Copy link
Copy Markdown

One thing that could be improved is that the current solution

Briefly connects to foo AND bar

before it shows the recommendations. This should be more granular. Potential approach:

  1. Ship a static list of recommended providers, including static assets such as the provider logo.
  2. Add a button “Load available tools” or “Fetch Metadata from Service” in each recommendation card, that queries only the corresponding MCP server.

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.

@allozaur
allozaur force-pushed the fix/25509-25274-suggested-mcps branch from a45f573 to 4e00c85 Compare July 11, 2026 15:03
@allozaur allozaur changed the title ui: Re-design recommended MCP Servers UX ui: Remove recommended MCP Servers + improve MCP Servers Settings UI/UX Jul 11, 2026
@allozaur

allozaur commented Jul 11, 2026 •

Copy link
Copy Markdown
Contributor Author

We'll (maybe) come back to recommendations in the future1, for now let's directly address the #25509 and #25274

Footnotes

  1. https://github.com/ggml-org/llama.cpp/issues/25274#issuecomment-4946983747 ↩

@allozaur
allozaur marked this pull request as ready for review July 11, 2026 15:10
@allozaur
allozaur requested a review from a team as a code owner July 11, 2026 15:10
Copilot AI review requested due to automatic review settings July 11, 2026 15:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 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 mcpDefaultServerOverrides into mcpServers[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.

Comment thread tools/ui/src/lib/stores/conversations.svelte.ts
Comment thread tools/ui/src/lib/services/migration.service.ts
Comment thread tools/ui/src/lib/components/ui/empty/empty.svelte
Comment thread tools/ui/src/lib/components/ui/empty/empty-description.svelte
Comment thread tools/ui/src/lib/components/app/settings/SettingsMcpServers.svelte
@allozaur
allozaur requested a review from ServeurpersoCom July 11, 2026 22:08
@allozaur
allozaur requested a review from ggerganov July 11, 2026 22:08

@ServeurpersoCom ServeurpersoCom left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, Quicktest OK / No regressions on MCP and pre-configured servers via the backend JSON

@ggerganov ggerganov left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

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.

@ServeurpersoCom
ServeurpersoCom merged commit 38fd5c9 into ggml-org:master Jul 13, 2026
6 checks passed
@ServeurpersoCom

Copy link
Copy Markdown
Contributor

Yes this approach is still better than a wizard that appears only once when the browser storage is cleared
Its two MCP servers are essential and work really well!

@allozaur

Copy link
Copy Markdown
Contributor Author

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.

oki, i will re-add the recommendations UI that I had added during this PR's changes, but will make them 100% static

@allozaur
allozaur deleted the fix/25509-25274-suggested-mcps branch July 29, 2026 16:46
satindergrewal pushed a commit to satindergrewal/llama.cpp that referenced this pull request Aug 12, 2026
…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
zbrad pushed a commit to zbrad/llama.cpp that referenced this pull request Sep 10, 2026
…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
pl752 pushed a commit to pl752/llama.cpp that referenced this pull request Sep 15, 2026
…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
frostyautumnleaf pushed a commit to frostyautumnleaf/llama.cpp that referenced this pull request Oct 5, 2026
…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
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.

Misc. bug: llama.cpp web UI makes requests to third-party services before a user has opted into them Feature Request: Remove MCP "Pop-up"

5 participants