AI 어시스턴트를 Chrome DevTools Protocol에 연결하여 디버깅, 변수 검사, 네트워크 트래픽 모니터링 및 브라우저 상호작용 자동화를 수행합니다.
다른 이름 InDate/devharness
- 스타
- 19
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 11월 13일
- 라이선스
- MIT
devharness MCP란?
devharness은(는) MCP server입니다. AI 어시스턴트를 Chrome DevTools Protocol에 연결하여 디버깅, 변수 검사, 네트워크 트래픽 모니터링 및 브라우저 상호작용 자동화를 수행합니다.
프로젝트 README에서 생성된 요약
devharness MCP server 정보
devharness는 AI 에이전트와 Chrome DevTools Protocol 사이의 가교 역할을 하여 자동화된 웹 디버깅 및 테스트를 가능하게 합니다. 에이전트가 직접 Chrome 창을 조작하여 사람이 하는 것처럼 클릭, 타이핑, 탐색을 통해 애플리케이션과 상호작용할 수 있습니다. 이 설정은 임시 브라우저 프로필을 사용하여 프로세스 진행 중 개인 북마크나 로그인 정보가 변경되지 않도록 보장합니다.
개발자는 npx를 통해 이 서버를 설치하여 Claude Code 또는 Claude Desktop에서 사용할 수 있습니다. 이 시스템은 개발 서버 관리, 포트 모니터링, 콘솔 에러 및 서버 로그 직접 읽기 등을 통해 개발 환경과 깊게 통합됩니다. 중단점 설정, Chrome 및 Node.js 변수 검사, 레코딩 프록시를 통한 네트워크 트래픽 모니터링과 같은 고급 디버깅 기능을 지원합니다.
단순한 상호작용을 넘어, 이 서버는 버그 재현을 위해 작업 시퀀스를 기록하거나 이를 Playwright 및 Puppeteer 테스트로 내보낼 수 있습니다. 또한 특정 UI 요소를 캡처하고 노트나 스크린샷을 첨부하여 에이전트에게 시각적 문제를 전달할 수 있는 bench 도구도 포함되어 있습니다.
활용 사례
- 1자동 UI 테스트에이전트에게 특정 흐름을 탐색하도록 요청하여 모든 상호작용 요소가 올바르게 작동하는지 확인합니다.
- 2애플리케이션 에러 디버깅에이전트가 페이지와 로직을 검사하여 계산 오류의 원인을 식별하도록 합니다.
- 3버그 재현 및 검증에이전트에게 버그를 유발하는 정확한 단계를 기록하도록 지시한 후, 수정 사항이 적용되면 해당 단계를 다시 재생합니다.
- 4시각적 요소 검사bench 도구를 사용하여 주의가 필요한 특정 UI 컴포넌트를 지정합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
devharness MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 devharness MCP 설치
$ claude mcp add devharness -- npx -y devharnessCursor에 devharness MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"devharness": {
"command": "npx",
"args": [
"-y",
"devharness"
]
}
}
}VS Code에 devharness MCP 설치
.vscode/mcp.json
{
"servers": {
"devharness": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"devharness"
]
}
}
}VS Code CLI에 devharness MCP 설치
$ code --add-mcp '{"name":"devharness","type":"stdio","command":"npx","args":["-y","devharness"]}'Claude Desktop에 devharness MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"devharness": {
"command": "npx",
"args": [
"-y",
"devharness"
]
}
}
}Codex에 devharness MCP 설치
$ codex mcp add devharness -- npx -y devharnessCodex config.toml에 devharness MCP 설치
~/.codex/config.toml
[mcp_servers.devharness] command = "npx" args = ["-y", "devharness"]
Gemini CLI에 devharness MCP 설치
$ gemini mcp add -s user devharness npx -- -y devharnessGemini settings.json에 devharness MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"devharness": {
"command": "npx",
"args": [
"-y",
"devharness"
]
}
}
}자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능indate/devharness is public and reachablegithub.com/indate/devharness ↗통과
- 패키지가 이 저장소를 소스로 명시devharness names indate/devharness as sourcenpmjs.com/package/devharness ↗통과
- 빌드 출처(Sigstore 증명)Sigstore attestation for devharnessnpmjs.com/package/devharness/v/0.19.0#provenance ↗통과
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-01github.com/indate/devharness ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from devharness통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기devharness
Let Claude open your app, use it, and see what actually goes wrong.
When you build with an AI agent, you end up as its tester. It changes the code, then you open the browser, click through, and paste the error back. It can't see the page, the browser console or your server's output, so it works from what you paste, and "fixed" often isn't.
devharness gives the agent its own Chrome window. It opens your app, clicks and types like you would, reads the errors in the console and the server logs, and can try its own fix in the browser before telling you it's done.
/plugin marketplace add InDate/indate-tools
/plugin install devharness@indate-tools
Was
cdp-tools-mcp. Migrating.
What you'll notice
- A Chrome window opens and the agent uses your app. You can watch it navigate, fill forms and click buttons. It runs with its own temporary profile, so your everyday browser, bookmarks and logins are untouched.
- The agent sees errors without you pasting them. After each action it gets any new output from your dev server and the newest error in the browser console, with where it came from.
- The agent runs your dev server. It can start it, restart it and read its logs. With port monitoring on, a server that dies stops browser actions with a message saying so, rather than the agent clicking away at a dead page and reporting made-up results.
- Setup isn't redone by hand. Every action gets a number. To get back to the broken screen after a fix, the agent re-runs those numbered steps in one call, with exactly the values it used the first time.
Things to ask
Ask for the outcome. The agent picks the tools.
- "Open the app at localhost:3000 and check the signup form works."
- "The total on the checkout page is wrong. Find where it's calculated."
- "Start the dev server and keep an eye on it while we work."
- "Click through the settings page and tell me which buttons do nothing."
- "Record the steps that reproduce this bug, then re-run them after you fix it."
Show it the problem instead of describing it
Some bugs are hard to put into words: "the thing on the right, under the header, is too far down". Ask the agent to open the bench, and a panel opens beside your app. Click the element you mean and type a note, and attach a screenshot you can crop and draw on. The note records what the element is - its selector, and its component and source file where your dev build exposes them - and reaches the agent as soon as you save it.
Keep a bug and prove the fix
The steps the agent takes can be saved as a sequence and replayed later, or exported as a Playwright or Puppeteer test. An issue can carry the sequence that reproduces it, so working on it starts by replaying to the broken state.
Closing an issue needs you. The agent opens a Fixed / Not Fixed prompt in the browser and waits for your click; it can record what it found, but it can't mark its own work as fixed. Issues can be published to GitHub, which shows you a draft and posts nothing until you confirm.
Setup
You need Google Chrome installed in its usual place and Node.js 18 or later.
Claude Code (recommended) - the plugin registers the server, adds the skill that teaches the agent how to use it, and pins the version, so what you installed is what runs until you update:
/plugin marketplace add InDate/indate-tools
/plugin install devharness@indate-tools
Claude Code, server only:
claude mcp add devharness -- npx devharness@latest
Claude Desktop:
{
"mcpServers": {
"devharness": {
"command": "npx",
"args": ["-y", "devharness@latest"]
}
}
}
Other MCP clients: run npx devharness@latest over stdio.
The tools' descriptions and replies carry how to use them; the full reference is
docs/instructions.md.
For developers
devharness is an MCP server that drives Chrome and Node.js through the Chrome DevTools Protocol. Beyond the above:
- Debugger. Breakpoints (line, conditional, logpoints, DOM changes, events,
XHR), stepping, the call stack and variables in scope, in Chrome and in Node.js
started with
--inspect, both at once. Source maps put TypeScript breakpoints on TypeScript lines. - Page checks.
content verifyreports dead buttons, dead links, small touch targets, clipped overflow and horizontal scroll, from what the browser reports. - Network. Console, requests and responses, cookies and storage. With
connection({ action: 'launch', proxy: true })the browser runs through a recording proxy that ties each request and socket message to the step that caused it and keeps the app's own polling apart. - Dev servers. npm scripts, Docker and Docker Compose.
start({ monitorPort: true })watches the port and blocks browser tools while it is down;start({ watch: true })restarts on file changes. - Several agents. Every tool takes a named connection, so nested agents each drive their own tab in one Chrome, and sessions can message each other.
- Recovery. A call missing a field returns what is missing and the retry sends
only that.
config({ action: 'restart' })respawns a stuck server without the client reconnecting.
A Node service by hand:
1. node --inspect=9229 app.js
2. connection({ action: 'attach', connection: "my-api-server", port: 9229 })
3. breakpoint({ action: 'set', connection: "my-api-server", file: "user.ts", line: 42 })
4. Trigger the request.
5. inspect({ action: 'getVariables', connection: "my-api-server" })
examples/test-app is an app with deliberate bugs to practise on.
Command line
devharness <command>, run from a shell inside an editor session, executes a tool in that session's own server process, against the browser and dev servers it already has open. Only sessions rooted at the shell's directory or above it are candidates, because issues, config and sequences resolve against the answering server's root; process ancestry picks among those. Nothing needs to be passed in.
devharness which # which session this shell belongs to
devharness call config '{"action":"status"}' # any tool, arguments as one JSON object
devharness sessions # who else is reachable
devharness watch # wait for this session's next events
devharness send a1b2c3d4 "check this" --wait=60000
devharness bug "Title" Body words here # files an issue; feature does the same
devharness bench [sequence] [url] # opens the bench against this session
--session=<id> targets a session explicitly, --json prints the unrendered response, and the exit code is 1 when the tool returns an error. Each session listens on a unix socket under ~/.devharness/endpoints/, mode 0600 - not a TCP port, because the tools reachable through it evaluate JavaScript in that session's browser.
devharness run <sequenceName> is separate: it starts its own headless Chrome and replays a saved sequence, with no session involved.
Documentation
- docs/README.md: guides for installation, debugging, automation, replay and troubleshooting
- docs/instructions.md: every tool and action
- CHANGELOG.md: what each release changed
Migrating
cdp-tools-mcp is deprecated on npm and points here. Tools unchanged. Package,
repo, and skill renamed.
-"args": ["-y", "cdp-tools-mcp@latest"]
+"args": ["-y", "devharness@latest"]
Your MCP server name (devharness, or whatever you called it) is yours and keeps
working. Renaming it is cosmetic — but tools are addressed as
mcp__<server-name>__<tool>, so update project docs if you do.
State moved .cdp-tools/ → .devharness/ in 0.9.0. Migrates itself on first
run; profiles, config, sequences, and issues carry over. DEVHARNESS_DIR
supersedes CDP_TOOLS_DIR, which still works.
From source
git clone https://github.com/InDate/devharness.git
cd devharness
npm install && npm run build && npm test
Contributing
Issues and PRs welcome. Reporting a bug? Attach a recorded reproduction sequence.
License
MIT
devharness MCP 질문
devharness MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add devharness -- npx -y devharness를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
devharness MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
devharness를 통해 AI 에이전트가 무엇을 할 수 있나요?
에이전트가 전용 Chrome 창을 사용하여 앱을 탐색하고, 양식을 채우고, 버튼을 클릭하며, 브라우저 콘솔 및 서버 로그에서 에러를 읽을 수 있습니다.
에이전트가 Node.js 코드를 디버깅할 수 있나요?
네, --inspect로 시작된 Chrome 및 Node.js 프로세스 모두에서 중단점을 설정하고, 코드를 단계별로 실행하며, 콜 스택과 변수를 검사할 수 있습니다.
에이전트가 기록한 단계를 어떻게 사용하나요?
에이전트가 수행한 단계를 시퀀스로 저장하여 나중에 다시 재생하거나, Playwright 또는 Puppeteer 테스트로 내보낼 수 있습니다.
설치를 위한 시스템 요구 사항은 무엇인가요?
Google Chrome이 설치되어 있어야 하며, Node.js 버전 18 이상이 필요합니다.