UNPKG

browser-x-mcp

Version:

AI-Powered Browser Automation with Advanced Form Testing - A Model Context Provider (MCP) server that enables intelligent browser automation with form testing, element extraction, and comprehensive logging

409 lines (315 loc) • 12.7 kB
![Browser[X]MCP Banner](assets/logo/browserx-mcp-logo-banner.png) **AI-Powered Browser Automation with Advanced Form Testing** ![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Node.js](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg) ![Version](https://img.shields.io/badge/version-1.0.0--beta.1-orange.svg) ![Status](https://img.shields.io/badge/status-beta-yellow.svg) Browser[X]MCP is a Model Context Provider (MCP) server that enables AI-driven browser automation with advanced form testing capabilities, intelligent element extraction, and comprehensive interaction logging. **Connect your AI apps to browser automation** - Works seamlessly with Cursor, Claude Desktop, VS Code, and other MCP-compatible applications. ## ✨ Features ### šŸ¤– **AI-Driven Testing** - **Smart Form Filling**: AI automatically fills forms with realistic test data - **Batch Actions**: Efficient bulk operations for multiple elements (up to 5 actions per batch) - **Context Awareness**: AI understands page state and avoids redundant actions - **Loop Detection**: Prevents infinite testing cycles ### ⚔ **Batch Operations System** - **Multi-Element Processing**: Execute up to 5 actions simultaneously - **Intelligent Grouping**: AI automatically groups similar elements for batch processing - **Performance Optimization**: Reduce API calls and execution time by 3-5x - **Error Isolation**: Individual action failures don't stop the entire batch - **Smart Prioritization**: Batch similar input types (text fields, checkboxes, etc.) ### šŸŽÆ **Advanced Element Extraction** - **XML Canvas Format**: Compact, efficient page representation (800x+ compression) - **ID-Based Targeting**: Reliable element identification - **Coordinate Mapping**: Precise click positioning - **Real-time Updates**: Dynamic page state tracking ### šŸ’° **Token Economics & Cost Efficiency** - **Massive Token Savings**: 800x+ data compression vs screenshots - **AI Cost Reduction**: ~90% lower AI API costs compared to vision models - **Text vs Vision Models**: Use cheaper text models instead of expensive vision APIs - **Scalable Operations**: Process thousands of pages at fraction of screenshot costs - **Performance Boost**: 10x faster processing with compact data format ### šŸ“Š **Comprehensive Logging** - **Action History**: Detailed logs of all AI decisions and actions - **Form Data Capture**: Real-time extraction of filled form data - **Performance Metrics**: Success rates, timing, and efficiency stats - **Test Reports**: JSON and console output formats ### šŸ›”ļø **Robust Automation** - **Field Clearing**: Advanced input field cleaning before entry - **File Upload Handling**: Programmatic file upload without OS dialogs - **Error Recovery**: Graceful handling of failed operations - **Stealth Mode**: Reduced bot detection signatures ## šŸš€ Quick Start ### Installation ```bash # Clone the repository git clone https://github.com/rnd-pro/browser-x-mcp.git cd browser-x-mcp # Install dependencies npm install # Configure environment cp .env.example .env # Edit .env with your API keys # Start the MCP server npm start ``` ### Basic Usage ```bash # Run AI-powered form testing npm test # Run with mock AI (faster testing) npm run test:mock # Generate test reports npm run test:report ``` ## šŸ—ļø Architecture ``` ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” │ AI Test │───▶│ MCP Server │───▶│ Browser │ │ Agent │ │ (BrowserX) │ │ (Playwright) │ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ │ │ │ ā–¼ ā–¼ ā–¼ ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” │ Test Reports │ │ Action Logs │ │ Screenshots │ │ & Metrics │ │ & Form Data │ │ & Canvas │ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ ``` ## šŸ“ Project Structure ``` browserx-mcp/ ā”œā”€ā”€ src/ │ ā”œā”€ā”€ server/ # MCP Server implementation │ │ ā”œā”€ā”€ index.js # Main server with browser automation │ │ ā”œā”€ā”€ atomic-navigation.js # Navigation utilities │ │ └── daemon.js # Server daemon │ └── extractor/ # Page analysis tools │ └── VirtualCanvasExtractor.js # XML canvas extraction ā”œā”€ā”€ test/ │ ā”œā”€ā”€ ai-mcp-interaction-test.js # AI-powered testing │ ā”œā”€ā”€ real-websites-test.js # Real website validation │ └── input-types-test-page.html # Test page ā”œā”€ā”€ tools/ # Development utilities │ └── screenshot-analyzer/ # Screenshot analysis tools (planned) ā”œā”€ā”€ examples/ # Usage examples ā”œā”€ā”€ docs/ # Documentation └── config/ # Configuration files ``` ## šŸ’° Cost Efficiency Analysis ### Token Usage Comparison | Approach | Data Size | Tokens | Cost/Request | |----------|-----------|--------|--------------| | **Screenshots** | 200KB | ~400,000 | $0.0048 | | **XML Canvas** | 0.25KB | ~500 | $0.0001 | | **Savings** | **800x smaller** | **800x fewer** | **48x cheaper** | ### Real-World Performance - **Google Search**: 276KB screenshot → 3KB canvas = **92x compression** - **GitHub Pages**: 166KB screenshot → 121KB canvas = **1.4x compression** - **Average Savings**: **~90% cost reduction** on AI API calls ## šŸŽ® Usage Examples ### AI-Powered Form Testing ```javascript import { MCPAIInteractionAgent } from './test/ai-mcp-interaction-test.js'; const agent = new MCPAIInteractionAgent({ maxIterations: 20, useMockAI: false, stopOnFailure: true }); await agent.init(); await agent.runInteractionTest(); const report = await agent.generateReport(); ``` ### Batch Operations Example ```javascript // Execute multiple actions in one batch const batchResponse = await fetch('http://localhost:3001', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', method: 'batch_actions', params: { actions: [ { action: 'input_text', element_id: 'email', text: 'user@example.com' }, { action: 'input_text', element_id: 'password', text: 'SecurePass123' }, { action: 'click_element_by_id', element_id: 'submit-btn' } ] }, id: 1 }) }); ``` ### Custom MCP Operations ```javascript // Connect to MCP server const response = await fetch('http://localhost:3001', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', method: 'extract_xml_canvas', params: {}, id: 1 }) }); ``` ## šŸ¤– AI Editor Integration ### Works with Popular AI Applications Browser[X]MCP integrates seamlessly with MCP-compatible AI applications: | Application | Support | Setup | |-------------|---------|-------| | **Cursor** | āœ… Full | Add to `.cursor/mcp.json` | | **Claude Desktop** | āœ… Full | Add to MCP configuration | | **VS Code** | āœ… Full | Use MCP extension | | **Windsurf** | āœ… Full | MCP server integration | ### Cursor Integration To use Browser[X]MCP with Cursor, add this to your `.cursor/mcp.json`: ```json { "mcpServers": { "browser-x-mcp": { "command": "node", "args": ["./src/server/daemon.js"], "env": { "BROWSER_X_MCP_DEBUG": "true", "NODE_ENV": "development" } } } } ``` Then restart Cursor and start automating your browser with AI! šŸš€ ## šŸ”§ Configuration ### Environment Variables Create a `.env` file based on `.env.example`: ```bash # Copy the example file cp .env.example .env # Edit with your settings nano .env ``` Required environment variables: ```bash # AI Configuration (required for AI testing) OPENROUTER_API_KEY=your_openrouter_api_key_here OPENROUTER_MODEL=deepseek/deepseek-r1:free # Server Configuration MCP_PORT=3001 BROWSER_HEADLESS=false ``` **Note**: Get your OpenRouter API key from [openrouter.ai](https://openrouter.ai/) ### Test Configuration ```javascript const config = { maxIterations: 30, stopOnFailure: true, useMockAI: false, headless: false, loopThreshold: 2 }; ``` ## šŸ“Š Test Reports Browser[X]MCP generates comprehensive test reports: ```json { "testMetadata": { "testType": "MCP AI-Powered Form Interaction Test", "timestamp": "2025-01-20T19:30:22.508Z", "duration": "45.2 seconds", "model": "deepseek/deepseek-r1:free" }, "results": { "totalActions": 12, "successfulActions": 12, "failedActions": 0, "successRate": "100.00%", "aiDecisions": [...] } } ``` ## šŸ› ļø Development ### Running Tests ```bash # AI-powered form testing npm test # Alternative AI test command npm run test:ai # Mock AI testing (faster, no API required) npm run test:mock # View test page manually npm run test:page ``` ### Adding New Features 1. **Server Extensions**: Add new MCP methods in `src/server/index.js` 2. **AI Capabilities**: Enhance AI logic in `test/ai-mcp-interaction-test.js` 3. **Extractors**: Create new page analyzers in `src/extractor/` ## šŸ—ŗļø Roadmap ### šŸŽÆ **Planned Features** #### šŸ–¼ļø **Screenshot Analysis Tools** - Visual element detection and coordinate mapping - Cropped screenshot analysis for targeted interactions - AI-powered click coordinate determination - Visual regression testing capabilities #### 🧠 **Enhanced AI Integration** - Multi-model AI support (GPT-4, Claude, Local models) - Custom AI prompt templates - Learning from user interactions - Adaptive testing strategies #### 🌐 **Extended Browser Support** - Multi-browser testing (Chrome, Firefox, Safari) - Browser profile management - Existing browser connection support - Extension-based automation #### šŸ” **Advanced Analysis** - Performance monitoring and optimization - Accessibility testing integration - SEO analysis capabilities - Security vulnerability scanning #### šŸ“± **Cross-Platform Support** - Mobile browser automation - Responsive design testing - Touch interaction simulation - Device emulation ### šŸš€ **Priority Features** - [ ] Screenshot analyzer tool implementation - [ ] Enhanced error handling and recovery - [ ] Performance optimization - [ ] Comprehensive documentation ### šŸŽØ **Future Vision** - [ ] Visual testing framework - [ ] Multi-browser orchestration - [ ] Cloud deployment options - [ ] Enterprise features ## šŸ¤ Contributing We welcome contributions! Please see our [Contributing Guide](docs/CONTRIBUTING.md) for details. ### Development Setup ```bash git clone https://github.com/rnd-pro/browser-x-mcp.git cd browser-x-mcp npm install npm run dev ``` ### Submitting Changes 1. Fork the repository 2. Create a feature branch: `git checkout -b feature/amazing-feature` 3. Commit changes: `git commit -m 'Add amazing feature'` 4. Push to branch: `git push origin feature/amazing-feature` 5. Open a Pull Request ## šŸ“ License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## šŸ‘„ Development Team **Developed by RND-PRO Team** - 🌐 Website: [rnd-pro.com](https://rnd-pro.com) - šŸ’¼ Professional development team specializing in innovative automation solutions - šŸ¤– Experts in AI integration and browser automation technologies ## šŸ™ Acknowledgments - Built on top of Playwright for reliable browser automation - Inspired by the MCP (Model Context Provider) specification - AI integration powered by OpenRouter and various LLM providers - Similar to [Browser MCP](https://browsermcp.io/) but with advanced AI testing capabilities ## šŸ“ž Support - šŸ“§ **Issues**: [GitHub Issues](https://github.com/rnd-pro/browser-x-mcp/issues) - šŸ’¬ **Discussions**: [GitHub Discussions](https://github.com/rnd-pro/browser-x-mcp/discussions) - šŸ“– **Documentation**: [Wiki](https://github.com/rnd-pro/browser-x-mcp/wiki) --- **Made with ā¤ļø by RND-PRO Team for the AI automation community**