MCP Setup Guide
How to Set Up Puppeteer MCP with ClawdBot
Give ClawdBot browser superpowers—click buttons, fill forms, take screenshots, and scrape data from any website.
Overview
The Puppeteer MCP enables:
- Navigate to any URL
- Click elements, fill forms, submit
- Take screenshots (full page or element)
- Extract text and data from pages
- Handle JavaScript-heavy SPAs
Prerequisites
- ClawdBot installed and running
- Option A: Node.js 18+ with Chrome/Chromium installed
- Option B: Docker (recommended for avoiding dependency issues)
Method 1: NPX (Local Node.js)
Simplest if you have Chrome installed locally.
Puppeteer NPX Config json
{
"Puppeteer": {
"command": "npx",
"args": ["-y", "@anthropics/mcp-server-puppeteer"]
}
} Dependency Check
Run this to verify Chrome is findable:
npx puppeteer browsers install chrome Method 2: Docker (Recommended)
Avoids all local dependency issues. Chrome runs inside the container.
Puppeteer Docker Config json
{
"Puppeteer": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--cap-add=SYS_ADMIN",
"ghcr.io/anthropics/mcp-server-puppeteer"
]
}
} Note: --cap-add=SYS_ADMIN is required for Chrome sandbox.
Verify Setup
- Run
clawdbot status— Puppeteer MCP should show as "running" - Test: "Go to https://example.com and take a screenshot"
- Test: "Navigate to https://news.ycombinator.com and list the top 5 headlines"
Common Errors
| Error | Cause | Fix |
|---|---|---|
Failed to launch browser | Chrome not installed or not found | Run npx puppeteer browsers install chrome or use Docker |
No usable sandbox | Linux sandbox issue | Add --no-sandbox flag or use Docker with SYS_ADMIN |
Navigation timeout | Page too slow or blocked | Increase timeout or check network/firewall |
Element not found | Selector invalid or page not loaded | Wait for element, verify selector in DevTools |
Windows / WSL2 Notes
- On Windows, run ClawdBot in WSL2 for best compatibility
- Docker Desktop with WSL2 backend works well
- Native Windows may require additional Chrome path config
Security Considerations
- Puppeteer can access any website—use responsibly
- Don't automate login to sensitive accounts without understanding risks
- Docker isolates the browser from your host system
- Consider running in a separate network namespace for production
Example Prompts
- "Go to https://github.com/trending and list the top 3 repos"
- "Screenshot the homepage of https://example.com"
- "Fill out the contact form on https://example.com/contact with name 'Test' and email 'test@example.com'"
- "Extract all product prices from https://example-store.com/products"
When to Use Puppeteer vs Fetch
| Use Case | Puppeteer | Fetch |
|---|---|---|
| Static HTML page | ❌ Overkill | ✅ Fast & simple |
| JavaScript-rendered content | ✅ Required | ❌ Won't work |
| Form submission | ✅ Full control | ❌ Limited |
| Screenshots | ✅ Yes | ❌ No |
| Resource usage | ⚠️ High (runs browser) | ✅ Low |
Related MCPs
- Fetch — lightweight URL-to-Markdown
- Brave Search — web search without scraping
- Top 10 MCPs — full curated list