
Browser Harness MCP Server: Setup for Claude, Cursor and Other Apps
Lets Claude, Cursor and other assistants use your real Chrome browser: open pages, click, type and take screenshots, logged in as you.
Browser Harness connects your assistant to the Chrome you already have open. It runs on your computer and talks to Chrome through its remote debugging port, so there is no separate login. The setup in the README asks you to tick a remote debugging box at chrome://inspect once.
The assistant acts with your sessions, so it can reach any account you are signed in to. It also has tools that run JavaScript and raw browser commands, and there is no read-only mode.
Good for
- Developers who want an assistant to work in sites they are already signed in to
- Anyone automating repetitive browser tasks, like downloads or form entry
- Cursor and Claude Code users who need a browser tool beyond a clean test browser
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install browser-harness MCP
Claude Code
- 1
Copy this prompt.
Add the browser-harness MCP server to Claude Code. Run this command: claude mcp add browser-harness -- uvx --from 'browser-harness[mcp]' browser-harness-mcp Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires uv (Python), Chrome with remote debugging on.
From the project README. Source.
Tools
Opens a new browser tab
Opens a new tab in your Chrome, optionally at a URL, and returns its tab ID.
Try: “Open a new tab with example.com.”
Runs code ·
browser_new_tabGoes to a web address
Sends the current tab to a URL.
Try: “Go to the pricing page of this site.”
Runs code ·
browser_gotoReads the page title and size
Returns the current tab's URL, title, and viewport and scroll sizes.
Try: “What page am I on, and how long is it?”
Read ·
browser_page_infoTakes a screenshot of the tab
Captures a PNG of the current tab and saves it to a file, a temporary one if you give no path. It can shrink large images.
Try: “Take a screenshot of this page.”
Files ·
browser_screenshotLists open tabs
Lists the page tabs open in your browser.
Try: “What tabs do I have open?”
Read ·
browser_list_tabsShows the active tab
Returns the active tab's ID, URL and title.
Try: “Which tab are you looking at?”
Read ·
browser_current_tabSwitches to another tab
Switches to a tab by its ID or part of its URL.
Try: “Switch to my Gmail tab.”
Runs code ·
browser_switch_tabCloses a tab
Closes a tab by ID, or the active tab if you give none.
Try: “Close the tab you just opened.”
Runs code ·
browser_close_tabMoves off internal browser pages
Switches to a normal web tab if the current one is a chrome:// page or has gone stale.
Try: “Make sure you are on a real web page.”
Runs code ·
browser_ensure_real_tabClicks at a spot on the page
Clicks at screen coordinates with the left, right or middle button, once or more.
Try: “Click the Sign in button.”
Runs code ·
browser_clickTypes text into the focused field
Inserts text into whichever element has focus.
Try: “Type my search phrase into the box.”
Runs code ·
browser_typeFills in a form field
Fills an input found by a CSS selector with text, clearing it first by default.
Try: “Fill the email field with test@example.com.”
Runs code ·
browser_fillPresses a key
Presses a key, with optional Alt, Ctrl, Meta or Shift held down.
Try: “Press Enter.”
Runs code ·
browser_pressScrolls the page
Scrolls the mouse wheel at a point by a set number of pixels.
Try: “Scroll down to the comments.”
Runs code ·
browser_scrollWaits a few seconds
Pauses for a set number of seconds.
Try: “Wait two seconds, then continue.”
browser_waitWaits for the page to finish loading
Waits until the current tab reports it has finished loading, up to a timeout.
Try: “Wait for the page to load.”
Read ·
browser_wait_for_loadWaits for an element to appear
Waits for an element matching a selector to show up, and can require it to be visible.
Try: “Wait until the results table appears.”
Read ·
browser_wait_for_elementRuns JavaScript in the page
Evaluates a JavaScript expression in the current tab or in an iframe and returns the result. It runs with your logged-in session.
Try: “List all link URLs on this page using JavaScript.”
Runs code ·
browser_jsCalls any Chrome DevTools command
Sends a raw Chrome DevTools Protocol command with your parameters. It can reach nearly anything the browser can do.
Try: “Use the DevTools protocol to read this tab's cookies.”
Runs code ·
browser_cdpAttaches a local file to an upload field
Sets a file from your computer on a file input found by selector.
Try: “Upload report.pdf to this form.”
Write ·
browser_upload_fileFetches a URL without the browser
Makes an HTTP GET request outside the browser and returns the body. You can add headers such as an auth token.
Try: “Fetch this JSON endpoint and show me the result.”
Network ·
browser_http_getStarts recording actions
Starts recording the assistant's browser actions to a local folder.
Try: “Record what you do from now on.”
Write ·
browser_start_recordingStops recording
Stops the active recording and returns the folder it was saved in.
Try: “Stop recording.”
Files ·
browser_stop_recording
From the official docs
Permissions
high risk · 4 things to watch
High risk
The assistant can click, type, run scripts and upload files in your real browser, using every account you are signed in to. Use a separate Chrome profile with only the logins you want it to have, and watch what it does.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It acts as you on every site you are signed in to
Pages, email, banking and work tools open in your Chrome are all reachable. Use a separate Chrome profile for assistant work if you can. github.com
It can run any JavaScript or browser command
Two tools run page scripts and raw DevTools commands, which can read cookies and change pages. Watch what the assistant runs and do not use it on sensitive tabs. github.com
It can upload your local files
One tool attaches a file from your computer to a web form. Approve each upload. github.com
Recordings and screenshots are saved to disk
Screenshots and optional recordings are written to local folders. Delete them if they show private pages. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | No read-only mode is documented. Tools that click, type, fill forms and run JavaScript are always on. |
|---|---|
| Talks to | Whatever sites the assistant visits. Any URL fetched with the HTTP tool |
| Sign-in and keys | No API key. The server attaches to your local Chrome, so it uses the logins already in that browser. |
| Scopes |
|
Questions
What is Browser Harness MCP?
It is a local server from Browser Use that lets your assistant control the Chrome you already have open. The assistant can open tabs, click, type, screenshot and run scripts.
Is it only for Claude Code?
No. The docs show setup for Claude Code, Devin and Cursor, and any other client that runs local MCP servers can use the same command.
Do I need an API key?
No. It uses your local Chrome and needs no account. You need Python's uv tool to run it.
Does it use my logged-in sessions?
Yes. That is the point of it, and also the risk. The assistant can act on any site where you are already signed in.
Can it run read-only?
No. No read-only mode is documented, and the click, type and JavaScript tools are always available.
How is it different from Playwright MCP?
Playwright MCP drives its own clean browser by default, which suits repeatable tests. Browser Harness drives your running Chrome with your logins, per the README's own comparison.
How do I add it to Claude or Cursor?
Use the install box above. The first run also needs remote debugging allowed in Chrome, as the README explains.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
browser-harness- Registry
- PyPI
- Transport
- stdio
- Auth
- None
- License
- MIT
- Last commit
- Oct 30, 2026
- Open issues
- 58
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 3Hide
- github.com · github.com
- github.com · github.com
- github.com · github.com