Built on Node.js runtime to provide browser automation capabilities through a standardized interface.
Provides an alternative to Puppeteer that works on ARM64 architecture, fixing compatibility issues with Puppeteer's x86_64 binaries.
Provides Python wrappers and APIs for browser automation, enabling Python scripts to control the browser environment.
Optimized for Raspberry Pi's ARM64 architecture, providing a budget-friendly hardware platform for AI development.
MCP Chromium ARM64 Server
🚀 Two Implementation Approaches Available
📦 Version Comparison
Feature | Direct CDP (v1.3.0) ⭐ RECOMMENDED | Puppeteer-based (v1.2.0) |
---|---|---|
Dependencies | Only ws + MCP SDK (89 packages) | Puppeteer + MCP SDK (163 packages) |
Memory Usage | Lower (native chromium) | Higher (Node.js wrapper overhead) |
Startup Time | Faster (direct WebSocket) | Slower (puppeteer initialization) |
Browser Control | Native Chrome DevTools Protocol | Puppeteer abstraction layer |
ARM64 Optimization | Full native ARM64 | Depends on Puppeteer ARM64 support |
Debugging | Raw CDP messages visible | Abstracted by Puppeteer |
Maintenance | Chrome protocol changes only | Puppeteer + Chrome protocol changes |
Performance | Best (direct communication) | Good (wrapped communication) |
🎯 When to Use Which Version
Use Direct CDP (v1.3.0) if:
- ✅ You want maximum performance and minimum dependencies
- ✅ You need native ARM64 optimization
- ✅ You want direct Chrome DevTools Protocol control
- ✅ You're building production automation systems
- ✅ You want the latest features and fastest updates
Use Puppeteer-based (v1.2.0) if:
- ✅ You're migrating from existing Puppeteer code
- ✅ You prefer the Puppeteer API abstraction
- ✅ You need specific Puppeteer features not yet implemented in direct CDP
- ✅ You want to minimize changes to existing workflows
🔄 Switching Between Versions
📚 Documentation & Specialized Guides
This repository includes multiple documentation approaches for different audiences:
🎯 For Developers & DevOps Engineers
📖 TECHNICAL README - Comprehensive technical documentation including:
- Architecture diagrams and API reference
- Performance benchmarks and optimization guides
- CI/CD integration examples and E2E testing workflows
- Advanced debugging and customization options
🍓 For Makers & Entrepreneurs
📖 RASPBERRY PI README - Budget-focused guide featuring:
- Complete $480 AI development setup
- No-code SaaS development workflows
- Real-world startup use cases and ROI analysis
- Global accessibility and maker movement focus
⚡ Quick Links
- Developers: Jump to Technical Documentation →
- Makers: Jump to Raspberry Pi Guide →
- Everyone: Continue reading for universal setup and usage
✨ Core Features
🤖 Native ARM64 Browser Automation
- Direct Chrome DevTools Protocol implementation
- 22 comprehensive MCP tools for complete browser control
- Optimized for Raspberry Pi and Apple Silicon architectures
- No dependency on broken x86_64 Puppeteer binaries
⚡ High Performance Architecture
- Only 2 dependencies (ws + MCP SDK) vs 163 packages in Puppeteer
- Lower memory usage and faster startup times
- Direct WebSocket communication with Chrome
- Comprehensive logging and audit capabilities
🛠️ Enterprise-Ready Development
- Full debugging suite with console/network monitoring
- Accessibility, SEO, and performance audits built-in
- CI/CD integration examples and E2E testing workflows
- Cross-platform compatibility (Linux ARM64, macOS Apple Silicon)
💰 Affordable Innovation Platform
- Complete AI development setup for under $500
- Same capabilities as $50K+ enterprise workstations
- Global accessibility for makers and startups worldwide
- No recurring cloud costs - own your infrastructure
🚀 Universal Quick Start
Prerequisites
Installation
Quick Test (One-Liner)
Expected Result: [OK] ARM64 Browser Works!
Test & Demo
Test the Setup
🛠️ Developer Guide & Debugging
🔧 Available MCP Tools (22 total)
Core Browser Control
navigate
- Navigate to URLs with full page loadingscreenshot
- Capture PNG screenshots (full page or viewport)click
- Click elements by CSS selector with precise positioningfill
- Fill input fields with text or valueshover
- Hover over elements for dropdown/tooltip interactionsselect
- Select dropdown options by valueevaluate
- Execute JavaScript and return resultsget_content
- Extract page HTML or plain text content
Advanced Functionality
get_console_logs
- Retrieve browser console outputget_console_errors
- Get console error messages onlyget_network_logs
- Monitor all network requests/responsesget_network_errors
- Track failed network requests (4xx/5xx)wipe_logs
- Clear all stored logs from memoryget_selected_element
- Get info about currently focused element
Audit & Analysis Tools
run_accessibility_audit
- Check alt text, labels, headings, contrastrun_performance_audit
- Measure load times, memory usage, resourcesrun_seo_audit
- Validate title, meta description, H1 tags, canonicalrun_best_practices_audit
- Check HTTPS, deprecated HTML, viewportrun_nextjs_audit
- Next.js specific optimization checksrun_debugger_mode
- Comprehensive debugging informationrun_audit_mode
- Run all audits together with summaryclose_browser
- Clean shutdown of chromium process
🐛 Debugging & Development
Direct MCP Testing
Chrome DevTools Protocol Debugging
Performance Monitoring
Network Debugging
🔍 Common Debugging Scenarios
1. WebSocket Connection Issues
2. Chrome Process Issues
3. Element Selection Problems
4. Memory and Performance Issues
🎯 Advanced Debugging Features
Enable Verbose Logging
CDP Message Tracing
Integration with Browser DevTools
📊 Performance Benchmarks
Startup Time Comparison
Memory Usage Monitoring
🚨 Error Codes & Solutions
Error | Cause | Solution |
---|---|---|
CDP command timeout | WebSocket connection lost | Restart browser, check port availability |
WebSocket not ready | Chrome not fully started | Increase startup delay, check chrome process |
Element not found | CSS selector invalid | Verify selector with evaluate tool |
ECONNREFUSED | Debugging port blocked | Check firewall, kill existing chrome processes |
Navigation timeout | Page loading issues | Check network, increase timeout, try simpler page |
🔧 Customization & Extension
Adding New MCP Tools
Chrome Launch Options
🌐 Cross-Platform ARM64 Compatibility
Platform Support Matrix
Platform | Status | Chrome Path | Installation Method | Notes |
---|---|---|---|---|
Linux ARM64 ✅ | Fully Supported | /usr/bin/chromium-browser | apt install chromium-browser | Tested on Raspberry Pi OS |
macOS Apple Silicon ⚠️ | Requires Modifications | /Applications/Google Chrome.app/Contents/MacOS/Google Chrome | Download from Google or brew install chromium | Need path and flag updates |
Windows ARM64 ❓ | Untested | C:\Program Files\Google\Chrome\Application\chrome.exe | Download from Google | Would need Windows-specific changes |
macOS Apple Silicon Setup
Prerequisites
Required Code Changes
Currently, the server is optimized for Linux ARM64. For macOS compatibility, modify index.js
:
macOS-Specific Issues & Solutions
1. "Chromium is damaged" Error
2. Chrome vs Chromium Choice
3. Permission Issues
Testing Cross-Platform Compatibility
Quick Platform Detection Test
Cross-Platform MCP Test
Windows ARM64 Considerations
While untested, Windows ARM64 support would need:
Performance Differences
Platform | Startup Time | Memory Usage | Notes |
---|---|---|---|
Linux ARM64 (Pi 4) | ~3-4s | ~150MB | Optimized, well-tested |
macOS Apple Silicon | ~2-3s | ~200MB | Faster CPU, more memory |
Windows ARM64 | Unknown | Unknown | Would depend on hardware |
Contribution Needed
We welcome contributions for full cross-platform support!
- macOS testers: Test the proposed changes on Apple Silicon
- Windows ARM64: Test on Surface Pro X or similar devices
- Performance optimization: Platform-specific optimizations
- Installation scripts: Automated setup for each platform
Claude CLI Integration
Prerequisites
Add to Claude CLI
Verify Connection
⚠️ Important: Restart Claude After Adding
You MUST start a new Claude session after adding the MCP server:
Using in Claude CLI
Ask Claude to use the chromium-arm64 tools:
Be explicit to avoid Playwright/Puppeteer:
- "Use chromium-arm64 to navigate..."
- "Using the chromium-arm64 tool, take a screenshot"
- "Open a browser" (might try broken Playwright)
- "Take a screenshot" (might try broken Puppeteer)
Success Example
When working correctly, you'll see:
Usage Examples
Python API
MCP Tools (via Claude Code)
Once configured, use these tools directly in Claude Code:
navigate
- Go to URLsscreenshot
- Capture page imagesclick
- Click elements by CSS selectorfill
- Fill form fieldsevaluate
- Execute JavaScriptget_content
- Extract page HTML/textclose_browser
- Clean shutdown
🎯 Key Use Cases
🧪 For Testing & QA Teams
- End-to-end SaaS testing with autonomous AI agents
- Visual regression detection and cross-device compatibility
- 24/7 continuous validation on budget hardware
🚀 For Startups & Makers
- Complete $480 AI development setup (see Raspberry Pi Guide)
- No-code SaaS development with AI-powered testing
- Competitive analysis and market research automation
🛠️ For DevOps & Developers
- CI/CD integration with comprehensive audit tools
- Performance benchmarking and accessibility testing
- Advanced debugging with console/network monitoring
📖 Full examples and detailed guides available in the specialized documentation.
🏗️ Architecture
🔧 Troubleshooting & Advanced Usage
For detailed troubleshooting guides, debugging tools, and advanced configuration:
📖 Quick References
- Common Issues: See Technical Documentation →
- Performance Tuning: See Technical Documentation →
- Cross-Platform Setup: See Technical Documentation →
- Complete Hardware Setup: See Raspberry Pi Guide →
Quick Fixes
🤝 Contributing
We welcome contributions to democratize AI access for developers worldwide.
Areas for Contribution:
- 📱 Mobile browser support (Android/iOS testing)
- 🔧 Additional MCP tools and integrations
- ⚡ Performance optimizations for smaller devices
- 📚 Tutorial content and use-case examples
Development Setup:
📜 License
MIT License - feel free to use in commercial projects!
🙏 Acknowledgments
- 🤖 Anthropic for Claude Code and MCP protocol
- 🍓 Raspberry Pi Foundation for democratizing computing
- 🌐 Chromium Project for ARM64 browser support
- 👥 Open Source Community for making this possible
📞 Support & Community
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
- 📧 Email: github@fodor.app
- 📁 Repository: github.com/nfodor/mcp-chromium-arm64
local-only server
The server can only run on the client's local machine because it depends on local resources.
MCP server that enables browser automation and web testing on ARM64 devices like Raspberry Pi, allowing users to navigate websites, take screenshots, execute JavaScript, and perform UI testing via Claude.
- 🚀 Two Implementation Approaches Available
- 📚 Documentation & Specialized Guides
- ✨ Core Features
- 🚀 Universal Quick Start
- 🛠️ Developer Guide & Debugging
- 🌐 Cross-Platform ARM64 Compatibility
- Claude CLI Integration
- Usage Examples
- 🎯 Key Use Cases
- 🏗️ Architecture
- 🔧 Troubleshooting & Advanced Usage
- 🤝 Contributing
- 📜 License
- 🙏 Acknowledgments
- 📞 Support & Community
Related MCP Servers
- AsecurityAlicenseAqualityAn MCP server that provides tools for interacting with Chrome through its DevTools Protocol, enabling remote control of Chrome tabs to execute JavaScript, capture screenshots, monitor network traffic, and more.Last updated -78941TypeScriptMIT License
- -securityAlicense-qualityAn MCP server that connects any MCP client (like Claude or Cursor) with the browser using browser-use, allowing clients to utilize existing LLMs without requiring additional API keys.Last updated -73PythonApache 2.0
- -securityFlicense-qualityA MCP server that allows AI assistants to interact with the browser, including getting page content as markdown, modifying page styles, and searching browser history.Last updated -80TypeScript
- AsecurityAlicenseAqualityA comprehensive HTTP client MCP server for security testing, API testing, and web automation that provides full-featured HTTP tools with detailed logging capabilities.Last updated -82PythonMIT License