Browser Use Mcp Server について
Browser Use MCP Server は、Puppeteer を基盤とする軽量なブラウザー自動化サーバーです。無障碍のスナップショットを通じて LLM がウェブページを操作し、既定ではスクリーンショットやビジョンモデルを必要としません。構造化データで把握しにくいレイアウトには、オプションのビジョンモードを利用できます。
主な機能
- 01無障碍データに基づく構造化されたページ操作
- 02複雑なレイアウト向けのオプションのビジョンモード
- 03HTTP ヘッダーによるビューポートと User-Agent の設定
- 04stdio、SSE、Streamable HTTP のトランスポート
- 05ローカル・リモートブラウザーと CDP エンドポイントへの対応
活用シーン
- 01LLM によるページ上のクリックやフォーム入力
- 02ページのテキスト、リンク、スクリーンショットの取得
- 03VNC 仮想ディスプレイ内でのブラウザー自動化
MCP 対応
browser_navigate、browser_click、browser_screenshot などのツールと、console://logs や screenshot:// などのリソースを MCP クライアントに提供します。MCP クライアントは stdio またはリモートエンドポイント経由で接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
21掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | はい |
詳細
Browser Use MCP Server
Puppeteer の構造化されたアクセシビリティデータを使って LLM にブラウザー自動化機能を提供する、高速で軽量な Model Context Protocol(MCP)サーバーです。複雑な視覚的理解に対応するオプションのビジョンモードと、柔軟なクロスプラットフォーム設定を備えています。
主な機能
- ⚡ 高速かつ軽量。ピクセルベースの入力ではなく、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"
]
}
}
}
同時に、--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-agent | User 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_navigate | URL に移動します | 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://logs | text/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');
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。