Skip to content

Commit 538c1a9

Browse files
DumbrisAlgis Dumbris
andauthored
feat(050): Global Tools overview page + CLI parity (#437) (#481)
* spec(050): global tools overview page 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. * spec(050): add CLI parity (US4, FR-017..020, SC-007) 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. * plan(050): impl plan + Phase 0/1 design artifacts 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. * tasks(050): 26 tasks, 4 user stories, TDD 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. * feat(050): global tools overview — endpoint, page, CLI parity 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. * fix(050): consistent disabled-server handling + verification 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/. * docs(050): trim CLAUDE.md under 40k char CI limit 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. * chore(050): execution log — CI green, awaiting review Related #437 * fix(050): sidebar count badges + clickable Tools stat cards + server-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. --------- Co-authored-by: Algis Dumbris <gordon.greatests@gmail.com>
1 parent 496349c commit 538c1a9

41 files changed

Lines changed: 2985 additions & 399 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CLAUDE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,8 @@ mcpproxy doctor # Run health checks
229229
230230
See [docs/cli-management-commands.md](docs/cli-management-commands.md) for complete reference.
231231
232+
Global tools (Spec 050): `mcpproxy tools list` is global when `--server` is omitted; `tools enable|disable <server:tool ...>` for batch curation.
233+
232234
### Activity Log CLI
233235
```bash
234236
mcpproxy activity list # List recent activity
@@ -393,6 +395,7 @@ See [docs/configuration.md](docs/configuration.md) for complete reference.
393395
| `POST /api/v1/servers/{name}/disable` | Disable server |
394396
| `POST /api/v1/servers/{name}/quarantine` | Quarantine a server |
395397
| `POST /api/v1/servers/{name}/unquarantine` | Unquarantine a server |
398+
| `GET /api/v1/tools` | Global tools overview: all tools + stats (spec 050) |
396399
| `GET /api/v1/index/search` | Search tools across servers (`?q=query&limit=N`) |
397400
| `GET /api/v1/activity` | List activity records with filtering |
398401
| `GET /api/v1/activity/{id}` | Get activity record details |
@@ -770,6 +773,7 @@ See `docs/prerelease-builds.md` for download instructions.
770773
- BBolt (`~/.mcpproxy/config.db`) — read-only on the hot path; no schema change. (047-cpu-hotpath-fix)
771774
- Swift 5.9 (macOS 13+); Go 1.24 only for the verification harness, no Go changes in scope. + SwiftUI/AppKit (existing), Combine (existing for the periodic timer pattern). No new deps. (048-tray-refetch-elimination)
772775
- None. Pure in-memory state. (048-tray-refetch-elimination)
776+
- Go 1.24 / Vue 3.5; no new deps; read-only BBolt reuse, no schema change (050-global-tools-page)
773777
774778
## Recent Changes
775779
- 001-update-version-display: Added Go 1.24 (toolchain go1.24.10)

0 commit comments

Comments
 (0)