Skip to content

Improve quarantine UX: auto-approve, dashboard visibility, doctor stats, log noise#332

Merged
Dumbris merged 5 commits intomainfrom
quarantine-ux-improvements
Mar 10, 2026
Merged

Improve quarantine UX: auto-approve, dashboard visibility, doctor stats, log noise#332
Dumbris merged 5 commits intomainfrom
quarantine-ux-improvements

Conversation

@Dumbris
Copy link
Member

@Dumbris Dumbris commented Mar 10, 2026

Summary

  • Auto-approve tools for trusted servers: When quarantine is enabled but a server is NOT quarantined, its tools are automatically approved. This prevents the bad UX of all tools being blocked after upgrading to a version with quarantine support.
  • Quarantine stats in servers API: /api/v1/servers now includes quarantine field with pending_count and changed_count per server.
  • Frontend: Server card badges: Servers list page shows "N pending approval" badge when tools are quarantined.
  • Frontend: Dashboard warning: Dashboard shows a warning banner "X tools pending approval across Y servers" with links to each server's detail page.
  • CLI: mcpproxy doctor: Now shows quarantine statistics per server when pending/changed tools are detected.
  • Log noise fix: Tray app "Server state changed" polling message downgraded from INFO to DEBUG to reduce log spam from ~3s polling cycle.

Test plan

  • go test ./internal/runtime/... -run Quarantine — auto-approve tests pass
  • go test ./cmd/mcpproxy/... -run Doctor — doctor quarantine tests pass
  • go test ./internal/httpapi/... — API tests pass
  • make build — frontend + backend build clean
  • ./scripts/test-api-e2e.sh — 60/71 pass (same as main, 11 pre-existing failures)
  • Manual: verify dashboard warning banner appears with quarantined tools
  • Manual: verify server cards show quarantine badge count
  • Manual: verify mcpproxy doctor shows quarantine stats

🤖 Generated with Claude Code

claude added 5 commits March 10, 2026 15:39
…to servers API

Two quarantine improvements:

1. Auto-approve tools from trusted servers: When a new tool is discovered
   and the server is not quarantined (skip_quarantine=true or global
   quarantine disabled), the tool is immediately auto-approved with
   ApprovedBy="auto" instead of being marked "pending". This prevents
   existing users from having all tools blocked on upgrade. Changed tools
   (rug pulls) are still blocked regardless of trust level.

2. Add quarantine stats to GET /api/v1/servers: Each server in the
   response now includes a "quarantine" field with pending_count and
   changed_count, enabling the frontend to show quarantine badges.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add QuarantineStats interface and quarantine field to Server type so
the ServerCard displays how many tools are pending approval without
requiring users to click into each server's detail page. The badge
appears in the Tools stat area with a warning icon when pending_count
or changed_count is non-zero. Also updates v-memo keys in Servers.vue
so cards re-render when quarantine stats change.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add prominent quarantine tool notifications so users can quickly see
which servers have tools pending approval, instead of discovering them
only through server detail pages.

Dashboard changes:
- Add warning banner showing "X tools pending approval across Y servers"
- Lists each server with pending count, links to server detail page
- Fetches tool approvals for all enabled servers in parallel on load
- Auto-refreshes every 30 seconds alongside other dashboard data

CLI doctor changes:
- Add "Tools Pending Quarantine Approval" section to doctor output
- Queries each enabled server's tool approvals via the existing API
- Shows per-server breakdown with new vs changed tool counts
- Includes remediation hints for Web UI and CLI approval commands
- Quarantine data included in JSON output format

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…level

The "Server state changed" message was logging at INFO every ~3 seconds due to
server connection state fluctuations, flooding the log file. Changed to DEBUG
since this is routine polling status, not actionable information.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@cloudflare-workers-and-pages
Copy link

Deploying mcpproxy-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: 89e671a
Status: ✅  Deploy successful!
Preview URL: https://64c6a16e.mcpproxy-docs.pages.dev
Branch Preview URL: https://quarantine-ux-improvements.mcpproxy-docs.pages.dev

View logs

@github-actions
Copy link

📦 Build Artifacts

Workflow Run: View Run
Branch: quarantine-ux-improvements

Available Artifacts

  • archive-darwin-amd64 (25 MB)
  • archive-darwin-arm64 (23 MB)
  • archive-linux-amd64 (14 MB)
  • archive-linux-arm64 (13 MB)
  • archive-windows-amd64 (25 MB)
  • archive-windows-arm64 (22 MB)
  • frontend-dist-pr (0 MB)
  • installer-dmg-darwin-amd64 (28 MB)
  • installer-dmg-darwin-arm64 (25 MB)

How to Download

Option 1: GitHub Web UI (easiest)

  1. Go to the workflow run page linked above
  2. Scroll to the bottom "Artifacts" section
  3. Click on the artifact you want to download

Option 2: GitHub CLI

gh run download 22905567639 --repo smart-mcp-proxy/mcpproxy-go

Note: Artifacts expire in 14 days.

@Dumbris Dumbris merged commit dc6cf94 into main Mar 10, 2026
39 checks passed
@Dumbris Dumbris deleted the quarantine-ux-improvements branch March 10, 2026 14:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants