mcpField
S
Safari Devtools Mcp

Safari Devtools Mcp

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

Safari Devtools Mcp について

Safari DevTools MCP は、macOS 上で動作する Safari を調査、デバッグ、自動化するためのコーディングエージェント向け MCP サーバーです。WebDriver によるブラウザー制御に加え、ネットワーク、DOM、CSS、ストレージ、タブを調べられます。

主な機能

  1. 01コンソールとネットワークの調査
  2. 02安定した UID 付き DOM スナップショット
  3. 03CSS スタイルとストレージの管理
  4. 04Safari のタブとページの制御
  5. 05フォーム、キー、ポインターの自動操作
  6. 06iOS Safari の対応状況チェック

活用シーン

  1. 01ページエラーと通信応答の診断
  2. 02Safari を使ったページテストの自動化
  3. 03CSS とアクセシビリティ構造の調査
  4. 04モバイル Safari 互換性の確認

MCP 対応

stdio 経由で、Safari のデバッグ・自動化ツールとガイド付きプロンプトを MCP クライアントに公開します。クライアントから実行中の Safari セッションを調査、操作できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"safari-devtools": {
"command": "npx",
"args": [
"-y",
"safari-devtools-mcp"
]
}
}
}
起動コマンドnpx -y safari-devtools-mcp

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

パッケージ
npmsafari-devtools-mcp1.8.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Safari DevTools MCP

npm version npm downloads license node

safari-devtools-mcp を使うと、コーディングエージェント(Claude、Cursor、Copilot、Gemini など)が macOS 上で実行中の Safari ブラウザーを操作し、調査できます。Model-Context-Protocol(MCP)サーバーとして機能し、デバッグ、自動化、テストのために、AI コーディングアシスタントから Safari DevTools にアクセスできるようにします。

Chrome の開発者は、Google の chrome-devtools-mcp を使って、強力な AI デバッグ機能を利用できます。Safari の開発者にも同等のものが必要です。このプロジェクトは、同じツール名とパラメータースキーマを備えた同様のエクスペリエンスを Safari に提供するため、ブラウザー間を最小限の手間で切り替えられます。

変更履歴 | コントリビューション

注: このサーバーは、ブラウザーのコンテンツ(ページデータ、コンソールログ、ネットワークトラフィック)を MCP クライアントに公開します。セッション中は、機密性の高いウェブサイトの閲覧や認証情報の入力を避けてください。

safari-devtools-mcp を選ぶ理由

このプロジェクトでは、スクリプトだけでは実現できない機能に WebDriver を使用しています。

  • ネットワークリクエスト/レスポンスボディの取得 — fetch と XHR の呼び出しを、完全なヘッダー、ペイロード、タイミング情報とともにインターセプトします
  • アクセシビリティツリーによる DOM スナップショット — 壊れやすい CSS セレクターではなく、ページの再レンダリング後も維持される安定した要素 UID を使用します
  • CSS の計算済みスタイルの調査 — 任意の要素から、任意の計算済みプロパティを読み取れます
  • Cookie とストレージの管理 — Cookie、localStorage、sessionStorage の読み取り、書き込み、削除ができます
  • 要素単位のスクリーンショット — ビューポート全体だけでなく、個々の要素をキャプチャできます
  • セッションの自動復旧 — SafariDriver のセッションが終了したことを検知し、透過的に再接続します

主な機能

  • ブラウザーデバッグ:コンソールログの取得、ネットワークリクエストの調査、JavaScript の評価を、スタックトレースやリクエスト/レスポンスの詳細情報とともに行えます。
  • 信頼性の高い自動化:アクセシビリティツリーのスナップショットと安定した UID を使って、クリック、入力、フォームへの入力、ドラッグ&ドロップ、キーボードショートカットの実行ができます。
  • macOS とのネイティブ連携:AppleScript を使って、複数のウィンドウにまたがる Safari タブの一覧表示、切り替え、操作を行えます

要件

  • macOS(Safari と SafariDriver は Apple 専用です)
  • Node.js 18 以降(22 以降を推奨)
  • リモートオートメーションを有効にした Safari
Safari のセットアップ
  1. Safari > 設定 > 詳細を開き、**「Web開発者向けの機能を表示」**にチェックを入れます
  2. 開発メニュー > **「リモートオートメーションを許可」**にチェックを入れます
  3. SafariDriver を承認します:
    sudo safaridriver --enable
    

はじめに

標準の MCP 設定:

{
  "mcpServers": {
    "safari-devtools": {
      "command": "npx",
      "args": ["-y", "safari-devtools-mcp@latest"]
    }
  }
}
Claude Code
claude mcp add safari-devtools -- npx -y safari-devtools-mcp@latest

または、上記の標準設定を使用して、プロジェクトの .mcp.json に追加します。

Claude Desktop

標準設定を ~/Library/Application Support/Claude/claude_desktop_config.json に追加します。

Cursor

Cursor の MCP 設定に標準設定を追加します。

VS Code

標準設定を .vscode/mcp.json に追加します。

Copilot CLI
copilot mcp add safari-devtools -- npx -y safari-devtools-mcp@latest
Gemini CLI
gemini mcp add safari-devtools -- npx -y safari-devtools-mcp@latest

または、標準設定を ~/.gemini/settings.json に追加します。

Gemini Code Assist

プロジェクトのルートにある .gemini/settings.json に標準設定を追加します。

JetBrains AI Assistant & Junie

プロジェクトのルートにある .junie/mcp.json に標準設定を追加します。

Raycast

Raycast で「Install MCP Server」を開き、次の内容を入力します:

  • コマンド:npx
  • 引数:-y safari-devtools-mcp@latest

または、コマンドを開く前に上記の標準設定 JSON をコピーすると、Raycast がフォームに自動入力します。

Visual Studio

ソリューションのルートにある .vs/mcp.json に標準設定を追加します。

Warp

~/.warp/mcp.json にある Warp の MCP 設定ファイルに標準設定を追加します。

ソースからビルド
git clone https://github.com/HayoDev/safari-devtools-mcp.git
cd safari-devtools-mcp
npm install && npm run build

次に、ビルドしたエントリーポイントを MCP クライアントに指定します:

{
  "mcpServers": {
    "safari-devtools": {
      "command": "node",
      "args": [
        "/path/to/safari-devtools-mcp/build/src/bin/safari-devtools-mcp.js"
      ]
    }
  }
}
最初のプロンプト

https://example.com に移動し、スナップショットを取得して、コンソールエラーを一覧表示してください。

スリムモード

ツールの説明を短くしてトークン使用量を削減するには、--slim を使用します。コンテキストが限られたモデルや長時間の会話で役立ちます:

{
  "mcpServers": {
    "safari-devtools": {
      "command": "npx",
      "args": ["-y", "safari-devtools-mcp@latest", "--slim"]
    }
  }
}

プロンプト(スキル)

このサーバーは、ガイド付きデバッグワークフローを MCP プロンプトとして提供します。プロンプトに対応したクライアント(例:Claude Desktop、Claude Code)では、名前を指定して呼び出せます:

プロンプト説明
safari-devtoolsはじめに — ツールの概要、推奨ワークフロー、Safari 固有の注意事項
a11y-debuggingアクセシビリティ監査 — a11y ツリーの検査、axe-core の注入、WCAG のチェック
safari-specific-debuggingWebKit の特有の問題をデバッグ — CSS プレフィックス、JS 機能の不足、ITP/CORS の問題
performance-debuggingパフォーマンス分析 — Navigation Timing、Core Web Vitals、リソースのウォーターフォール

ツール(45)

デバッグ
ツール説明
list_console_messagesレベル(log、warn、error)で絞り込んでコンソールメッセージを一覧表示します
get_console_messageスタックトレースと引数を含む詳細なメッセージを取得します
clear_consoleキャプチャしたすべてのコンソールメッセージを消去します
list_network_requestsネットワークリクエスト(Fetch、XHR、リソースの読み込み)を監視します
get_network_requestヘッダーと本文を含む、リクエストとレスポンスの詳細を取得します
clear_networkキャプチャしたすべてのネットワークリクエストを消去します
evaluate_scriptブラウザーのコンテキストで JavaScript を実行し、結果を返します
take_screenshotページまたは特定の要素の PNG スクリーンショットを撮影します
take_snapshot要素の指定に使える安定した UID を含む、DOM のアクセシビリティツリーのスナップショットを取得します
ページコンテンツ
ツール説明
get_page_contentページタイトル、URL、表示されているテキストコンテンツを取得します
get_html_sourceページの HTML ソース全体を取得します
extract_linksテキスト、href、rel 属性を含むすべてのリンクを抽出します
extract_metaメタタグ(og:、twitter:、description など)を抽出します
ナビゲーション
ツール説明
list_pagesすべてのウィンドウで開いている Safari のタブを一覧表示します
select_page特定のタブに切り替えます
new_page新しいタブを開き、URL に移動します
close_pageタブを閉じます
navigate_pageURL への移動、戻る、進む、再読み込みを行います
wait_forページに特定のテキストが表示されるまで待機します
resize_pageブラウザーウィンドウのサイズを変更します
handle_dialogブラウザーのダイアログ(alert、confirm、prompt)を承認または閉じます
スクロール
ツール説明
scroll指定した量だけ、任意の方向にページをスクロールします
scroll_to_elementUID で指定した要素が表示される位置までスクロールします
CSS の検査
ツール説明
get_computed_styleUID で指定した任意の要素の計算済み CSS スタイルを取得します
Cookie とストレージ
ツール説明
get_cookiesブラウザーの Cookie を取得します。名前またはドメインで絞り込むこともできます
set_cookie名前、値、および省略可能な属性を指定して Cookie を設定します
delete_cookie名前を指定して Cookie を削除するか、すべての Cookie を削除します
get_storagelocalStorage または sessionStorage からデータを読み取ります
set_storagelocalStorage または sessionStorage にキーと値のペアを書き込みます
delete_storagelocalStorage/sessionStorage のキーを削除するか、すべてのエントリーを消去します
入力の自動化
ツール説明
clickスナップショット内の UID を指定して要素をクリックします
click_at指定した x/y 座標をクリックします
right_click要素を右クリックします(コンテキストメニュー)
select_option値またはラベルを指定して、ドロップダウンから項目を選択します
hover要素にカーソルを合わせます
fill入力フィールドに入力するか、ドロップダウンから選択します
fill_form複数のフォームフィールドに一度に入力します
type_text現在フォーカスされている要素にテキストを入力します
drag要素間または座標間でドラッグ&ドロップします
press_keyキーまたはキーの組み合わせ(例:Meta+A、Enter)を押します
upload_fileファイル入力からファイルをアップロードします
iOS Safari の検証
ツール説明
inspect_viewport_metaビューポートのメタタグを解析し、iOS のベストプラクティス(幅、ズーム、viewport-fit)に照らして検証します
get_safe_area_insetsCSS の safe-area-inset 値を読み取り、ノッチ付きデバイスにページが正しく対応しているか確認します
check_ios_web_app_readinessホーム画面への追加/PWA 対応状況(apple-touch-icon、manifest、スプラッシュ画面、ステータスバー)を監査します
check_webkit_compatibilityCSS.supports() を使って、実際の Safari セッションでページの CSS を確認します

アーキテクチャ

MCP Client (Claude, Cursor, etc.)
    | stdio (MCP protocol)
    v
Safari DevTools MCP Server
    |
    v
+-------------------------------+
|  SafariDriver                 |
|  +-- Selenium WebDriver       | <-- Browser automation
|  +-- JS Injection             | <-- Console/Network capture
|  +-- AppleScript (osascript)  | <-- Native tab management
+-------------------------------+
    |
    v
Safari Browser

既知の制限事項

  • 単一セッション:Safari で同時に使用できる WebDriver セッションは 1 つのみです。複数のインスタンスを実行することはできません。
  • macOS のみ:Safari と SafariDriver は Apple 専用のため、このサーバーは Linux や Windows では動作しません。
  • ヘッドレスモード非対応:Safari はヘッドレス動作をサポートしていません。ブラウザーウィンドウを表示する必要があります。
  • コンソールの注入前の欠落:キャプチャスクリプトの注入前に記録されたコンソールメッセージはキャプチャされません。
  • ネットワークの注入前の欠落:注入前に行われたネットワークリクエストは、詳細が限定された状態(タイミングとサイズのみで、ヘッダーやステータスコードは含まれません)で Performance API 経由で補完されます。
  • PNG のみ:Safari WebDriver がサポートするスクリーンショット形式は PNG のみです。JPEG と WebP は利用できません。ページ全体のキャプチャには対応していません。
  • AppleScript の権限:タブ管理機能を使うには、osascript に対する macOS のアクセシビリティ権限が必要です。

クレジット

  • chrome-devtools-mcp(Google/ChromeDevTools 提供)— 本プロジェクトが手本とし、インターフェース標準として採用したプロジェクトです。Chrome と Safari をシームレスに切り替えられるよう、ツール名とスキーマは意図的に互換性を持たせています。
  • safari-mcp-server — Safari MCP 統合の先行事例として、開発中に参考にしました。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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