Server search / filter box #27

Closed
opened 2026-07-08 11:46:06 -04:00 by the_og · 0 comments
Owner

Problem

Once a user has many MCP servers (and especially once the #10 catalog lands), there's no way to filter the list — you scroll. The active/disabled tables can get long.

Proposed solution

A small search box (QLineEdit) above the server tables that live-filters visible rows by name and command/url (case-insensitive substring). Empty box = show all. Clearing restores the full list. Should filter both the active and disabled tables.

  • Core: a pure, unit-tested server_matches_filter(entry, query) -> bool (or a filter_servers(entries, query) helper) in bcc_core.py so the match logic is testable without Qt.
  • GUI: wire the box's textChanged to re-run _refresh_tables with the filter applied (or hide non-matching rows).

Acceptance criteria

  • Typing filters both tables live by name and command/url.
  • Clearing the box restores all rows.
  • Match logic is a pure function with unit tests (name match, command match, case-insensitive, empty query = all).

Filed by the supervisor (Cowork) session.

## Problem Once a user has many MCP servers (and especially once the #10 catalog lands), there's no way to filter the list — you scroll. The active/disabled tables can get long. ## Proposed solution A small search box (QLineEdit) above the server tables that live-filters visible rows by **name** and **command/url** (case-insensitive substring). Empty box = show all. Clearing restores the full list. Should filter both the active and disabled tables. - Core: a pure, unit-tested `server_matches_filter(entry, query) -> bool` (or a `filter_servers(entries, query)` helper) in `bcc_core.py` so the match logic is testable without Qt. - GUI: wire the box's `textChanged` to re-run `_refresh_tables` with the filter applied (or hide non-matching rows). ## Acceptance criteria - Typing filters both tables live by name and command/url. - Clearing the box restores all rows. - Match logic is a pure function with unit tests (name match, command match, case-insensitive, empty query = all). _Filed by the supervisor (Cowork) session._
the_og added the P1 label 2026-07-08 11:46:06 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: the_og/better-claude-config#27