MCP-Browse
by tylergannon
MCP-Browse provides a streamlined interface for controlling browser interactions through a remote protocol. It's focused on e-commerce site interactions like navigation, clicking elements, and entering form data.
Last updated: N/A
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:
- Navigate - Visit a URL with optional redirect handling
- Click - Click on elements using ID or CSS selectors
- Input - Enter values in form fields (text, checkboxes, select dropdowns)
- Download - Retrieve images or files
- 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
- Clone the repository
- Install dependencies:
go mod download
- Generate Protocol Buffer code:
buf generate
Run Tests
go test ./...
License
MIT License