mcpField
B
Browser Use Mcp Server

Browser Use Mcp Server

ローカル
github.com/bytedanceブラウザ自動化39.4k3 週間前に更新

Browser Use Mcp Server について

Browser Use MCP Server は、Puppeteer を基盤とする軽量なブラウザー自動化サーバーです。無障碍のスナップショットを通じて LLM がウェブページを操作し、既定ではスクリーンショットやビジョンモデルを必要としません。構造化データで把握しにくいレイアウトには、オプションのビジョンモードを利用できます。

主な機能

  1. 01無障碍データに基づく構造化されたページ操作
  2. 02複雑なレイアウト向けのオプションのビジョンモード
  3. 03HTTP ヘッダーによるビューポートと User-Agent の設定
  4. 04stdio、SSE、Streamable HTTP のトランスポート
  5. 05ローカル・リモートブラウザーと CDP エンドポイントへの対応

活用シーン

  1. 01LLM によるページ上のクリックやフォーム入力
  2. 02ページのテキスト、リンク、スクリーンショットの取得
  3. 03VNC 仮想ディスプレイ内でのブラウザー自動化

MCP 対応

browser_navigate、browser_click、browser_screenshot などのツールと、console://logs や screenshot:// などのリソースを MCP クライアントに提供します。MCP クライアントは stdio またはリモートエンドポイント経由で接続します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"browser": {
"command": "npx",
"args": [
"-y",
"@agent-infra/mcp-server-browser"
],
"env": {
"DISPLAY": "<DISPLAY>"
}
}
}
}
起動コマンドnpx -y @agent-infra/mcp-server-browser
設定が必要な環境変数
DISPLAYDISPLAY environment variable for browser rendering

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@agent-infra/mcp-server-browserlatest

ツール

21

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
urlstringはい

詳細

Browser Use MCP Server

NPM Downloads smithery badge codecov

Install MCP Server VS Code にインストール VS Code Insiders にインストール

Puppeteer の構造化されたアクセシビリティデータを使って LLM にブラウザー自動化機能を提供する、高速で軽量な Model Context Protocol(MCP)サーバーです。複雑な視覚的理解に対応するオプションのビジョンモードと、柔軟なクロスプラットフォーム設定を備えています。

README の画像

主な機能
  • ⚡ 高速かつ軽量。ピクセルベースの入力ではなく、Puppeteer のラベルインデックスとアクセシビリティ DOM ツリーを利用します。
  • 👁️ ビジョンモードに対応。構造化データだけでは不十分な複雑なレイアウトや視覚要素に対して、オプションで視覚的理解機能を利用できます。
  • 🤖 LLM に最適化。ビジョンモデルを必要とせず、構造化データのみで動作するため、コンテキストが少なく、コンテキストトークンの使用量を抑えられます。
  • 🧩 柔軟なランタイム設定。HTTP ヘッダーを使って、ビューポートサイズ、座標系の係数、User-Agent を実行時にカスタマイズできます。
  • 🌐 クロスプラットフォーム対応と拡張性。リモートおよびローカルブラウザーに対応し、カスタムブラウザーエンジンも使用できます。
要件
  • Node.js 18 以降
  • VS Code、Cursor、Windsurf、Claude Desktop、またはその他の MCP クライアント
はじめに
ローカル(Stdio)

まず、お使いのクライアントに Browser MCP サーバーをインストールします。一般的な設定は次のとおりです。

{
  "mcpServers": {
    "browser": {
      "command": "npx",
      "args": [
        "@agent-infra/mcp-server-browser@latest"
      ]
    }
  }
}
VS Code にインストール

VS Code CLI を使って Browser MCP サーバーをインストールすることもできます。

# For VS Code
code --add-mcp '{"name":"browser","command":"npx","args":["@agent-infra/mcp-server-browser@latest"]}'

インストール後、VS Code の GitHub Copilot エージェントで Browser MCP サーバーを使用できるようになります。

Cursor にインストール

Cursor Settings -> MCP -> Add new MCP Server に移動します。任意の名前を付け、command タイプを選択して、コマンドに npx @agent-infra/mcp-server-browser を指定します。Edit をクリックすると、設定の確認やコマンド引数の追加もできます。

{
  "mcpServers": {
    "browser": {
      "command": "npx",
      "args": [
        "@agent-infra/mcp-server-browser@latest"
      ]
    }
  }
}
Windsurf にインストール

Windsurf MCP のドキュメントに従ってください。次の設定を使用します。

{
  "mcpServers": {
    "browser": {
      "command": "npx",
      "args": [
        "@agent-infra/mcp-server-browser@latest"
      ]
    }
  }
}
Claude Desktop にインストール

MCP のインストールガイドに従い、次の設定を使用してください。

{
  "mcpServers": {
    "browser": {
      "command": "npx",
      "args": [
        "@agent-infra/mcp-server-browser@latest"
      ]
    }
  }
}
#### リモート(SSE / Streamable HTTP)

同時に、--port $your_port 引数を指定して起動すると、ブラウザー MCP を SSE および Streamable HTTP サーバーに変換できます。

# normal run remote mcp server
npx @agent-infra/mcp-server-browser --port 8089

# run with DISPLAY environment for VNC or other virtual display
DISPLAY=:0 npx @agent-infra/mcp-server-browser --port 8089

次のいずれかの MCP サーバーのリモートエンドポイントを使用できます。

  • Streamable HTTP(推奨):http://127.0.0.1::8089/mcp
  • SSE:http://127.0.0.1::8089/sse

次に、MCP クライアントの設定で、url に SSE エンドポイントを設定します。

{
  "mcpServers": {
    "browser": {
      "url": "http://127.0.0.1::8089/sse"
    }
  }
}

Streamable HTTP の場合は、url を次のように設定します。

{
  "mcpServers": {
    "browser": {
      "type": "streamable-http", // If there is MCP Client support
      "url": "http://127.0.0.1::8089/mcp"
    }
  }
}
インメモリ呼び出し

MCP クライアントが JavaScript / TypeScript ベースで開発されている場合、インプロセス呼び出しを直接使用することで、Browser MCP を利用するためにユーザーがコマンドラインインターフェースをインストールする必要がなくなります。

import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js';

// type: module project usage
import { createServer } from '@agent-infra/mcp-server-browser';
// commonjs project usage
// const { createServer } = await import('@agent-infra/mcp-server-browser')

const client = new Client(
  {
    name: 'test browser client',
    version: '1.0',
  },
  {
    capabilities: {},
  },
);

const server = createServer();
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();

await Promise.all([
  client.connect(clientTransport),
  server.connect(serverTransport),
]);

// list tools
const result = await client.listTools();
console.log(result);

// call tool
const toolResult = await client.callTool({
  name: 'browser_navigate',
  arguments: {
    url: 'https://www.google.com',
  },
});
console.log(toolResult);
設定

Browser MCP サーバーでは、次の引数をサポートしています。上記の JSON 設定で、"args" リストの一部として指定できます。

> npx @agent-infra/mcp-server-browser@latest -h
  -V, --version              output the version number
  --browser <browser>        browser or chrome channel to use, possible values: chrome, edge, firefox.
  --cdp-endpoint <endpoint>  CDP endpoint to connect to, for example "http://127.0.0.1:9222/json/version"
  --ws-endpoint <endpoint>   WebSocket endpoint to connect to, for example "ws://127.0.0.1:9222/devtools/browser/{id}"
  --executable-path <path>   path to the browser executable.
  --headless                 run browser in headless mode, headed by default
  --host <host>              host to bind server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
  --port <port>              port to listen on for SSE and HTTP transport.
  --proxy-bypass <bypass>    comma-separated domains to bypass proxy, for example ".com,chromium.org,.domain.com"
  --proxy-server <proxy>     specify proxy server, for example "http://myproxy:3128" or "socks5://myproxy:8080"
  --user-agent <ua string>   specify user agent string
  --user-data-dir <path>     path to the user data directory.
  --viewport-size <size>     specify browser viewport size in pixels, for example "1280, 720"
  --output-dir <path>        path to the directory for output files
  --vision                   Run server that uses screenshots (Aria snapshots are used by default)
  -h, --help                 display help for command
ランタイム設定

ブラウザーのランタイムでは、Viewport Size、Vision Model Coordinate Factors、User Agent の設定が必要です。これらは、対応する HTTP ヘッダーで指定できます。

ヘッダー説明
x-viewport-sizeブラウザーのビューポートサイズ。カンマ区切りの形式:width,height
x-vision-factorsビジョンモデルの座標系の係数。カンマ区切りの形式:x_factor,y_factor
x-user-agentUser Agent 文字列。指定しない場合は、システムの User Agent がデフォルトで使用されます

注記: ヘッダー名では大文字と小文字が区別されません。

例:

x-viewport-size: 1920,1080
x-vision-factors: 1.0,1.0
x-user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Docker

VNC と MCP のデプロイを単一の URL エンドポイントに統合しました。Dockerfile と DockerHub イメージは同時に公開されます! 動画

API
ツール
ツール名説明パラメーター
browser_clickページ上の要素をクリックします。このツールを使用する前に、browser_get_clickable_elements を使用して要素のインデックスを取得してください。ただし、browser_get_clickable_elements を複数回呼び出さないでくださいindex(number、optional):クリックする要素のインデックス
browser_closeタスクが完了し、ブラウザーが不要になったときにブラウザーを閉じます
browser_close_tab現在のタブを閉じます
browser_evaluateブラウザーのコンソールで JavaScript を実行しますscript(string、required):実行する JavaScript コード、() => { /* code */ }
browser_form_input_fill入力フィールドに入力します。このツールを使用する前に、'index' または 'selector' のいずれかを指定してくださいselector(string、optional):入力フィールドの CSS セレクター。優先して index を使用し、index が指定されていない場合は selector を使用してください
index(number、optional):入力する要素のインデックス
value(string、required):入力する値
clear(boolean、optional):入力前に既存のテキストを消去するかどうか
browser_get_clickable_elements現在のページ上でクリック、ホバー、または選択できる要素を取得します。このツールを複数回呼び出さないでください
browser_get_download_listダウンロードしたファイルの一覧を取得します
browser_get_markdown現在のページの Markdown コンテンツを取得します
browser_get_text現在のページのテキストコンテンツを取得します
browser_go_back前のページに戻ります
browser_go_forward次のページに進みます
browser_hoverページ上の要素にホバーします。'index' または 'selector' のいずれかを指定してくださいindex(number、optional):ホバーする要素のインデックス
selector(string、optional):ホバーする要素の CSS セレクター
browser_navigateURL に移動しますurl(string、required):
browser_new_tab新しいタブを開きますurl(string、required):新しいタブで開く URL
browser_press_keyキーボードのキーを押しますkey(string、required):押すキーの名前、または生成する文字。Enter、Tab、Escape、Backspace、Delete、Insert、F1、F2、F3、F4、F5、F6、F7、F8、F9、F10、F11、F12、ArrowLeft、ArrowRight、ArrowUp、ArrowDown、PageUp、PageDown、Home、End、ShiftLeft、ShiftRight、ControlLeft、ControlRight、AltLeft、AltRight、MetaLeft、MetaRight、CapsLock、PrintScreen、ScrollLock、Pause、ContextMenu など
browser_read_links現在のページ上のすべてのリンクを取得します
browser_screenshot現在のページまたは特定の要素のスクリーンショットを撮影しますname(string、optional):スクリーンショットの名前
selector(string、optional):スクリーンショットを撮影する要素の CSS セレクター
index(number、optional):スクリーンショットを撮影する要素のインデックス
width(number、optional):幅(ピクセル単位。デフォルト:ビューポートの幅)
height(number、optional):高さ(ピクセル単位。デフォルト:ビューポートの高さ)
fullPage(boolean、optional):ページ全体のスクリーンショット(デフォルト:false)
highlight(boolean、optional):要素を強調表示するかどうか
browser_scrollページをスクロールしますamount(number、optional):スクロールするピクセル数(正の値で下方向、負の値で上方向)。amount が指定されていない場合は、ページの最下部までスクロールします
browser_selectインデックスを指定してページ上の要素を選択します。'index' または 'selector' のいずれかを指定してくださいindex(number、optional):選択する要素のインデックス
selector(string、optional):選択する要素の CSS セレクター
value(string、required):選択する値
browser_switch_tab指定したタブに切り替えますindex(number、required):切り替え先のタブのインデックス
browser_tab_listタブの一覧を取得します
browser_vision_screen_captureビジョンモード用に現在のページのスクリーンショットを撮影します
browser_vision_screen_clickビジョンとスナップショットを使用して、ページ上をマウスの左ボタンでクリックします。このツールを呼び出す前に、まず browser_vision_screen_capture を一度だけ呼び出してください。失敗した場合は browser_click にフォールバックしますfactors(array、optional):ビジョンモデルの座標系のスケーリング係数 [width_factor, height_factor]。座標空間を正規化するために使用します。変換式:x = (x_model * screen_width * width_factor) / width_factor y = (y_model * screen_height * height_factor) / height_factor。ここで、x_model と y_model は正規化されたモデル出力座標(0-1)、screen_width と screen_height は画面の寸法、width_factor と height_factor は量子化係数です。係数が不明な場合は空欄のままにしてください。ほとんどのモデルではこのパラメーターは不要です。
x(number、required):X ピクセル座標
y(number、required):Y ピクセル座標
リソース
リソース名URI パターン説明MIME タイプ
ブラウザーのコンソールログconsole://logstext/plain
ブラウザーのダウンロードdownload://{name}ファイル拡張子に基づく自動判別
ブラウザーのスクリーンショットscreenshot://{name}ファイル拡張子に基づく自動判別
開発

http://127.0.0.1:6274/ にアクセスします:

npm run dev
拡張 CLI エントリーポイント
#!/usr/bin/env node

const {
  BaseLogger,
  setConfig,
  addMiddleware,
} = require('@agent-infra/mcp-server-browser/request-context');

class CustomLogger extends BaseLogger {
  info(...args) {
    console.log('custom');
    console.log(...args);
  }
}

addMiddleware((req, res, next) => {
  console.log('req', req.headers);
  next();
});

setConfig({
  logger: new CustomLogger(),
});

// start server
require('@agent-infra/mcp-server-browser/index');

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。