arc-mcp
Provides browser automation for Arc, enabling AI agents to control the Arc browser programmatically via semantic locators, perform actions like clicking, filling forms, navigating, and extracting page structure.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@arc-mcpsearch for flights from San Francisco to London"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Playwright-style semantic browser automation for Arc
Installation
Claude Desktop
Download the latest
.mcpbfile from releasesOpen Claude Desktop
Go to Settings → Extensions
Drag and drop the
.mcpbfile onto the window
Claude Code
claude mcp add --scope user --transport stdio arc nix run github:andrewgazelka/arc-mcpOr 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 CSSfill(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 tabgetCurrentTab()— Get active tab info (title, URL)listTabs()— List all open tabsswitchToTab(tabId)— Switch to tab by indexcloseTab(tabId)— Close tab by indexreloadTab(tabId?)— Reload tabgoBack(tabId?)— Navigate backgoForward(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 bundlePackage 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/applescriptNot affiliated with The Browser Company. Arc is a trademark of The Browser Company.
MIT · Andrew Gazelka
This server cannot be installed
Maintenance
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