mcp-troubleshooting
Skill10 starsChanged 2 months agoApache-2.0View on GitHub
Diagnose the MCP/bridge stack — health checks, port conflicts (EADDRINUSE → connect to existing bridge), stdio debugging, operation-trace correlation and the platform error-code catalog.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- amtiYo/agentstheir own version, first seen Sep 10, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- amtiYo/agents★ 102same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository16 other files it gives its agents.
- browser-forensicsSkill
- browser-interactionSkill
- browser-state-recoverySkill
- dom-inspectionSkill
- dom-mutationSkill
- dom-targetingSkill
- extension-troubleshootingSkill
- human-like-interactionSkill
- page-annotationSkill
- project-captureSkill
- project-reconstructionSkill
- regression-testingSkill
- selector-recoverySkill
- tab-managementSkill
- viewport-testingSkill
- visual-dom-comparisonSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 24
Start cleanly if needed: npm run bridge (or node bin/bridge-server.js), then the MCP server node bin/mcp-server.js (or via a client config).
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skill: MCP Troubleshooting
PURPOSE
Fix the plumbing before blaming the tools: is the MCP server up, is the bridge on 3847, is a browser socket connected, did my tool call even reach the page. Includes the correlation tools that tie a failed call to its timeline evidence.
WHEN TO USE
- Any tool error mentioning "No active browser extension connected", bridge, socket, or connection.
- The MCP server starts but every live tool silently degrades to
simulated: trueresponses. - Port conflicts, crashes on startup, or multiple servers fighting over one bridge.
- A tool call failed and you need the operation's full trace, not just the error string.
PREREQUISITES
- Node ≥ project requirements; project built (
npm run build) sodist/serverexists. - Access to run processes and curl (or the
Check-Bridge-Status.bathelper on Windows).
WORKFLOW
- Bridge health:
curl http://localhost:3847/health→{status: "ok", server: "browser-forensic-bridge", version, connectedBrowsers}.connectedBrowsers: 0means the bridge is up but no extension socket — that is the extension-troubleshooting skill's territory.curl http://localhost:3847/api/clientslists socket metadata. - Start cleanly if needed:
npm run bridge(ornode bin/bridge-server.js), then the MCP servernode bin/mcp-server.js(or via a client config). - Understand port behavior: the MCP server auto-starts a bridge on
FORENSIC_BRIDGE_PORT(default 3847) unlessFORENSIC_AUTO_BRIDGE=false. On EADDRINUSE it does not fail — it callsconnectToExistingBridge("http://127.0.0.1:3847")and reuses the running bridge. Two servers on one machine therefore share one bridge; if that is not what you want, give each a distinctFORENSIC_BRIDGE_PORT. - Stdio debugging: run
node scripts/test-mcp-stdio.js— it spawnsbin/mcp-server.jsand speaks JSON-RPC 2.0 (initialize → tools/list → tool calls) over stdio; parse failures and stderr output (e.g.[MCP] Started background WebSocket Bridge on ws://127.0.0.1:3847) appear inline. For direct probing,POST http://localhost:3847/api/mcp/toolwith{name, arguments}bypasses stdio entirely. - Correlate a failure:
get_operation_trace {operationId}(omit the id for the recent-operations list, default limit 20) — tool, start/end, duration, status, correlated timeline events and the related error. Feed it the operationId from the failed response when present. - Zoom out:
get_action_timeline {kind?, sinceTimestamp?, limit?}(default 200) — TAB_OPENED / COMMAND_EXECUTED / DOM_MUTATED / SNAPSHOT_CREATED / ERROR_OCCURRED events tell you what the platform actually did around the failure. - Classify the error with the catalog below; apply the paired recovery.
TOOLS
get_operation_trace, get_action_timeline, get_browser_session, get_tool_catalog, list_tabs, inspect_live_page
EXAMPLES
curl http://localhost:3847/health
FORENSIC_BRIDGE_PORT=3947 node bin/mcp-server.js
node scripts/test-mcp-stdio.js
tools/call get_operation_trace { "operationId": "op_1731" }
tools/call get_action_timeline { "kind": "ERROR_OCCURRED", "limit": 50 }FAILURE MODES
Error-code catalog (machine-readable codes in parens where the platform emits them):
- EXTENSION_UNAVAILABLE / "No active browser extension connected" — bridge up, zero sockets; connect/reload the extension.
- EADDRINUSE — another process owns the port; benign (auto connect-to-existing) unless you need isolation — then set
FORENSIC_BRIDGE_PORT. - Combined bridge+local errors — format
"<bridge message> | local fallback also failed: [CODE] <local message>": both causes are surfaced so you can diagnose the real one; the machine-readable code is the local failure's. - TARGET_NOT_FOUND / TARGET_STALE / TARGET_INVALID(_XPATH) — targeting problems, not plumbing; see dom-targeting/selector-recovery skills.
- SCRIPT_TIMEOUT — JS execution exceeded timeoutMs (cap 30000); split the script.
- DOM_MUTATION_FAILED — structured mutation failure with diagnostics; see dom-mutation skill.
- SESSION_NOT_FOUND — historical tools with a bad sessionId;
list_sessionsfirst. - PROJECT_EXISTS / PROJECT_NOT_FOUND / TAB_NOT_FOUND / EXTENSION_NOT_FOUND / NOT_SIMULATION — name or context mismatches; verify with the corresponding list tools.
- 413 Payload too large — HTTP upload > 50MB.
- Unknown tool / "Live tool execution error in '
<name>'" — typo'd tool name or an exception escaping the handler; checkget_tool_catalog.
VALIDATION
/healthreturnsstatus: "ok"ANDconnectedBrowsers ≥ 1before you trust any live (non-simulated) result.get_browser_sessionshows a coherent model (tabs, counts, timelineEventCount > 0 after activity) — a healthy session accumulates events.- A traced operation shows status + duration and its timeline correlation; operations that "vanished" (no trace) never reached the dispatch layer.
tools/listfrom the stdio probe returns the full tool catalog; a short list means a stale/old server binary — rebuild and restart.
RECOVERY
- Bridge dead:
npm run bridge; if the port is held by a zombie, kill it or move ports via env; the MCP server reconnects to an existing bridge automatically. - Everything simulated unexpectedly: connect the extension, then re-run
list_tabsto confirm real tabs replacesimulated: trueoutput. - stdio hang: restart the MCP server; verify with
scripts/test-mcp-stdio.jsbefore reconnecting the real client; check stderr for bridge startup notes. - Persistent weirdness: capture
get_action_timeline+get_operation_traceoutput as evidence before restarting — restarts destroy in-memory timelines.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

