spector-agent-mcp
by sakitam-fdd
README.md
# spector-agent-mcp
AI-first **WebGL 1/2** debugging MCP server built on Spector.js, designed for Code Agents (Cursor / Claude / Codex) collaborating with [Chrome DevTools MCP](https://github.com/ChromeDevTools/chrome-devtools-mcp).
## Features
- Shared-Chrome CDP attach (no second browser)
- `debugSessionId` collaboration with chrome-devtools-mcp
- Summary-first tools + diagnostic rules (`WEBGL-*`)
- Skill Pack under `skills/` (router + specialized playbooks)
- Error fixtures + evals for regression of agent workflows
## Quick start
### 1. Chrome remote debugging
```bash
# macOS example
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 \
--user-data-dir=/tmp/chrome-webgl-debug
```
### 2. Run the published package
```bash
npx -y spector-agent-mcp --browser-url http://127.0.0.1:9222
```
### 3. MCP config
Generic MCP client configuration:
```json
{
"mcpServers": {
"spector-agent": {
"command": "npx",
"args": ["-y", "spector-agent-mcp", "--browser-url", "http://127.0.0.1:9222"]
}
}
}
```
Adapter templates under `adapters/` also use the published `npx -y spector-agent-mcp` entry. For repository development, run `pnpm install && pnpm build` and point the MCP command at `node packages/cli/dist/cli.js` instead.
Also configure **chrome-devtools** MCP in your host. Templates:
- Cursor: `adapters/cursor/mcp.json`
- Codex: `adapters/codex/config.toml`
- Claude plugin: `adapters/claude-plugin/`
### 4. Agent workflow (short)
1. `webgl_debug_playbook({ goal, url })` — deterministic tool sequence
2. Reproduce with chrome-devtools tools / open URL
3. `webgl_bind_target` → `webgl_runtime_install`
4. Stage observe: `webgl_set_marker` / `webgl_screenshot_canvas` / `webgl_read_console`
5. `webgl_capture_frame({ includeThumbnails: true })` → `webgl_run_diagnostics` → FBO via `webgl_list_visual_attachments`
6. Fix workspace code → re-capture → `webgl_diff_captures`
Playbooks: `skills/webgl-goal-driven-debug/SKILL.md`, `skills/webgl-debugging/SKILL.md`
Gap analysis vs Spector.js: `docs/ai-debug-toolchain-gap.md`
## Tool list (summary)
| Group | Tools |
|-------|--------|
| Session | `webgl_session_create`, `webgl_session_status`, `webgl_list_targets`, `webgl_bind_target`, `webgl_unbind_target`, `webgl_runtime_install`, `webgl_runtime_status` |
| Capture | `webgl_list_canvases`, `webgl_select_canvas`, `webgl_capture_frame`, `webgl_capture_sequence`, `webgl_capture_commands`, `webgl_list_captures`, `webgl_get_capture_overview` |
| Live / stage | `webgl_set_marker`, `webgl_clear_marker`, `webgl_runtime_log`, `webgl_screenshot_canvas`, `webgl_read_console`, `webgl_list_visual_attachments`, `webgl_get_visual_attachment` |
| Inspect | `webgl_list_draw_calls`, `webgl_get_command_details`, `webgl_list_programs`, `webgl_get_program_details`, `webgl_list_textures`, `webgl_list_framebuffers`, `webgl_get_state_diff`, `webgl_search_capture` |
| Diagnostics | `webgl_run_diagnostics`, `webgl_get_finding_details`, `webgl_diff_captures`, `webgl_generate_report`, `webgl_list_rules`, `webgl_debug_playbook` |
| Store | `webgl_export_capture`, `webgl_delete_capture`, `webgl_cleanup_store`, `webgl_open_capture_viewer` |
Security defaults: CDP is limited to explicitly allowlisted loopback hosts, runtime injection is limited to local or `--allowed-origins` targets, captures are size/retention bounded, and the generic `webgl_page_evaluate` tool is not registered unless `--allow-page-evaluate` is explicitly enabled. Prefer Chrome DevTools MCP for page evaluation and interaction.
Streamable HTTP is also available with secure defaults:
```bash
export SPECTOR_AGENT_MCP_HTTP_TOKEN="replace-with-at-least-24-random-characters"
npx -y spector-agent-mcp --transport http
```
It listens on `127.0.0.1:9230/mcp`, requires Bearer authentication, and isolates MCP sessions. Non-loopback listening requires both `--allow-remote-http` and an explicit `--http-allowed-hosts` allowlist. See [`docs/usage.md`](./docs/usage.md) for all usage modes.
## Skill Pack
```text
skills/
webgl-debugging/ # main router
webgl-goal-driven-debug/ # URL+goal → capture → fix → verify
webgl-black-screen/
webgl-shader-debugging/
webgl-texture-framebuffer/
webgl-state-corruption/
webgl-geometry-draw/
webgl-performance-regression/
webgl-verify-fix/
webgl-framework-adapters/
```
## Fixtures & evals
- Fixtures: `packages/test-fixtures/errors/*`
- Eval scenarios: `evals/evals.json`
- Report grader: `evals/graders/grade-report.mjs`
## Docs
- [`docs/architecture.md`](./docs/architecture.md)
- [`docs/protocol.md`](./docs/protocol.md) — `debugSessionId` collaboration
- [`docs/diagnostics.md`](./docs/diagnostics.md) — rule list
- [`docs/security.md`](./docs/security.md)
- [`docs/usage.md`](./docs/usage.md) — generated install and transport guide
- [`docs/tools.md`](./docs/tools.md) — generated tool schemas and annotations
- [`docs/contributing-rules.md`](./docs/contributing-rules.md)
## License
MIT — see `LICENSE` / `NOTICE` (Spector.js heritage noted where applicable).
TDQS
B3.3/5.0
Scored across 39 tools
Disambiguation4/5
Most tools have distinct purposes (e.g., capture commands vs frame vs sequence), but some pairs like webgl_list_captures and webgl_get_capture_overview could cause mild confusion without careful reading of descriptions.
Naming Consistency5/5
All tools follow a consistent 'webgl_verb_noun' pattern in snake_case, with no mixed conventions or ambiguous verb styles.
Tool Count2/5
At 39 tools, the set is far above the typical 3-15 range, making it overwhelming for an agent to efficiently select among them, even though each tool seems justified.
Completeness5/5
The tool set covers the full lifecycle of WebGL debugging: session management, capture (various modes), inspection (commands, programs, textures), diagnostics, comparison, export, and even a guided playbook.
Maintenance
ActivitySlowing
ResponsivenessNo issues