MCP-Browse

by tylergannon

368 downloads
Not rated
GitHub

About

An MCP Server that gives the LLM some basic browsing capabilities

Details

Author
tylergannon
Downloads
368
Categories
Other, Automation

- Gesture-based protocol for browser interactions
- Supports Navigation, Click, Input, Download, ExecuteScript
- Streamed responses for navigation and input gestures
- Uses Protocol Buffers for efficient typed communication
- Focused on automating e-commerce site workflows

Install Go 1.18+ and Protocol Buffers compiler, clone the repository, run go mod download, generate Protocol Buffer code with buf generate, then create a client using NewMCPBrowserServiceClient and invoke gesture operations like Navigate, Click, and Input which return streamed responses.

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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.