{"_id":"@apexradius/chrome-mcp","_rev":"2-ff4441b48d1b89cbd6fdf36136d3a24e","name":"@apexradius/chrome-mcp","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@apexradius/chrome-mcp","version":"1.0.0","keywords":["chrome","devtools","mcp","model-context-protocol","claude","anthropic","ai","browser-automation","puppeteer"],"author":{"name":"Apex Radius Labs"},"license":"MIT","_id":"@apexradius/chrome-mcp@1.0.0","maintainers":[{"name":"apexradius","email":"apexradiuslabs@gmail.com"}],"homepage":"https://github.com/apexradius/chrome-mcp","bugs":{"url":"https://github.com/apexradius/chrome-mcp/issues"},"bin":{"chrome-mcp":"dist/index.js"},"dist":{"shasum":"88b6073558b5f13440c91d321e4dfef0f6834f3b","tarball":"https://registry.npmjs.org/@apexradius/chrome-mcp/-/chrome-mcp-1.0.0.tgz","fileCount":78,"integrity":"sha512-nQMYySzPIB0gT+T7PTdhn1sulGyfWsbAGy+BDnIuxCkbXKONrWl6bj0yaiuXU52h6oozfkR7BHIS5zugIgZ60A==","signatures":[{"sig":"MEYCIQChyU9KpxnAtj5mLZzksA9GZ37teho/cK6csTmhml+8jwIhAPGdIEmpJLuN/+4bgs328liNCKk//G0oB3DPTS0khn06","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121307},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f2cdf2e83a91ab26a76159f1c12699d43d82d0f4","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"apexradius","email":"apexradiuslabs@gmail.com"},"repository":{"url":"git+https://github.com/apexradius/chrome-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"A Model Context Protocol (MCP) server for Chrome — giving Claude direct browser control via the Chrome DevTools Protocol with built-in stealth, per-tab concurrency, and persistent profiles.","directories":{},"_nodeVersion":"25.8.1","dependencies":{"zod":"^4.3.6","puppeteer-core":"^24.40.0","@modelcontextprotocol/sdk":"^1.10.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chrome-mcp_1.0.0_1775592718335_0.5925636849873137","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-04-07T20:11:58.227Z","modified":"2026-04-12T02:32:19.691Z","1.0.0":"2026-04-07T20:11:58.489Z"},"bugs":{"url":"https://github.com/apexradius/chrome-mcp/issues"},"author":{"name":"Apex Radius Labs"},"license":"MIT","homepage":"https://github.com/apexradius/chrome-mcp","keywords":["chrome","devtools","mcp","model-context-protocol","claude","anthropic","ai","browser-automation","puppeteer"],"repository":{"url":"git+https://github.com/apexradius/chrome-mcp.git","type":"git"},"description":"A Model Context Protocol (MCP) server for Chrome — giving Claude direct browser control via the Chrome DevTools Protocol with built-in stealth, per-tab concurrency, and persistent profiles.","maintainers":[{"email":"apexradiuslabs@gmail.com","name":"famuagun"}],"readme":"# @apexradius/chrome-mcp\n\n> **Excellence in every detail.**\n\nA [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for Chrome — giving Claude direct control of your browser with stealth anti-detection, persistent profiles, and per-tab concurrency. Zero flags. Zero warnings.\n\n## Why This Exists\n\nThe existing `chrome-devtools-mcp` requires 5 workaround flags, shows Chrome warning banners, and crashes when multiple agents use it. This is a clean replacement.\n\n**Before:**\n```json\n{\n  \"command\": \"chrome-devtools-mcp\",\n  \"args\": [\n    \"--ignoreDefaultChromeArg=--disable-extensions\",\n    \"--ignoreDefaultChromeArg=--enable-automation\",\n    \"--ignoreDefaultChromeArg=--use-mock-keychain\",\n    \"--ignoreDefaultChromeArg=--disable-sync\",\n    \"--chromeArg=--disable-blink-features=AutomationControlled\"\n  ]\n}\n```\n\n**After:**\n```json\n{\n  \"command\": \"npx\",\n  \"args\": [\"-y\", \"@apexradius/chrome-mcp\"]\n}\n```\n\n## Features\n\n- **14 stealth patches** — WebGL, canvas fingerprint, navigator properties, plugins, languages, connection, hardware, screen dimensions, headless UA cleanup, Chrome runtime stubs. Websites can't detect automation.\n- **Persistent profile** — cookies, extensions, saved passwords, Chrome sync all persist across sessions. Not incognito.\n- **Per-tab concurrency** — operations on different tabs run in parallel. No single global mutex bottleneck.\n- **Connect-or-launch** — reconnects to existing Chrome if running, launches new if not. State survives MCP restarts.\n- **Zero config** — uses your system Chrome, no bundled browser, no flags needed.\n\n## Requirements\n\n- Node.js 18+\n- Google Chrome installed\n\n## Installation\n\n```bash\nnpm install -g @apexradius/chrome-mcp\n```\n\nOr run directly:\n\n```bash\nnpx @apexradius/chrome-mcp\n```\n\n## Setup\n\nAdd to `~/.mcp.json` or Claude Desktop config:\n\n```json\n{\n  \"mcpServers\": {\n    \"chrome\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@apexradius/chrome-mcp\"]\n    }\n  }\n}\n```\n\n## 24 Tools\n\n| Category | Count | Tools |\n|----------|-------|-------|\n| **Navigation** | 6 | `navigate`, `new_page`, `close_page`, `list_pages`, `select_page`, `wait_for` |\n| **Interaction** | 9 | `click`, `fill`, `type_text`, `hover`, `press_key`, `drag`, `upload_file`, `handle_dialog`, `fill_form` |\n| **Inspection** | 3 | `take_screenshot`, `take_snapshot`, `evaluate_script` |\n| **Network** | 2 | `list_network_requests`, `get_network_request` |\n| **Console** | 2 | `list_console_messages`, `get_console_message` |\n| **Emulation** | 2 | `emulate`, `resize_page` |\n\n## Environment Variables\n\n| Variable | Required | Default |\n|----------|----------|---------|\n| `CHROME_EXECUTABLE` | No | Auto-detect system Chrome |\n| `CHROME_PROFILE_DIR` | No | `~/.config/apexradius/chrome-mcp/profile` |\n| `CHROME_HEADLESS` | No | `false` |\n\n## Stealth\n\n14 anti-detection patches run via `page.evaluateOnNewDocument()` before any page script:\n\n1. `navigator.webdriver` → `false`\n2. Realistic `window.chrome.runtime`\n3. Realistic `navigator.plugins`\n4. `navigator.languages` → `['en-US', 'en']`\n5. `Permissions.prototype.query` override\n6. WebGL vendor/renderer spoofing\n7. Canvas fingerprint noise\n8. `navigator.connection` → realistic 4g values\n9. `navigator.hardwareConcurrency` → 8\n10. `navigator.deviceMemory` → 8\n11. Screen dimensions → 1920x1080\n12. Headless user agent cleanup\n13. `chrome.loadTimes()` / `chrome.csi()` stubs\n14. iframe contentWindow cross-origin patch\n\nNo Chrome flags used. No warning banners.\n\n## License\n\nMIT © [Apex Radius Labs](https://apexradiuslabs.com)\n","readmeFilename":"README.md"}