mcp-unified-automation

mcp-unified-automation

A custom MCP server for Playwright browser automation and system control, providing 25 tools to enable Claude Code to perform web interactions and system tasks via natural language.

Category
访问服务器

README

mcp-unified-automation

Custom MCP server — Playwright browser automation + system control, 25 tools, stdio transport.

Launched via RUN_MCP_FAST.bat on George's Desktop. Connects to Claude Code as a local MCP server.


What it does

Runs a headed Chrome instance using George's actual Chrome profile (User Data dir), so the browser has real auth cookies — logged into Google, Search Console, Gmail, everything. Claude operates it through 25 registered MCP tools.

Tool groups:

Group Count What it covers
browser_* 7 Backward-compatible Playwright tools (navigate, click, type, screenshot, etc.)
system_* 6 Shell commands, file read/write, process control
session_* 2 Named browser session management (multiple tabs/contexts)
task_* 5 Task DSL engine — plan, run, resume, pause, commit
observe_* 1 DOM observation / mutation watching
network_* 2 Request blocking + API endpoint discovery
evidence_* 1 Export + hash-chain verification of browser actions
metrics_* 1 Step-level timing and performance reporting

Setup

git clone https://github.com/gugosf114/mcp-unified-automation
cd mcp-unified-automation
npm install
cp .env.example .env
# Edit .env if your Chrome User Data path differs
npm run build

Then double-click RUN_MCP_FAST.bat (or right-click → Run as administrator if system tools need elevation).


.env config

BROWSER_HEADED=true            # Show the browser window
BROWSER_BLOCK_MEDIA=false      # Block images/video to speed up crawls
HUMAN_DELAY_MIN=50             # ms — min delay between actions
HUMAN_DELAY_MAX=200            # ms — max delay (human-like pacing)
FAST_MODE=true                 # Skip networkidle waits + nav waits on click (10x faster)
CHROME_USER_DATA_DIR=C:\Users\georg\AppData\Local\mcp-unified-automation\chrome-profile

CHROME_USER_DATA_DIR points to a dedicated Chrome profile so sessions, cookies, and logins carry over. Must NOT be Chrome's default user-data-dir (Chrome blocks DevTools on it).

FAST_MODE skips Playwright's networkidle wait after every navigation and click. Modern sites (GA4, Gmail, etc.) never truly go network-idle due to analytics pings and websockets, so the default behavior just burns 10-30 seconds hitting the timeout. With FAST_MODE, pages are interactable as soon as the DOM loads.


Claude Code config

Add to your Claude Code MCP config (claude_desktop_config.json or equivalent):

{
  "mcpServers": {
    "unified-automation": {
      "command": "node",
      "args": ["C:\\path\\to\\mcp-unified-automation\\dist\\index.js"]
    }
  }
}

Or just run the BAT — it handles the node invocation.


Architecture

src/
  index.ts        — server entry, registers all tool groups
  kernel.ts       — wires up shared managers (session, task, observer, network, evidence, metrics)
  tools/          — one file per tool group
  cdp/            — Chrome DevTools Protocol bridge
  session/        — named session + page slot management
  task/           — task DSL (plan/run/resume/pause/commit)
  observer/       — DOM mutation bus
  network/        — request interceptor + API discovery
  evidence/       — action ledger + hash chain
  metrics/        — step timing engine
  checkpoint/     — mid-task state snapshots
  recovery/       — resume after crash/disconnect
  policy/         — action policy enforcement
  types/          — shared TypeScript types

Stack

  • Node.js (ESM)
  • TypeScript 5.7
  • Playwright 1.52
  • @modelcontextprotocol/sdk 1.12
  • Zod (schema validation)

What's New (March 2026)

Features you can use

  • Domain readiness profiles (src/readiness.ts) — The server now knows how to wait for LinkedIn, Gmail, Google Search, GitHub, Yelp, Facebook, and Instagram. Instead of waiting for networkidle (which times out on every modern site), it waits for the actual content selector that proves the page loaded. You don't call this directly — it fires automatically on every navigate, goto, and warm call. If you add a new site you automate frequently, add its selector to readiness.ts.

  • Selective evidence mode — New .env setting EVIDENCE_MODE=selective records screenshots/DOM snapshots only on errors, approval gates, and the first/last step of a task. Set to full for audit trails, none to skip entirely. Controlled in .env, no code changes needed.

  • Semantic tool returnsbrowser_navigate, browser_click, and session_open now return richer data: readyState, whether navigation occurred, whether the readiness selector matched, the domain profile used. This means Claude doesn't need a follow-up getPageInfo call after every action — the info comes back in the tool response. Fewer round trips = faster task execution.

  • Task management tools renamedtask.listtask_list, task.statustask_status, task.canceltask_cancel. Claude Desktop rejects dots in tool names. If you had prompts referencing the old names, update them.

Performance & safety (automatic, no action needed)

  • FAST_MODE — When FAST_MODE=true in .env: zero human delays, skip networkidle waits, sparse checkpoint writes (every 3rd step instead of every step), evidence recording follows EVIDENCE_MODE setting. Already enabled in your .env.

  • Stable path resolution — Data directories (data/checkpoints/, data/evidence/) now resolve from the module's own location (import.meta.url), not process.cwd(). This fixed the crash when Claude Desktop spawned the server from C:\WINDOWS\system32. Centralized in src/env.ts as DATA_ROOT.

  • Retry with exponential backoff (src/action/retry.ts) — Network-sensitive actions auto-retry on transient failures.

  • Conditional steps & parallel runner — Task DSL now supports condition fields on steps and a parallel step executor for independent actions.


Notes

  • browser_* tools use a ”default” page slot for backward compatibility — existing Claude prompts that call browser_navigate etc. still work unchanged.
  • The task engine supports mid-run pause/resume — useful for long multi-step jobs that might hit context limits.
  • Evidence ledger produces a hash-chained audit trail of every browser action. Useful for compliance work.
  • Recovery module handles reconnect after Claude Code crashes or context resets.

Execution Policy

This server runs in operator-first mode.

Reversible automation and read/write navigation steps are allowed by default — no approval gate required. Human approval is required only for:

  • Financial actions (payments, subscriptions, transactions)
  • Destructive actions (deletes, overwrites, sends that cannot be undone)
  • Explicit pproval_gate checkpoints defined in the task DSL

The operator, not the client UI, is the final authority over execution policy. Approval prompts are task-level constructs, not UI-level guardrails.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选