An open API service indexing awesome lists of open source software.

https://github.com/raghu6798/browser_scrape_mcp


https://github.com/raghu6798/browser_scrape_mcp

Last synced: 3 months ago
JSON representation

Awesome Lists containing this project

README

          

# πŸ€– Browser Automation Agent

A powerful browser automation tool built with MCP (Model Controlled Program) that combines web scraping capabilities with LLM-powered intelligence. This agent can search Google, navigate to webpages, and intelligently scrape content from various websites including GitHub, Stack Overflow, and documentation sites.

## πŸš€ Features

- **πŸ” Google Search Integration**: Finds and retrieves top search results for any query
- **πŸ•ΈοΈ Intelligent Web Scraping**: Tailored scraping strategies for different website types:
- πŸ“‚ GitHub repositories
- πŸ’¬ Stack Overflow questions and answers
- πŸ“š Documentation pages
- 🌐 Generic websites
- **🧠 AI-Powered Processing**: Uses Mistral AI for understanding and processing scraped content
- **πŸ₯· Stealth Mode**: Implements browser fingerprint protection to avoid detection
- **πŸ’Ύ Content Saving**: Automatically saves both screenshots and text content from scraped pages

## πŸ—οΈ Architecture

This project uses a client-server architecture powered by MCP:

- **πŸ–₯️ Server**: Handles browser automation and web scraping tasks
- **πŸ‘€ Client**: Provides the AI interface using Mistral AI and LangGraph
- **πŸ“‘ Communication**: Uses stdio for client-server communication

## βš™οΈ Requirements

- 🐍 Python 3.8+
- 🎭 Playwright
- 🧩 MCP (Model Controlled Program)
- πŸ”‘ Mistral AI API key

## πŸ“₯ Installation

1. Clone the repository:

```bash
git clone https://github.com/yourusername/browser-automation-agent.git
cd browser-automation-agent
```

2. Install dependencies:

```bash
pip install -r requirements.txt
```

3. Install Playwright browsers:

```bash
playwright install
```

4. Create a `.env` file in the project root and add your Mistral AI API key:

```
MISTRAL_API_KEY=your_api_key_here
```

## πŸ“‹ Usage

### Running the Server

```bash
python main.py
```

### Running the Client

```bash
python client.py
```

### Sample Interaction

Once both the server and client are running:

1. Enter your query when prompted
2. The agent will:
- πŸ” Search Google for relevant results
- 🧭 Navigate to the top result
- πŸ“Š Scrape content based on the website type
- πŸ“Έ Save screenshots and content to files
- πŸ“€ Return processed information

## πŸ› οΈ Tool Functions

### `get_top_google_url`
πŸ” Searches Google and returns the top result URL for a given query.

### `browse_and_scrape`
🌐 Navigates to a URL and scrapes content based on the website type.

### `scrape_github`
πŸ“‚ Specializes in extracting README content and code blocks from GitHub repositories.

### `scrape_stackoverflow`
πŸ’¬ Extracts questions, answers, comments, and code blocks from Stack Overflow pages.

### `scrape_documentation`
πŸ“š Optimized for extracting documentation content and code examples.

### `scrape_generic`
🌐 Extracts paragraph text and code blocks from generic websites.

## πŸ“ File Structure

```
browser-automation-agent/
β”œβ”€β”€ main.py # MCP server implementation
β”œβ”€β”€ client.py # Mistral AI client implementation
β”œβ”€β”€ requirements.txt # Project dependencies
β”œβ”€β”€ .env # Environment variables (API keys)
└── README.md # Project documentation
```

## πŸ“€ Output Files

The agent generates two types of output files with timestamps:

- πŸ“Έ `final_page_YYYYMMDD_HHMMSS.png`: Screenshot of the final page state
- πŸ“„ `scraped_content_YYYYMMDD_HHMMSS.txt`: Extracted text content from the page

## βš™οΈ Customization

You can modify the following parameters in the code:

- πŸ–₯️ Browser window size: Adjust `width` and `height` in `browse_and_scrape`
- πŸ‘» Headless mode: Set `headless=True` for invisible browser operation
- πŸ”’ Number of Google results: Change `num_results` in `get_top_google_url`

## ❓ Troubleshooting

- **πŸ”Œ Connection Issues**: Ensure both server and client are running in separate terminals
- **🎭 Playwright Errors**: Make sure browsers are installed with `playwright install`
- **πŸ”‘ API Key Errors**: Verify your Mistral API key is correctly set in the `.env` file
- **πŸ›£οΈ Path Errors**: Update the path to `main.py` in `client.py` if needed

## πŸ“œ License

[MIT License](LICENSE)

## 🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

---

Built with 🧩 MCP, 🎭 Playwright, and 🧠 Mistral AI