MCP Webブラウザサーバー
Playwright を搭載した Model Context Protocol (MCP) 用の高度な Web ブラウジング サーバーで、柔軟で安全な API を通じてヘッドレス ブラウザー インタラクションが可能になります。
🌐 特徴
ヘッドレスWebブラウジング:SSL証明書の検証をバイパスして任意のWebサイトに移動する
フルページコンテンツ抽出: 動的に読み込まれたJavaScriptを含む完全なHTMLコンテンツを取得します。
マルチタブサポート: 複数のブラウザタブを作成、管理、切り替え
高度なWebインタラクションツール:
テキストコンテンツを抽出する
ページ要素をクリック
フォームフィールドにテキストを入力する
スクリーンショットをキャプチャする
フィルタリング機能を使用してページリンクを抽出します
ページを任意の方向にスクロールします
ページでJavaScriptを実行する
ページを更新
ナビゲーションが完了するまでお待ちください
リソース管理: 非アクティブ後の未使用リソースの自動クリーンアップ
拡張ページ情報: 現在のページに関する詳細なメタデータを取得します
Related MCP server: Cloudflare Playwright MCP
🚀 クイックスタート
前提条件
Python 3.10以上
MCP SDK
劇作家
インストール
# Install MCP and Playwright
pip install mcp playwright
# Install browser dependencies
playwright installClaudeデスクトップの設定
claude_desktop_config.jsonに追加します:
{
"mcpServers": {
"web-browser": {
"command": "python",
"args": [
"/path/to/your/server.py"
]
}
}
}💡 使用例
基本的なウェブナビゲーション
# Browse to a website
page_content = browse_to("https://example.com")
# Extract page text
text_content = extract_text_content()
# Extract text from a specific element
title_text = extract_text_content("h1.title")ウェブインタラクション
# Navigate to a page
browse_to("https://example.com/login")
# Input text into a form
input_text("#username", "your_username")
input_text("#password", "your_password")
# Click a login button
click_element("#login-button")スクリーンショットキャプチャ
# Capture full page screenshot
full_page_screenshot = get_page_screenshots(full_page=True)
# Capture specific element screenshot
element_screenshot = get_page_screenshots(selector="#main-content")リンク抽出
# Get all links on the page
page_links = get_page_links()
# Get links matching a pattern
filtered_links = get_page_links(filter_pattern="contact")マルチタブブラウジング
# Create a new tab
tab_id = create_new_tab("https://example.com")
# Create another tab
another_tab_id = create_new_tab("https://example.org")
# List all open tabs
tabs = list_tabs()
# Switch between tabs
switch_tab(tab_id)
# Close a tab
close_tab(another_tab_id)高度なインタラクション
# Scroll the page
scroll_page(direction="down", amount="page")
# Execute JavaScript on the page
result = execute_javascript("return document.title")
# Get detailed page information
page_info = get_page_info()
# Refresh the current page
refresh_page()
# Wait for navigation to complete
wait_for_navigation(timeout_ms=5000)🛡️ セキュリティ機能
SSL証明書検証バイパス
安全なブラウザコンテキスト管理
カスタムユーザーエージェント構成
エラー処理と包括的なログ記録
設定可能なタイムアウト設定
CSPバイパス制御
クッキー盗難防止
🔧 トラブルシューティング
よくある問題
SSL証明書エラー: 自動的にバイパスされます
ページの読み込みが遅い:
browse_to()メソッドのタイムアウトを調整する要素が見つかりません: セレクターを慎重に確認してください
ブラウザのリソース使用状況: 非アクティブ期間後の自動クリーンアップ
ログ記録
すべての重要なイベントは詳細な情報とともに記録され、デバッグが容易になります。
📋 ツールパラメータ
browse_to(url: str, context: Optional[Any] = None)
url: 移動するウェブサイトcontext: オプションのコンテキストオブジェクト(現在は未使用)
extract_text_content(selector: Optional[str] = None, context: Optional[Any] = None)
selector: 特定のコンテンツを抽出するためのオプションのCSSセレクターcontext: オプションのコンテキストオブジェクト(現在は未使用)
click_element(selector: str, context: Optional[Any] = None)
selector: クリックする要素のCSSセレクターcontext: オプションのコンテキストオブジェクト(現在は未使用)
get_page_screenshots(full_page: bool = False, selector: Optional[str] = None, context: Optional[Any] = None)
full_page: ページ全体のスクリーンショットをキャプチャするselector: スクリーンショットのオプション要素context: オプションのコンテキストオブジェクト(現在は未使用)
get_page_links(filter_pattern: Optional[str] = None, context: Optional[Any] = None)
filter_pattern: リンクをフィルタリングするためのオプションのテキストパターンcontext: オプションのコンテキストオブジェクト(現在は未使用)
input_text(selector: str, text: str, context: Optional[Any] = None)
selector: 入力要素のCSSセレクターtext: 入力するテキストcontext: オプションのコンテキストオブジェクト(現在は未使用)
create_new_tab(url: Optional[str] = None, context: Optional[Any] = None)
url: 新しいタブで移動するオプションのURLcontext: オプションのコンテキストオブジェクト(現在は未使用)
switch_tab(tab_id: str, context: Optional[Any] = None)
tab_id: 切り替えるタブのIDcontext: オプションのコンテキストオブジェクト(現在は未使用)
list_tabs(context: Optional[Any] = None)
context: オプションのコンテキストオブジェクト(現在は未使用)
close_tab(tab_id: Optional[str] = None, context: Optional[Any] = None)
tab_id: 閉じるタブのオプションID(デフォルトは現在のタブ)context: オプションのコンテキストオブジェクト(現在は未使用)
refresh_page(context: Optional[Any] = None)
context: オプションのコンテキストオブジェクト(現在は未使用)
get_page_info(context: Optional[Any] = None)
context: オプションのコンテキストオブジェクト(現在は未使用)
scroll_page(direction: str = "down", amount: str = "page", context: Optional[Any] = None)
direction: スクロールする方向('up'、'down'、'left'、'right')amount: スクロールする量(「page」、「half」、または数値)context: オプションのコンテキストオブジェクト(現在は未使用)
wait_for_navigation(timeout_ms: int = 10000, context: Optional[Any] = None)
timeout_ms: 最大待機時間(ミリ秒)context: オプションのコンテキストオブジェクト(現在は未使用)
execute_javascript(script: str, context: Optional[Any] = None)
script: 実行するJavaScriptコードcontext: オプションのコンテキストオブジェクト(現在は未使用)
🤝 貢献する
貢献を歓迎します!お気軽にプルリクエストを送信してください。
開発セットアップ
# Clone the repository
git clone https://github.com/random-robbie/mcp-web-browser.git
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows use `venv\Scripts\activate`
# Install dependencies
pip install -e .[dev]📄 ライセンス
MITライセンス
🔗 関連プロジェクト
💬 サポート
問題や質問については、GitHub で問題を開いてください。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/random-robbie/mcp-web-browser'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
