chrome-agent-mcp
chrome-agent-mcp
Full Chrome control for AI agents via the Model Context Protocol
Give Claude (or any MCP client) full control over your browser: navigate pages, click elements, fill forms, inspect DevTools — with parallel tab execution, session isolation per agent, and a real-time dashboard.
What it does
Each Claude session gets its own Chrome tab group — so multiple agents can run in parallel without stepping on each other. A companion Chrome extension shows a live dashboard: active tabs, event log, and screenshots in real time.
Claude session A → tab group "Pinguim" (blue)
Claude session B → tab group "Fenix" (red)
Claude session C → tab group "Girafa" (yellow)Every tool call is wrapped with resilient execution:
20 s primary timeout
2× parallel retries on timeout (10 s each)
Automatic fallback to a new Chrome group if all retries fail
Requirements
Node.js ≥ 18
Google Chrome with remote debugging enabled
Installation
1. Enable Chrome remote debugging
google-chrome --remote-debugging-port=9222To make it permanent, add the flag to your Chrome launcher or .desktop file.
2. Install the MCP server
# Run directly (no install)
npx chrome-agent-mcp
# Or install globally
npm install -g chrome-agent-mcp3. Configure your MCP client
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"chrome-agent-mcp": {
"command": "npx",
"args": ["chrome-agent-mcp"],
"env": { "CHROME_DEBUG_PORT": "9222" }
}
}
}Claude Code (.claude/settings.json):
{
"mcpServers": {
"chrome-agent-mcp": {
"command": "node",
"args": ["/path/to/chrome-agent-mcp/dist/index.js"],
"env": { "CHROME_DEBUG_PORT": "9222" }
}
}
}4. Install the companion extension (optional but recommended)
Open
chrome://extensions/Enable Developer mode
Click Load unpacked → select the
extension/folder
The extension adds a popup dashboard showing which tabs are active, what the agent is doing, and captured screenshots — all updating in real time.
Available Tools
Navigation
Tool | Description |
| Navigate to a URL |
| Go back in browser history |
| Go forward in browser history |
| Reload the current tab |
Interaction
Tool | Description |
| Click an element by accessibility ref |
| Type text into a focused element |
| Hover over an element |
| Press a keyboard key or shortcut |
| Scroll the page or an element |
| Select a |
| Fill multiple form fields at once |
| Wait for an element or condition |
Page Inspection
Tool | Description |
| Get the accessibility tree of the page |
| Capture a full-page screenshot |
| Execute JavaScript and return the result |
Tab Management
Tool | Description |
| Open, close, switch, list, and mark tabs done |
DevTools
Tool | Description |
| Read and clear browser console logs |
| Inspect network requests and responses |
| Inspect and query DOM elements |
| Read cookies, localStorage, sessionStorage |
Browser Management
Tool | Description |
| List all open Chrome windows |
| Focus a specific window |
| List installed Chrome extensions |
| Sync session state with the extension dashboard |
Architecture
src/
├── index.ts MCP server + request dispatch
├── types.ts Shared type definitions
├── core/ Infrastructure layer
│ ├── connection.ts Chrome CDP connection lifecycle
│ ├── bridge.ts Extension event bridge
│ ├── favicon.ts Tab favicon animation manager
│ ├── resilience.ts Timeout / retry / fallback execution
│ └── groups/ Tab group isolation
│ ├── manager.ts Orchestrator (public API)
│ ├── state.ts File-based state persistence
│ └── chrome-api.ts Chrome Extension API bridge
├── tools/ MCP tool implementations
│ ├── tabs.ts
│ ├── navigation.ts
│ ├── browser.ts
│ ├── media.ts screenshot · snapshot · evaluate
│ ├── session.ts
│ ├── interaction/ click · type · hover · scroll · form · wait
│ └── devtools/ console · network · elements · storage
└── utils/ Pure utility functions
├── accessibility.ts AX tree formatter
├── description.ts Tab action labels
└── identity.ts Animal names + Chrome group colorsEngineering rules: every file ≤ 300 lines · every directory ≤ 7 items · SOLID principles throughout.
Configuration
Variable | Default | Description |
|
| Chrome remote debugging port |
Development
# Install dependencies
npm install
# Build TypeScript
npm run build
# Watch mode
npm run dev
# Run tests
npm test
# Coverage report (target: 80%)
npm run coverageLicense
MIT © Otavio Senne
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/otaviosenne/chrome-agent-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server