Browser Use
Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.
作者による説明(英語の原文)
Runtime CSS probe — inspect layout, overflow, scroll chains in a real browser. For AI agents.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"cssprobe-cli": {
"command": "npx",
"args": [
"-y",
"cssprobe-cli"
]
}
}
}ターミナルでこれを実行します
claude mcp add cssprobe-cli -- npx -y cssprobe-cliプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"cssprobe-cli": {
"command": "npx",
"args": [
"-y",
"cssprobe-cli"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"cssprobe-cli": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"cssprobe-cli"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント mack-peng で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.3.0)がレジストリに届いたのは2 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Browser Use, Chrome DevTools MCP, MCP Server Browser
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.
MCP server for Chrome DevTools
MCP server for browser use access
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Runtime CSS probe — inspect layout, scroll, colors, backgrounds, fonts and more in a live browser. Built for both humans and AI agents.
Static + runtime CSS diagnosis for AI agents — pair with cssgraph (the CSS knowledge graph) for the full picture.
When an AI agent needs to debug CSS — why is this element overflowing, what's the actual rendered layout, is this container scrollable — it can't see the browser. It guesses from static code, missing runtime-only issues like overflow, scroll chains, and containing block hijacks.
cssprobe-cli gives the agent eyes. It opens a real browser, collects computed styles and metrics via injected JavaScript, analyzes them with a confidence model, and returns structured findings — all in one command. The agent asks a question about any selector and gets back the DOM tree, ASCII layout diagram, overflow warnings, and scroll diagnosis without leaving the terminal.
Copy and paste this prompt to your LLM agent (Claude Code, Cursor, Codex, etc.):
Install and configure cssprobe-cli by following the instructions here:
https://raw.githubusercontent.com/mack-peng/cssprobe-cli/main/docs/guide/installation.md
Or read the Installation Guide, but seriously, let an agent do it. Humans fat-finger configs.
Fetch the installation guide and follow it:
curl -s https://raw.githubusercontent.com/mack-peng/cssprobe-cli/main/docs/guide/installation.md
Or install directly:
npm install -g cssprobe-cli
cssprobe-cli skill-install
┌───────────────────────────────────────────────────────────┐
│ AI Agent │ │ │ │ "Is .sidebar overflowing?" │ │ calls: cssprobe-cli inspect .sidebar │ │ │ │ └─────────────────────────────┬─────────────────────────────┘ │ ▼ ┌───────────────────────────────────────────────────────────┐ │ cssprobe-cli daemon │ │ │ │ collector (IIFE) → analyzer (pure) → renderer (md/json) │ │ │ │ │ ▼ │ │ Playwright browser (Chromium) │ │ getBoundingClientRect · getComputedStyle · DOM walk │ └───────────────────────────────────────────────────────────┘
open spawns a daemon process managing a browser. Commands connect via Unix socket.# Open browser (non-blocking, starts daemon session)
cssprobe-cli open https://getbootstrap.com/docs/5.3/examples/checkout
cssprobe-cli inspect .container
cssprobe-cli layout .container
cssprobe-cli findings .container
cssprobe-cli close
# Open browser in headed mode
cssprobe-cli open https://mysite.com --headed
cssprobe-cli state-save --name mysite
cssprobe-cli open https://mysite.com --state state.json --headed
cssprobe-cli inspect body --json
cssprobe-cli inspect body --json | jq '.findings[] | {id, confidence, message}'
cssprobe-cli ships an MCP server (stdio), so AI clients call it as a native tool — no shell needed:
cssprobe-cli mcp-install # auto-detect and configure installed clients
cssprobe-cli mcp-install --target=claude,cursor,codex cssprobe-cli mcp-install --local # write project-scoped config
Manual configuration for any MCP client:
{
"mcpServers": { "cssprobe-cli": { "command": "cssprobe-cli", "args": ["mcp"] } } }
Exposes 10 tools: cssprobe_open, cssprobe_inspect, cssprobe_tree, cssprobe_layout, cssprobe_findings, cssprobe_eval, cssprobe_screenshot, cssprobe_inject_css, cssprobe_close, cssprobe_status. Remove with cssprobe-cli mcp-uninstall.
| Command | Description |
|---|---|
open [url] | Open browser in session mode (non-blocking) |
open [url] --headed | Show browser window |
open [url] --state | Open with saved cookies + localStorage |
open [url] --viewport 1280x720 | Custom viewport size |
open [url] --expect-url | Fail unless the final URL matches the pattern |
open [url] --fail-on-login | Fail fast when redirected to a login URL |
close | Close browser session |
close --all | Close all sessions across all workspaces |
status | Show session status (URL, title, frame count) |
frames | List frames: index, name, URL, main marker |
doctor | Diagnose browser install vs Playwright expected revision |
| Command | Description |
|---|---|
inspect | Full CSS diagnosis (computed values, declared values, findings) |
inspect --layout | Include ASCII layout diagram |
inspect --brief | Compact: tree sketch + warnings/errors only |
inspect --json | Structured JSON output |
tree | DOM tree structure |
layout | ASCII layout diagram |
findings | Only issues/warnings/errors |
Inspection commands accept --frame to target an iframe; the default is the main frame.
| Command | Description |
|---|---|
inject-css | Inject CSS into current page |
| Command | Description |
|---|---|
resize | Resize browser viewport |
eval | Evaluate JavaScript (browser context); DOM nodes are auto-serialized; promises are awaited, undefined fields become null |
eval @file / eval - | Read the expression from a file or stdin |
playwright | Execute Playwright API (Node.js context) |
screenshot | Take screenshot (saves to ~/.cssprobe-cli/screenshots/, --out to override) |
| Command | Description | |||
|---|---|---|---|---|
click | Real mouse click (auto-scroll + actionability wait; works with custom React components) | |||
hover | Real mouse hover | |||
type | Fill text (replaces value); --press Enter to submit; --sequential for real key events | |||
wait-for | Wait for selector state (`--state visible\ | hidden\ | attached\ | detached, --timeout ms`) |
wait-for --js " " | Wait until a JS predicate is truthy | |||
wait-for --network-idle | Wait until the page is network-idle (page-level; no --frame) | |||
wait-for ... --frame | Wait inside an iframe (selector/js modes) | |||
sample " " | Sample an expression over time (--interval, --duration, --key, --frame); returns timeline + summary | |||
wait-stable " " | Wait until an expression stops changing (--tolerance, --window, --timeout) | |||
run | Run a multi-step flow script |
click / hover support --nth N (1-based, default first match), --force (skip actionability checks) and --timeout ms. Without --nth, multiple matches fail (strict) to prevent wrong-target clicks.
| Command | Description |
|---|---|
state-import | Import cookies from Netscape format |
state-save | Save current browser session state (cookies + localStorage) |
state-check | Validate a state file: cookie count, expiry, target domain coverage (--state, --url) |
| Command | Description |
|---|---|
config-show | Show current config |
config-set | Set config value |
config-list | List all profiles |
config-use | Switch active profile |
config-new | Create new profile |
config-path | Show config file path |
The interaction commands drive a page step by step; run turns a sequence into a versionable script:
cssprobe-cli open https://example.com/editor
cssprobe-cli wait-for .editor-canvas cssprobe-cli click ".layout-switch" --nth 1 cssprobe-cli type ".block-title input" "Hello" --press Enter cssprobe-cli inspect .block-grid --json cssprobe-cli close
For repeatable flows, write a script and run it with one command. The script runs inside the daemon session (full Playwright page access):
// flow.js
export default async ({ page, context, frames, newPage, click, waitFor, type, inspect, screenshot, expect, log }) => { await page.goto('https://example.com/editor', { waitUntil: 'domcontentloaded' }); await waitFor('.editor-canvas', { state: 'visible', timeout: 10000 });
await click('.layout-switch', { nth: 1 }); await waitFor({ js: "() => document.body.dataset.layout === 'two-col'" });
await type('.block-title input', 'Hello', { press: 'Enter', sequential: true, clear: true }); await waitFor({ networkIdle: true });
const { findings } = await inspect('.block-grid', { format: 'json' }); log('findings:', findings.length); await screenshot({ path: './after-layout-switch.png' });
return { findings: findings.length }; };
cssprobe-cli run ./flow.js # --timeout ms for the whole script (default 300000, 0 = unlimited)
Scripts must default-export an async function receiving the API object: page, context, frames(), newPage(), click, hover, type, waitFor, inspect, screenshot, expect, log. waitFor accepts { state, timeout, frame }. Uncaught page errors are collected into the result envelope as pageErrors. screenshot relative paths resolve against the script's directory; logs (log() and console.*) are collected and returned with the result. On failure the command exits 1, prints the collected logs, and keeps the session alive.
Scripts are executed by the local daemon with full Node privileges — only run trusted scripts.
Run repeatable regression cases from a JSON suite: each case opens a fresh browser, executes steps, asserts on saved values, and writes artifacts + an optional JUnit report.
cssprobe-cli scenario run suites/ticket-26571394.json \
--state ~/.cssprobe-cli/states/preprod.json \ --artifacts out/ticket-26571394 \ --junit out/junit.xml
{
"name": "ticket 26571394 preprod", "defaults": { "viewport": { "width": 1280, "height": 800 } }, "cases": [ { "name": "refresh keeps the hash section align
冒頭だけを表示しています。続きはリポジトリで読めます