Browser-use MCP Client について
Browser-use MCP クライアントは、Server-Sent Events 経由で MCP サーバーに接続するReactアプリケーションで、チャット形式のインターフェースを備えています。ブラウザー操作の結果を確認したい利用者向けで、スクリーンショットのライブプレビューに対応しています。
主な機能
- 01SSE による MCP サーバーとのリアルタイム通信
- 02ライト・ダークテーマへの対応
- 03ブラウザーのスクリーンショットをライブプレビュー
- 04チャット履歴の保存とメッセージスレッド表示
- 05進行中のリクエストのキャンセルと履歴の消去
活用シーン
- 01ブラウザー自動化の MCP サーバーに接続して操作内容を確認する
- 02MCP サーバーから返されたスクリーンショットを表示する
- 03browser-use を用いた MCP サーバーの動作を検証する
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Browser-use MCP クライアント
Server-Sent Events(SSE)を通じて Model Context Protocol(MCP)サーバーとやり取りするための、使いやすいインターフェースを提供する最新の React アプリケーションです。
🎥 デモ
https://github.com/user-attachments/assets/52ab11ad-741f-4506-99ad-9f1972a3aad1
🚀 機能
- リアルタイム通信:MCP サーバーへの直接 SSE 接続
- インタラクティブな UI:React と Tailwind CSS で構築された、すっきりとしたレスポンシブなインターフェース
- テーマサポート:システム設定の検出機能を備えたライトモードとダークモード
- スクリーンショットプレビュー:MCP サーバーの応答からブラウザーのスクリーンショットをリアルタイム表示
- メッセージ履歴:メッセージのスレッドが明確な、永続的なチャット履歴
- リクエスト管理:処理中のリクエストのキャンセルとチャット履歴の消去
- 接続管理:サーバー接続を簡単に設定
📋 前提条件
- Node.js(v18 以降)
- pnpm(推奨パッケージマネージャー)
- 接続先として稼働中の MCP サーバー
- Python 3.8 以降(サンプルサーバーの実行用)
🚀 はじめに
-
リポジトリをクローンする
git clone <repository-url> cd browser-use-mcp-client -
依存関係をインストールする
pnpm install -
開発サーバーを起動する
pnpm dev -
プロキシサーバーを起動する
./proxy/index.js
アプリケーションは http://localhost:5173 で利用できます。
💻 使い方
🤖 MCP サーバーの例
以下は、ブラウザー自動化を使用する Python ベースの MCP サーバーの例です。
#!/usr/bin/env python3
import asyncio
from dotenv import load_dotenv
from typing import Awaitable, Callable
from mcp.server.fastmcp import FastMCP, Context
from browser_use import Agent, Browser, BrowserConfig
from langchain_google_genai import ChatGoogleGenerativeAI
# Load environment variables from .env file
load_dotenv()
# Initialize FastMCP server
mcp = FastMCP("browser-use")
browser = Browser(
config=BrowserConfig(
chrome_instance_path="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome --remote-debugging-port=9222",
headless=True
)
)
llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash")
agent = None
@mcp.tool()
async def perform_search(task: str, context: Context):
"""Perform the actual search in the background."""
async def step_handler(state, *args):
if len(args) != 2:
return
await context.session.send_log_message(
level="info",
data={"screenshot": state.screenshot, "result": args[0]}
)
asyncio.create_task(
run_browser_agent(task=task, on_step=step_handler)
)
return "Processing Request"
@mcp.tool()
async def stop_search(*, context: Context):
"""Stop a running browser agent search by task ID."""
if agent is not None:
await agent.stop()
return "Running Agent stopped"
async def run_browser_agent(task: str, on_step: Callable[[], Awaitable[None]]):
"""Run the browser-use agent with the specified task."""
global agent
try:
agent = Agent(
task=task,
browser=browser,
llm=llm,
register_new_step_callback=on_step,
register_done_callback=on_step,
)
await agent.run()
except asyncio.CancelledError:
return "Task was cancelled"
except Exception as e:
return f"Error during execution: {str(e)}"
finally:
await browser.close()
if __name__ == "__main__":
mcp.run(transport="sse")
🤝 貢献
- リポジトリをフォークする
- 機能ブランチを作成する
- 変更をコミットする
- ブランチにプッシュする
- プルリクエストを作成する
📄 ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。