feat(mcp): /settings surface — list mounted MCP servers + health - #203
Merged
Conversation
Adds a read-only "MCP Servers" view to the settings drawer showing every registry server (config + imported from ~/.claude.json) with its transport, trust, scope, backends, and live health — the deferred S6 follow-up. - protocol: `McpServerStatus` + optional `mcpServers` on `SettingsSnapshot`. - McpHub: track last-observed status (tools / error) per server from normal use + `statusFor()` / `hasClient()`. No live probe on read — opening settings has zero side effects; health is "idle" until a server is exercised, then "connected"/"error". - session-manager: `#mcpServerStatuses()` maps registry specs + hub status into the snapshot for both settings.get and settings.set results. - web: a synthetic read-only "🔌 MCP Servers" tab in the SettingsDrawer (shown only when the daemon reports mcpServers) — health chip, tool chips, per-server transport/trust/backends. Tests: hub status tracking (tools + connected + timeout→error); settings.get surfaces built-in memory + a configured stdio server with idle health. daemon tsc + biome clean; web tsc + vitest (251) + build clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
🤖 Gemini code reviewIntroduces a read-only MCP Servers settings panel displaying registered servers, their configuration, and live health statistics aggregated from actual tool usage. This allows users to inspect server statuses without triggering proactive subprocess spawns. Findings: 🔴 0 · 🟠 1 · 🟡 0 · 🟢 0 Tokens spent · ⬆️ Input: 5,674 · ⬇️ Output: 240 · Σ Total: 9,965 |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #203 +/- ##
==========================================
+ Coverage 87.49% 87.52% +0.03%
==========================================
Files 118 118
Lines 21082 21122 +40
==========================================
+ Hits 18446 18488 +42
+ Misses 2636 2634 -2
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
Export McpServersPanel + a @solidjs/testing-library render test asserting the panel shows server names, health labels, the built-in badge, error text, and tool chips, plus the empty state. Closes the gap where the new MCP settings UI was only type/build-checked, never actually rendered. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Merged
saucam
added a commit
that referenced
this pull request
Jul 20, 2026
Bump package.json 0.3.1 → 0.3.2 and roll the 0.3.2 CHANGELOG section (the release workflow gates on package.json matching the tag). 0.3.2 carries the SDLC pipeline primitive (#204–#209), the /settings MCP Servers surface (#203), embedded-handoff ZeroID token consumption (#210), and the cross-cutting audit fixes (#211). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The deferred
/settingssurface for the MCP mounter: a read-only 🔌 MCP Servers view in the settings drawer that lists every registry server (configmcpServers+ imported from~/.claude.json) with its transport, trust, scope, backends, and live health.How
McpServerStatus+ an optionalmcpServersonSettingsSnapshot.statusFor()/hasClient(). No live probe on read — opening settings has zero side effects; a server showsidleuntil it's exercised, thenconnectedorerror(with the message).#mcpServerStatuses()maps registry specs + hub status into the snapshot for bothsettings.getandsettings.setresults.SettingsDrawer(shown only when the daemon reportsmcpServers): a health chip, tool chips, and per-server transport/trust/backends. Built-incodeoid_memoryis labeled.Tests
settings.getsurfaces built-in memory + a configured stdio server withidlehealth.tsc+ biome clean.tsc -b+ vitest (251) + production build clean; lint 0 errors.Notes
Health is observation-based (from actual tool use), not a forced connect — deliberate, so viewing settings never spawns MCP subprocesses. A "refresh/probe" button and registry hot-reload remain optional follow-ups.
🤖 Generated with Claude Code