{"repo":"InDate/devharness","free":true,"listed":false,"github":"https://github.com/InDate/devharness","clone":"git clone https://github.com/InDate/devharness.git","description":"MCP server that connects AI assistants to Chrome DevTools Protocol for runtime debugging - set breakpoints, inspect variables, monitor network traffic, and automate browser interactions","language":"TypeScript","stars":16,"topics":["ai-tools","browser-automation","chrome-devtools-protocol","debugging","llm","mcp","model-context-protocol"],"license":"MIT","category":"mcp-servers","readme_excerpt":"devharness MCP server. Your agent runs the app, sees what happened, and redoes none of it by hand. Was cdp-tools-mcp . That name described the transport. CDP is now one of three things this does. Migrating. Why Three things burn a debugging session, and only the first is about seeing. You are the eyes. You start the app, click the thing, paste the stack trace back into chat, reload and report whether it worked. Everything gets re-driven by hand. Relaunch the browser, log in again, refill the form, click back to the screen where the bug lives — every iteration. Slow, and the retyped arguments drift from what actually ran. One failure stalls the whole session. A dead dev server, a missing parameter, a wedged tool: the agent stops and waits for you. devharness closes all three. Real execution instead of guesses. Every call it has already made is replayable by index. Failures have recovery paths the agent takes itself. What it does 24 tool modules. 802 tests across 57 files, 7s. See — pause real execution and read the real frame: breakpoints (line, conditional, logpoint, DOM mutation, event, XHR), call stack and scope, source maps so TypeScript breakpoints hit TypeScript lines. Chrome and Node.js ( node --inspect ), both at once. Console, network, storage, DOM. content verify reports dead buttons, dead links, small touch targets, and overflow clipping from CDP facts, not heuristics. Repeat — every tool response carries its own history index: indices takes a list, so four steps re","default_branch":null,"files":null,"tree":[],"storefront":"/r/InDate","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/InDate/devharness/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}