feat(050): Global Tools overview page + CLI parity (#437)#481
Merged
Conversation
added 6 commits
May 18, 2026 21:10
Related #437 Single table-style page listing every tool across all configured MCP servers, with substring search, server/state/risk/approval filters, column sorting, and batch enable/disable. Replaces the orphaned Tools view. Backend usage aggregation + consolidated tools payload. Scope, data source, search approach, and v1 columns settled in brainstorming with the user.
Related #437 Global tools page must have a CLI equivalent per the project's CLI/UI parity pattern. Folded into spec 050 (same consolidated data source + per-tool state change), not a separate spec.
Related #437 plan.md, research.md (6 decisions), data-model.md, contracts/global-tools-api.md, quickstart.md. Constitution check passes (no violations). No new deps, no schema change — reuses activity bucket + per-server enrichment loop.
Related #437 US1 (global listing/MVP), US2 (filter/sort/search), US3 (batch), US4 (CLI parity). Phase 2 foundational = AggregateToolUsage + contracts. Fan-out: backend / frontend / CLI agents after T007.
Related #437 Backend: storage.AggregateToolUsage (single bounded cursor pass over the activity bucket, 30d window, no schema change); GET /api/v1/tools merging all servers via a shared enrichServerTools helper + usage fold-in; partial-server-failure tolerant. Frontend: Tools.vue rewritten Activity.vue-style (cards, filters, sortable table, batch enable/disable, schema modal); /tools route + sidebar badge. CLI: global tools list + tools enable|disable <server:tool ...> batch. Docs/OAS/E2E updated. Tests: storage + httpapi + CLI; lint + frontend build clean.
Related #437 Global handler now uses the management-service GetServerTools path (same as the per-server endpoint) so a disabled/not-connected server yields an empty tool set instead of a false partial:true/failed_servers flag. Adjusted the unit-test controller to exercise the controller fallback path. Adds the Playwright sweep (5/5 green), self-contained HTML report, and screenshots under verification/.
Deploying mcpproxy-docs with
|
| Latest commit: |
4aae51d
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://627a9b0c.mcpproxy-docs.pages.dev |
| Branch Preview URL: | https://050-global-tools-page.mcpproxy-docs.pages.dev |
|
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
Related #437 Condense the spec 050 CLI note + auto-appended agent-context lines so CLAUDE.md stays under the check-size 40,000-char gate. Full CLI reference remains in docs/cli-management-commands.md.
📦 Build ArtifactsWorkflow Run: View Run Available Artifacts
How to DownloadOption 1: GitHub Web UI (easiest)
Option 2: GitHub CLI gh run download 26115347023 --repo smart-mcp-proxy/mcpproxy-go
|
added 2 commits
May 18, 2026 22:15
…link affordance
- Add Servers/Secrets count badges to sidebar WORKSPACE section for
visual parity with the existing Tools badge. Server count is reactive
via the status SSE; secret count fetched on mount.
- Secret badge uses total_secrets from /secrets/config (same source as
the Secrets page) instead of /secrets/refs, which over-counts every
config reference including ${env:...} placeholders.
- Tools summary cards (Total/Enabled/Disabled/Pending) are now clickable
filter toggles with ring highlight, mirroring the Servers page.
- Tools table server name uses link-primary (always visible as a link)
instead of link-hover, matching the modal's affordance.
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.
Related #437
What
A single Global Tools page listing every tool across all configured MCP servers — for auditing/curating large setups (12 servers ≈ 500 tools; some users ~700). Backed by a new consolidated endpoint, mirrored in the CLI for parity.
Replaces the previously orphaned, unrouted
frontend/src/views/Tools.vue(dead grid/list code deleted).Changes
Backend
storage.AggregateToolUsage(since)— single bounded reverse-cursor pass over the activity bucket (30-day window, no schema change, no new deps). Keyedserver\x00toolso same-named tools on different servers don't collide.GET /api/v1/tools— merges every server (incl. disabled) via a sharedenrichServerToolshelper (approval / disabled / config-denied, refactored out of the per-server handler) + usage fold-in. Uses the management-service path so a disabled/not-connected server yields an empty set, not a falsepartial. Tolerates per-server failures (partial+failed_servers, never 500s).contracts.GlobalToolsResponse/GlobalToolsStats.Frontend —
Tools.vuerewritten Activity.vue-style: summary cards (Total/Enabled/Disabled/Pending), filter bar (substring search — never hides disabled/config-denied — + server/status/risk/approval), sortable paginated table, batch enable/disable with per-tool success/failure summary, schema modal./toolsroute + WORKSPACE sidebar entry with live count badge.data-testhooks throughout.CLI parity —
mcpproxy tools listnow global when--serveromitted (--status/--risk/--approval,-o json|yaml); newmcpproxy tools enable|disable <server:tool ...>batch with per-target summary + non-zero exit on any failure.Docs/OAS — swagger regenerated (
/api/v1/toolsdocumented),docs/api/rest-api.mdcorrected (stale aspirational/toolssearch doc replaced with the real contract),CLAUDE.md+docs/cli-management-commands.md, E2E assertion added.Testing
-racegreen.GET /api/v1/toolsshape + stats consistency assertion — pass.specs/050-global-tools-page/verification/report.html.golangci-lint0 issues; frontend build clean.BM25 /
retrieve_toolsagent discovery is untouched (this is a separate audit surface).Spec/plan/tasks/research/data-model/contract under
specs/050-global-tools-page/.🤖 Generated with Claude Code