# Agent Team Upgrade — Tools, MCPs, Browser Access, Rules & Hooks **Date:** 2026-03-21 **Status:** Draft **Scope:** Comprehensive upgrade of all 16 agents with domain-specific tools, MCP servers, browser access, Context7 references, new rules, and hooks **Changelog:** - v1.0 — Initial draft - v1.1 — Fixed MCP package names (Postgres→uvx, Redis→uvx, Lighthouse→bunx, Docker→uvx), all Chrome tools to all 6 agents, all Playwright tools to testing agents, bun over node, verified `uv run --group` syntax, added curl+context7 for Backend QA and Backend Architect, merged .mcp.json, squawk pipe fix, macOS+Telegram notification via channel config, Backend QA full Playwright access - v1.2 — Fixed squawk to lint only new migrations (revision range), fixed Telegram token extraction (`cut -d= -f2--`), added Bash permissions guidance to installation checklist --- ## 1. Browser Access Distribution ### Claude-in-Chrome (6 agents) Primary browser tool for visual inspection, console/network debugging, GIF recording. Shares the user's real Chrome session (cookies, auth state). **All Chrome tools granted to all 6 agents:** `mcp__claude-in-chrome__tabs_context_mcp`, `mcp__claude-in-chrome__tabs_create_mcp`, `mcp__claude-in-chrome__navigate`, `mcp__claude-in-chrome__computer`, `mcp__claude-in-chrome__read_page`, `mcp__claude-in-chrome__find`, `mcp__claude-in-chrome__form_input`, `mcp__claude-in-chrome__get_page_text`, `mcp__claude-in-chrome__javascript_tool`, `mcp__claude-in-chrome__read_console_messages`, `mcp__claude-in-chrome__read_network_requests`, `mcp__claude-in-chrome__resize_window`, `mcp__claude-in-chrome__gif_creator`, `mcp__claude-in-chrome__upload_image`, `mcp__claude-in-chrome__shortcuts_execute`, `mcp__claude-in-chrome__shortcuts_list`, `mcp__claude-in-chrome__switch_browser`, `mcp__claude-in-chrome__update_plan` All tools are available to every Chrome agent. Per-agent instructions direct focus to specific tools: | Agent | Focus Tools | Primary Use Cases | |-------|------------|-------------------| | **UI/UX Designer** | `gif_creator`, `resize_window`, `computer` (screenshot) | View localhost:3000 after changes, resize to mobile (375x812) / tablet (768x1024) / desktop (1440x900), GIF-record proposed interaction flows | | **Design Auditor** | `javascript_tool`, `get_page_text`, `read_page`, `resize_window` | Extract computed styles via `getComputedStyle()`, cross-reference against `_variables.scss` tokens, screenshot components at breakpoints, read a11y tree for semantic structure | | **Debug Specialist** | `read_console_messages`, `read_network_requests`, `javascript_tool` | Navigate to broken page, filter console by `"error\|warn"`, filter network by `"/api/"` for 4xx/5xx, execute diagnostic JS | | **Frontend Architect** | `read_page`, `computer` (screenshot), `resize_window` | Spot-check Server Component rendering, verify hydration, validate layout after architectural changes | | **Performance Engineer** | `javascript_tool`, `read_network_requests`, `resize_window` | Execute `performance.getEntries()` for LCP/FID/CLS, monitor network waterfall for slow `/api/` calls, measure TTFB | | **Product Strategist** | `read_page`, `find`, `computer` (screenshot), `form_input` | Walk localhost:3000 as new user, assess onboarding/conversion flows, fill forms to test UX, screenshot critical pages, view competitor sites | **Chrome Session Protocol (added to all 6 agents):** ```markdown ## Browser Inspection (Claude-in-Chrome) When your task involves visual inspection or UI debugging: 1. Call `tabs_context_mcp` to discover existing tabs 2. Call `tabs_create_mcp` to create a fresh tab for this session 3. Store the returned tabId — use it for ALL subsequent browser calls 4. Navigate to `http://localhost:3000` (or the relevant URL) Guidelines: - Use `read_page` (accessibility tree) as primary page understanding tool - Use `computer` with action `screenshot` only for visual verification (layout, colors, spacing) - Before clicking: always screenshot first, then click CENTER of elements - Filter console messages: always provide a pattern (e.g., "error|warn|Error") - Filter network requests: use urlPattern "/api/" to avoid noise - For responsive testing: resize to 375x812 (mobile), 768x1024 (tablet), 1440x900 (desktop) - Close your tab when done — do not leave orphan tab groups - NEVER trigger JavaScript alerts/confirms/prompts — they block all browser events If your task does NOT involve visual inspection, skip browser tools entirely. ``` ### Playwright MCP (2 testing agents) Structured accessibility snapshots, headless execution, cross-browser validation. For test plan design and integration verification only. **All Playwright tools granted to both testing agents:** `mcp__playwright__browser_click`, `mcp__playwright__browser_close`, `mcp__playwright__browser_console_messages`, `mcp__playwright__browser_drag`, `mcp__playwright__browser_evaluate`, `mcp__playwright__browser_file_upload`, `mcp__playwright__browser_fill_form`, `mcp__playwright__browser_handle_dialog`, `mcp__playwright__browser_hover`, `mcp__playwright__browser_install`, `mcp__playwright__browser_navigate`, `mcp__playwright__browser_navigate_back`, `mcp__playwright__browser_network_requests`, `mcp__playwright__browser_press_key`, `mcp__playwright__browser_resize`, `mcp__playwright__browser_run_code`, `mcp__playwright__browser_select_option`, `mcp__playwright__browser_snapshot`, `mcp__playwright__browser_tabs`, `mcp__playwright__browser_take_screenshot`, `mcp__playwright__browser_type`, `mcp__playwright__browser_wait_for` | Agent | Primary Use Cases | |-------|-------------------| | **Frontend QA** | Snapshot component a11y trees for test selector design, verify `data-testid` coverage, reproduce edge cases (empty states, error states, loading states), cross-browser validation, file upload testing, drag-and-drop testing, dialog handling | | **Backend QA** | Verify frontend-backend integration — navigate authenticated flows, check that API responses render correctly, verify WebSocket notification delivery in UI, run Playwright code snippets via `browser_run_code` | **Playwright Protocol (added to both agents):** ```markdown ## Browser Testing (Playwright MCP) When verifying UI behavior or designing test plans: 1. Use `browser_snapshot` as your PRIMARY interaction tool (structured a11y tree, ref-based) 2. Use `browser_take_screenshot` only for visual verification — you CANNOT perform actions based on screenshots 3. Prefer `browser_snapshot` with incremental mode for token efficiency on complex pages 4. Use `browser_wait_for` before assertions on async-loaded content 5. Use `browser_console_messages` to check for JS errors during flows 6. Use `browser_network_requests` to verify API calls match expected contracts 7. Use `browser_run_code` for complex multi-step verification (async (page) => { ... }) 8. Use `browser_handle_dialog` to accept/dismiss browser dialogs This is Playwright, not Claude-in-Chrome. Key differences: - Separate browser instance (does NOT share your login cookies) - Ref-based interaction (from snapshot), not coordinate-based - Supports headless mode and cross-browser (Chromium, Firefox, WebKit) - No GIF recording - Full Playwright API via browser_run_code ``` --- ## 2. MCP Servers Four new MCP servers, each scoped to specific agents via agent frontmatter `tools:` field. **Note:** Postgres MCP Pro, Redis MCP, and Docker MCP are Python packages (run via `uvx`). Lighthouse MCP is a Node package (run via `bunx`). Exact MCP tool names are discovered at runtime after server start — agent frontmatter will list them once servers are running. ### 2a. Postgres MCP Pro **Server:** `crystaldba/postgres-mcp` (PyPI: `postgres-mcp`) **Connects to:** `postgresql://postgres:postgres@localhost:5332/cofee` **Agents:** DB Architect, Performance Engineer, Backend Architect **Capabilities used:** - Live schema inspection — agents verify current DB state without reading `models.py` - `pg_stat_statements` slow query analysis — Performance Engineer finds N+1 queries - Index health checks — unused indexes, missing indexes on foreign keys across 11 modules - EXPLAIN ANALYZE execution — DB Architect validates query plans for the 11-module schema ### 2b. Redis MCP **Server:** `redis/mcp-redis` (PyPI: `redis-mcp-server`) **Connects to:** `redis://localhost:6379` **Agents:** Backend Architect, Debug Specialist **Capabilities used:** - Dramatiq queue inspection — see pending/failed transcription and render jobs, queue depths - Pub/sub channel monitoring — debug WebSocket notification delivery (when `job_type === "TRANSCRIPTION_GENERATE"` notifications don't arrive) - Key inspection — check task state, verify job progress tracking ### 2c. Lighthouse MCP **Server:** `danielsogl/lighthouse-mcp-server` (npm: `@danielsogl/lighthouse-mcp`) **Audits:** Any URL (passed as tool parameter per invocation, not config-level) **Agents:** Performance Engineer, Design Auditor **Capabilities used:** - Core Web Vitals (LCP, FID, CLS) with structured JSON — not just a score, but actionable breakdown - Accessibility audit (WCAG 2.1 AA) — Design Auditor uses alongside visual Chrome inspection and `pa11y` - Performance budget checking — catch regressions when new dependencies are added ### 2d. Docker MCP **Server:** `ckreiling/mcp-server-docker` (PyPI: `mcp-server-docker`) **Connects to:** Docker socket **Agents:** DevOps Engineer **Capabilities used:** - Container health checks across compose stack (postgres, redis, minio, api, worker, remotion) - Log tailing per container — debug worker crashes, Remotion render failures - Container restart — recover from stuck services - Compose stack management — start/stop service groups ### Complete `.mcp.json` (project root) ```json { "mcpServers": { "postgres": { "command": "uvx", "args": ["postgres-mcp", "--access-mode=unrestricted"], "env": { "DATABASE_URI": "postgresql://postgres:postgres@localhost:5332/cofee" } }, "redis": { "command": "uvx", "args": ["--from", "redis-mcp-server@latest", "redis-mcp-server", "--url", "redis://localhost:6379/0"] }, "lighthouse": { "command": "bunx", "args": ["@danielsogl/lighthouse-mcp@latest"] }, "docker": { "command": "uvx", "args": ["mcp-server-docker"] } } } ``` --- ## 3. CLI Tools ### 3a. Python Tools — `uv` dependency group Add to `cofee_backend/pyproject.toml` under `[dependency-groups]`: ```toml [dependency-groups] tools = [ "semgrep", "bandit", "pip-audit", "schemathesis", "radon", ] ``` Install: `cd cofee_backend && uv sync --group tools` Agents invoke with `cd cofee_backend && uv run --group tools ...` (`uv run --group` is a valid flag — it includes the specified dependency group for the run without needing a prior `uv sync --group`.) ### 3b. Node Tools — bunx (zero-install) No installation needed. Agents invoke directly: | Tool | Command | Agent | |------|---------|-------| | pa11y | `bunx pa11y http://localhost:3000 --standard WCAG2AA --reporter json` | Design Auditor | | knip | `cd cofee_frontend && bunx knip --include files,exports,dependencies` | Frontend Architect, Design Auditor | | squawk | `cd cofee_backend && uv run alembic upgrade :head --sql 2>/dev/null \| bunx squawk` | DB Architect | **Note:** Alembic migrations are `.py` files, not `.sql`. The pipe pattern (`alembic --sql | squawk`) outputs SQL to stdout for squawk to lint. ### 3c. Brew Binaries ```bash brew install gitleaks k6 hyperfine ``` | Tool | Command | Agent | |------|---------|-------| | gitleaks | `gitleaks detect --source . --report-format json --no-banner` | Security Auditor | | k6 | `k6 run --vus 50 --duration 30s