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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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.
server_matches_filter(entry, query) -> bool(or afilter_servers(entries, query)helper) inbcc_core.pyso the match logic is testable without Qt.textChangedto re-run_refresh_tableswith the filter applied (or hide non-matching rows).Acceptance criteria
Filed by the supervisor (Cowork) session.