1. Conduid
  2. Browser
  3. Chromelink
MCP server · Browser

Chromelink

Model Context Protocol (MCP) server for Chrome browser automation via AI agents

37Low

Scored 6 months ago · breakdown

About Chromelink

Chromelink is an MCP server in the Browser category: model Context Protocol (MCP) server for Chrome browser automation via AI agents.

Install

Claude Code
claude mcp add chromelink -- npx -y @aikeymouse/chromelink-mcp
npx
npx -y @aikeymouse/chromelink-mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Chromelink

Powered by Claude · Grounded in docs

I know everything about Chromelink. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ✓README presentThe repository ships documentation.

5 checks have not been run yet.

README

ChromeLink

Remote Chrome tab control via WebSocket API with session management and side panel UI.

Patreon npm npm

Quick Start

Install NPM Client:

npm install @aikeymouse/chromelink-client

Or use with AI Agents (MCP):

npm install -g @aikeymouse/chromelink-mcp

See Installation for complete setup.

Features

  • WebSocket API: Control Chrome tabs remotely via WebSocket connection
  • Model Context Protocol (MCP): Official MCP server for AI agents (GitHub Copilot, Claude Desktop, etc.) with full browser automation capabilities
  • Session Management: Create sessions with configurable timeouts, resume existing sessions
  • Tab Operations: List, open, navigate, switch, close tabs in current active window
  • JavaScript Execution: Execute JavaScript in tabs with configurable timeout and result return
  • Script Injection: Register early script injections for WebView2 mocking, test configuration, and API interception without debugger warnings
  • Inspector Mode: Interactive element inspection with detailed DOM tree analysis and CSS selectors
  • Helper Functions: Comprehensive DOM operations for CSP-restricted pages including click, type, highlight, element bounds, viewport scrolling, and container analysis
  • Screenshot Capture: Full page or element-cropped screenshots with base64 PNG output
  • Side Panel UI: Monitor connected clients, view session details, manage script injections, track logs in real-time
  • Per-Session Logging: All requests/responses logged to dedicated session files with configurable retention
  • Chunked Messages: Handle large results with automatic 1MB chunking
  • Auto-Restart: Native host automatically restarts on extension updates

Screenshots

Session Logs Inspector Mode
Session Logs Inspector Mode

Architecture

Client App (WebSocket) ←→ Node.js Native Host ←→ Chrome Extension (Service Worker)
                                   ↓                           ↓
                          Session Log Files              Side Panel UI

Installation

See install-scripts/INSTALL.md for complete installation instructions.

Usage

Quick Start with Node.js Client

const ChromeLinkClient = require('@aikeymouse/chromelink-client');

async function example() {
  // Create client
  const client = new ChromeLinkClient();
  
  // Connect to ChromeLink server
  await client.connect('ws://localhost:9000');
  
  // List all tabs
  const { tabs } = await client.listTabs();
  console.log(`Found ${tabs.length} tabs`);
  
  // Open a new tab
  const { tab } = await client.openTab('https://example.com');
  const tabId = tab.id;
  
  // Wait for page to load and get heading
  await client.waitForElement('h1', 10000, tabId);
  const heading = await client.getText('h1', tabId);
  console.log('Page heading:', heading.value);
  
  // Execute JavaScript
  const result = await client.executeJS('document.title', tabId);
  console.log('Page title:', result.value);
  
  // Clean up
  await client.closeTab(tabId);
  client.close();
}

example().catch(console.error);

Common Operations

Open tab and interact with form:

const { tab } = await client.openTab('https://example.com/login');
await client.waitForElement('input[name="email"]', 5000, tab.id);
await client.type('input[name="email"]', 'user@example.com', tab.id);
await client.type('input[name="password"]', 'secret123', tab.id);
await client.click('button[type="submit"]', tab.id);

Capture screenshot:

const { screenshot } = await client.captureScreenshot({ 
  format: 'png',
  fullPage: true 
});
// screenshot is a base64 data URL

Use helper functions (works on CSP-restricted pages):

// Extract page elements with CSS and XPath selectors
const elements = await client.callHelper(
  'extractPageElements', 
  ['form', false], // containerSelector, includeHidden
  tabId
);

// Highlight an element
await client.callHelper('highlightElement', ['button.submit'], tabId);

See Node.js Client Documentation for complete API reference.

Advanced: Direct WebSocket API

For direct WebSocket control (without the Node.js client), see PROTOCOL.md for the complete WebSocket message format.

Response Format

{
  "requestId": "req-001",
  "result": { ... },
  "error": null
}

For large results (>1MB), responses are chunked:

{
  "requestId": "req-001",
  "chunk": "...",
  "chunkIndex": 0,
  "totalChunks": 3
}

Configuration

Log Retention

Configure log retention in the Side Panel UI:

  • Default: 100 entries
  • Adjustable via UI slider
  • Older entries auto-deleted when limit exceeded

Session Timeout

Set per-session when creating connection:

  • Default: 5 minutes (300000 ms)
  • Configurable via timeout parameter
  • Session extends on activity

Development

See docs/dev/DEVELOPMENT.md for development setup and guidelines.

Protocol Documentation

See docs/PROTOCOL.md for complete API documentation.

License

ChromeLink uses dual licensing to support both non-commercial and commercial use cases:

Non-Commercial Use (Free)

License: Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)

Permitted for:

  • Personal projects and learning
  • Educational institutions and students
  • Research and academic work
  • Open source projects (non-commercial)

You can:

  • ✅ Use ChromeLink for free
  • ✅ Share and redistribute (with attribution)

Restrictions:

  • ❌ No commercial use
  • ❌ No derivative works
  • ✅ Attribution required

Commercial Use (Paid License Required)

License: Commercial License

Required for:

  • Commercial products or services
  • Revenue-generating applications
  • Internal business automation
  • SaaS applications
  • Consulting or client work

Benefits:

  • ✅ Full commercial usage rights
  • ✅ Modification and integration rights
  • ✅ Priority support
  • ✅ Updates and maintenance

Contact: https://github.com/aikeymouse/chrome-link/issues

Published NPM Packages (MIT License)

The following NPM packages are MIT licensed and can be freely used:

Important: While these NPM packages are MIT licensed, they require the ChromeLink browser extension to function. The extension uses dual licensing (CC BY-NC-ND 4.0 or Commercial), so commercial applications need a commercial license.

Complete Licensing Details

See LICENSE file for complete dual-licensing terms and conditions.

Questions? Open an issue: https://github.com/aikeymouse/chrome-link/issues

README copy captured when this server was indexed; it may lag the repository. The original is authoritative.

Questions

About Chromelink

How do I install Chromelink?

Run claude mcp add chromelink -- npx -y @aikeymouse/chromelink-mcp, then add the server to your MCP client's configuration.

Is Chromelink safe to use with an AI agent?

Its trust score is 37 out of 100 (low). It passes 1 of the 1 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Chromelink still maintained?

Conduid hasn't recorded a commit date for this repository yet. Check the repository directly for recent activity.