Skip to main content
Glama

Arc MCP

Playwright-style semantic browser automation for Arc

Build

Installation

Claude Desktop

  1. Download the latest .mcpb file from releases

  2. Open Claude Desktop

  3. Go to Settings → Extensions

  4. Drag and drop the .mcpb file onto the window

Claude Code

claude mcp add --scope user --transport stdio arc nix run github:andrewgazelka/arc-mcp

Or manually add to your MCP settings:

{
  "mcpServers": {
    "arc": {
      "command": "nix",
      "args": ["run", "github:andrewgazelka/arc-mcp"]
    }
  }
}

Use Cases

Flight Search — Compare prices across airlines, check availability, book tickets

Shopping — Search products, read reviews, add to cart, checkout

Groceries — Navigate store catalog, build cart, schedule delivery

Research — Open multiple sources, extract data, synthesize information

Features

Node.js REPL

Execute automation scripts with full access to the browser API — no predefined tool constraints.

await browser.click({ role: { role: 'button', name: 'Search' } });
await browser.fill({ label: 'Email' }, 'user@example.com');
const tabs = await browser.listTabs();
return tabs.length;

Semantic Locators

Find elements the way users see them — by role, label, text, or placeholder. No more fragile CSS selectors.

await browser.click({ role: { role: 'button', name: 'Search' } });
await browser.fill({ label: 'Email' }, 'user@example.com');
await browser.type({ placeholder: 'Search...' }, 'London');

Smart DOM Tree

Get a structured, semantic representation of the page with only interactive elements.

const structure = await browser.getPageStructure(10);

Available Functions

The browser object provides:

Semantic Actions:

  • click(locator, options?) — Click element by role, label, text, placeholder, or CSS

  • fill(locator, value, options?) — Fast fill (replaces entire value)

  • type(locator, text, options?) — Type character-by-character (triggers autocomplete)

  • selectOption(locator, option, options?) — Select dropdown option

Navigation:

  • openUrl(url, newTab?) — Open URL in new or current tab

  • getCurrentTab() — Get active tab info (title, URL)

  • listTabs() — List all open tabs

  • switchToTab(tabId) — Switch to tab by index

  • closeTab(tabId) — Close tab by index

  • reloadTab(tabId?) — Reload tab

  • goBack(tabId?) — Navigate back

  • goForward(tabId?) — Navigate forward

Page Analysis:

  • getPageStructure(maxDepth?, tabId?) — Get semantic DOM tree

Low-Level:

  • executeJavaScript(code, tabId?) — Run arbitrary JavaScript

Example Workflow

// Open Google Flights
await browser.openUrl('https://www.google.com/travel/flights');

// Fill origin
await browser.fill({ label: 'Where from?' }, 'San Francisco');

// Type destination (triggers autocomplete)
await browser.type({ placeholder: 'Where to?' }, 'London');

// Click search
await browser.click({ role: { role: 'button', name: 'Search' } });

Architecture

This is a monorepo with three packages:

  • @arc-mcp/applescript — Low-level AppleScript bridge for Arc

  • @arc-mcp/browser — High-level Node.js API with semantic locators

  • arc-mcp-server — MCP server exposing REPL

See ARCHITECTURE.md for detailed design.

Requirements

  • macOS

  • Arc browser

Development

npm install
npm run build        # Build all packages
npm run typecheck    # Type check all packages
npm run pack         # Create .mcpb bundle

Package Usage

Each package can be used independently:

# Use browser API in your own scripts
npm install @arc-mcp/browser

# Use AppleScript bridge directly
npm install @arc-mcp/applescript

Not affiliated with The Browser Company. Arc is a trademark of The Browser Company.

MIT · Andrew Gazelka

F
license - not found
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
23Releases (12mo)

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/andrewgazelka/arc-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server