MCP Webブラウザサーバー
Playwright を搭載した Model Context Protocol (MCP) 用の高度な Web ブラウジング サーバーで、柔軟で安全な API を通じてヘッドレス ブラウザー インタラクションが可能になります。
🌐 特徴
ヘッドレスWebブラウジング:SSL証明書の検証をバイパスして任意のWebサイトに移動する
フルページコンテンツ抽出: 動的に読み込まれたJavaScriptを含む完全なHTMLコンテンツを取得します。
マルチタブサポート: 複数のブラウザタブを作成、管理、切り替え
高度なWebインタラクションツール:
テキストコンテンツを抽出する
ページ要素をクリック
フォームフィールドにテキストを入力する
スクリーンショットをキャプチャする
フィルタリング機能を使用してページリンクを抽出します
ページを任意の方向にスクロールします
ページでJavaScriptを実行する
ページを更新
ナビゲーションが完了するまでお待ちください
リソース管理: 非アクティブ後の未使用リソースの自動クリーンアップ
拡張ページ情報: 現在のページに関する詳細なメタデータを取得します
Related MCP server: Deepseek R1 MCP Server
🚀 クイックスタート
前提条件
Python 3.10以上
MCP SDK
劇作家
インストール
Claudeデスクトップの設定
claude_desktop_config.jsonに追加します:
💡 使用例
基本的なウェブナビゲーション
ウェブインタラクション
スクリーンショットキャプチャ
リンク抽出
マルチタブブラウジング
高度なインタラクション
🛡️ セキュリティ機能
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: オプションのコンテキストオブジェクト(現在は未使用)
🤝 貢献する
貢献を歓迎します!お気軽にプルリクエストを送信してください。
開発セットアップ
📄 ライセンス
MITライセンス
🔗 関連プロジェクト
💬 サポート
問題や質問については、GitHub で問題を開いてください。