Browser control + session recording MCP for AI coding agents (Claude Code, Cursor) — real Chrome.
Stop screenshotting bugs and typing paragraphs to explain them. ThinkRun records any browser session — or lets your agent record what it built — and turns it into structured context your AI coding agent can act on: every click, the console, network requests, your voice narration, and screenshots, all time-synced. Not just a screenshot. Not just a video.
Works with Claude Code, Cursor, Cline, Windsurf, and any MCP client.
npx @thinkrun/mcp
Or install the CLI globally:
npm install -g @thinkrun/cli
The CLI automatically installs the native host binary, which lets AI tools control Chrome.
{
"mcpServers": {
"thinkrun": {
"command": "npx",
"args": ["@thinkrun/mcp"]
}
}
}
Config location:
~/.claude/settings.json.cursor/mcp.jsonThen ask your agent: "navigate to localhost:3000 and screenshot the checkout page" — or record the bug yourself and hand the agent the result.
Other tools give your agent eyes. ThinkRun gives it structured sight — context it can parse in one pass instead of you re-explaining the page.
| ThinkRun | Playwright MCP | |
|---|---|---|
| Records a session into structured, replayable context | ✅ | ❌ drive-only |
| Turns a recording into an AI-ready report (clicks, console, network) | ✅ | ❌ |
| Shareable link, also as LLM-ready Markdown / JSON | ✅ | ❌ |
| Uses your real Chrome — your cookies & sessions | ✅ | ❌ headless only |
| Runs alongside your browser, no profile conflict | ✅ | ❌ fights for Chrome profile |
Six portable agent skills ship in this repo, mirrored for every major harness (.claude/skills/, .cursor/skills/, .codex/skills/, .gemini/skills/):
| Before | After | table for the PR, no public paste host.thinkrun CLI.Install without cloning — the repo is served as a live MCP server that auto-updates on every commit:
{ "mcpServers": { "thinkrun-skills": { "url": "https://mcp.skillsovermcp.com/mcp/dundas/thinkrun" } } }
Trigger accuracy is measured, not claimed. Every skill ships a 20-query trigger-eval fixture, and evals/BENCHMARK.md publishes the results: with the six-skill catalog (v4, 2026-09-18), 120/120 on GPT-5.6-terra and Claude Fable 5 and 113/120 on Claude Sonnet 5 (its documented strict-MCP reading, not a crash); the earlier four-skill matrix scored 79–80/80 on 12 of 16 model configurations. Catalog-ablation runs show the browsing skills absorb each other's traffic when installed as a subset, and that prove-it fills a gap rather than duplicating a sibling (before-after folds into prove-it when absent). Reproduce with bun evals/run-eval.ts build.
If you need to install the native host without the CLI, download the binary for your platform from the latest release and run:
chmod +x thinkbrowse-host-* && ./thinkbrowse-host-* --install
The native host binary keeps the
thinkbrowse-hostfilename for now — it's the same signed binary, unchanged by the rename.
Add ThinkRun as an MCP server — npx @thinkrun/mcp — and your agent can drive and read a real Chrome session, your cookies and logins included. See "Add to your MCP config" above.
Record the bug with ThinkRun. Instead of a flat image, your agent gets a structured artifact — the steps you took, the console errors, the failing network requests, and the DOM state at the moment it broke — so it fixes the actual problem instead of guessing from a picture.
Yes. ThinkRun runs against your real Chrome via a native host, so authenticated pages just work — no headless re-login, no separate profile, no fighting your browser for the Chrome profile.
Run npx @thinkrun/mcp (or npm i -g @thinkrun/cli) and record any session — or let the agent record what it built. ThinkRun turns it into an AI-ready report (clicks, console, network, narration, screenshots, all time-synced), available as a shareable link and as LLM-ready Markdown/JSON.
Hand it a ThinkRun recording. The structured "what happened" — actions, first bad signal, expected vs actual, and the element state — is exactly the context an agent needs to land a fix on the first try.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @thinkrun/mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-dundas-thinkrun": {
"command": "npx",
"args": [
"-y",
"@thinkrun/mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@thinkrun/mcpnpmio.github.dundas/thinkrun works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.