mcp-browse

An MCP Server that gives the LLM some basic browsing capabilities

GitHub Stars

0

User Rating

Not Rated

Favorites

0

Views

8

Forks

0

Issues

0

README
MCP-Browse

A browser control protocol for automation and e-commerce site interaction.

Overview

MCP-Browse provides a clean, streamlined interface for controlling browser interactions through a remote protocol. It's particularly focused on common e-commerce site interactions like:

  • Navigation to pages
  • Clicking on elements
  • Entering form data
  • Downloading images and files
  • Executing JavaScript

All operations use protocol buffers for efficient, typed communication.

Protocol Design

The protocol is designed around "gestures" that represent user interactions with a browser:

  1. Navigate - Visit a URL with optional redirect handling
  2. Click - Click on elements using ID or CSS selectors
  3. Input - Enter values in form fields (text, checkboxes, select dropdowns)
  4. Download - Retrieve images or files
  5. ExecuteScript - Run JavaScript on the page and get results

Browser gesture operations (Navigate, Click, Input) return streamed responses that include:

  • Zero or more redirect events
  • Page content or error information
  • A completion event

Utility operations (Download, ExecuteScript) return a single response with the requested data.

Example Usage
// Create a client
// client := NewMCPBrowserServiceClient(...)

// Navigate to a product page
navigateReq := apiv1.NavigateRequest_builder{
    Url: stringPtr("https://example-shop.com/products"),
    AllowRedirects: boolPtr(true),
}.Build()

// Process the response stream
// stream, err := client.Navigate(context.Background(), navigateReq)
// handleResponseStream(stream)

// Click on a product
clickReq := apiv1.ClickRequest_builder{
    CssSelector: stringPtr(".product-item"),
}.Build()

// Process the response stream
// stream, err = client.Click(context.Background(), clickReq)
// handleResponseStream(stream)

// Add to cart
clickReq = apiv1.ClickRequest_builder{
    CssSelector: stringPtr(".add-to-cart-button"),
}.Build()

// Process the response stream
// stream, err = client.Click(context.Background(), clickReq)
// handleResponseStream(stream)
Building and Running
Prerequisites
  • Go 1.18+
  • Protocol Buffers compiler
Setup
  1. Clone the repository
  2. Install dependencies:
    go mod download
    
  3. Generate Protocol Buffer code:
    buf generate
    
Run Tests
go test ./...
License

MIT License