Safari MCPサーバー入門2026|使い方とできること
目次
先週、Claude CodeでWebアプリのレイアウト崩れを直していたとき、スクリーンショットを撮るためだけに別のMCPサーバーを立ち上げていた。7月1日にAppleが公開したSafari MCPサーバーを使えば、その一手間がまるごと消える。
Safari Technology Preview 247に同梱される形で登場したこの機能は、safaridriverコマンド1つでClaude CodeやCursorとSafariを直接つなぐ。DOMの中身もコンソールログもネットワークリクエストも、AIエージェントがターミナルから覗ける。
この記事の要点
- Safari MCPサーバーはmacOS標準の
safaridriverコマンドが本体で、追加インストールなしでClaude Code・Cursorに接続できる - 16種類のツールでDOM取得・コンソールログ・ネットワーク監視・スクリーンショットまでSafari実機で検証できる
- 同名の非公式サードパーティ製ツールが複数存在し、ログイン状態の保持可否など挙動が異なるため区別が必須
Safari MCPサーバーとは何か
AppleがSafari Technology Preview 247で配布を始めた、コーディングエージェント向けの公式MCPサーバーだ。WebKitチームの公式ブログによれば、既存のsafaridriverにMCPプロトコル対応が組み込まれており、追加パッケージなしでAIエージェントとSafariを橋渡しする。9to5MacやMacRumorsも2026年7月1日付でこの機能追加を報じている。
MCPの基礎はこちらに譲る。2024年11月にAnthropicが公開して以来、2026年時点で全世界に1万4000件以上のMCPサーバーが公開されている規格だ。Safari MCPサーバーは、そのプロトコルにSafari実機を直接つなぐ実装の1つに過ぎない。
プライバシー設計が際立つ。自動化用のウィンドウは既存の閲覧履歴・保存パスワード・Cookieに触れない。処理はすべてローカルで完結し、Appleのサーバーには何も送られない。
対応する16個のツールを一覧で見る
できることを一言でまとめると、ページの中身を読む・操作する・裏側を覗くの3系統に分かれる。
| 系統 | 主なツール | できること |
|---|---|---|
| タブ操作 | navigate_to_url, create_tab, close_tab, switch_tab, list_tabs | URLを開く、タブの作成・切り替え・一覧取得 |
| ページ取得 | get_page_content, page_info, screenshot | HTML/テキストの取得、ページ情報の確認、画面キャプチャ |
| 操作 | page_interactions(click / type / scroll / hover / keyPress) | クリック・入力・スクロール・ホバー・キー入力 |
| デバッグ | browser_console_messages, evaluate_javascript, browser_dialogs | コンソールログの取得、JS実行、ダイアログ処理 |
| ネットワーク | list_network_requests, get_network_request | 通信の一覧取得、個別リクエストの詳細確認 |
| 環境エミュレーション | set_viewport_size, set_emulated_media, wait_for_navigation | 画面サイズ変更、ダークモード等のメディア切り替え、遷移待機 |
16という数字は、ブラウザ操作という1用途に絞り込んだ結果だ。AIエージェントは余計なツールに迷わず、狙った操作を選べる。
セットアップ手順
結論から書くと、必要な作業は3つだけ。Technology Previewの導入、開発者向け設定の有効化、そしてMCPクライアント側への登録だ。
Safari Technology Previewを導入する
Apple公式サイトからSafari Technology Preview 247をダウンロードしてインストールする。対応OSはmacOS SequoiaとmacOS Tahoe。通常版のSafariとは別アプリとして共存するので、普段使いのブラウザ環境を汚す心配はいらない。
開発者向け設定を有効にする
インストール後、設定を2箇所いじる。
Safari Settings > Advanced > Show features for web developersをオンにするSafari Settings > Developer > Enable remote automation and external agentsをオンにする
この2つを見落とすと、あとの接続コマンドが通ってもsafaridriverがエージェントからの接続要求を拒否する。地味だが、ここでつまずく人が一番多いはずだ。
Claude Codeに接続する
ターミナルで1行叩くだけで登録が終わる。
claude mcp add safari-mcp-stp -- "/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver" --mcp
中身はClaude Codeにsafaridriver --mcpを外部プロセスとして登録しているだけだ。Playwright MCPをclaude mcp add playwright -- npx -y @playwright/mcp@latestで足すのと同じ流れなので、すでにMCPサーバーを1つでも入れたことがあれば迷わない。
Cursorに接続する
Cursorはコマンド1発ではなく、設定ファイルへの追記になる。プロジェクト直下の.cursor/mcp.jsonに以下を足す。
{
"mcpServers": {
"safari-mcp-stp": {
"command": "/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver",
"args": ["--mcp"]
}
}
}
保存してCursorを再起動すれば、MCPパネルにsafari-mcp-stpが緑色で並ぶ。ここが赤いままなら、先述の開発者向け設定の見落としを疑ったほうが早い。
つまずきポイント
パスに含まれる半角スペース(Safari Technology Preview.app)をエスケープし忘れて接続に失敗するケースが目立つ。ターミナルにコピペする際は、パス全体をダブルクオートで囲んだままにしておく。
実際に使ってみる
セットアップが終わったら、Claude Codeに投げるだけで動く。試したのは、自分のブログ記事の表示崩れを追う作業だった。
Safari MCPでhttps://example.comを開いて、
コンソールエラーとネットワークで404になっているリクエストを教えて
体感で約5秒後、Claude Codeがnavigate_to_urlでページを開き、browser_console_messagesでエラーを拾い、list_network_requestsで失敗したリクエストを絞り込んで返してきた。自分でDevToolsを開いてNetworkタブを漁る手順を、丸ごと肩代わりしてくれる。
正直なところ、ここまで待たされないとは思わなかった。Chrome DevTools MCPを使っていたときは初回接続に数秒のラグを感じていたが、safaridriverはOS標準プロセスな分、起動が軽い。
何に効くか、体感で言うと
一番効いたのは、Safari固有のレイアウト崩れの再現だ。Chromeでは問題ないのに、Safariだけflexboxの挙動がずれるケースは珍しくない。これまでは実機かシミュレータを別途立ち上げて確認していたが、Claude Codeに直接見てもらえるようになった分、行き来する手間が消えた。
レスポンシブ崩れの確認
set_viewport_sizeでスマホ幅に切り替え、screenshotで崩れている箇所を撮る。CSSの修正案までその場でClaude Codeに聞ける。
フォーム動作のデバッグ
フォームのバリデーションが動かないとき、page_interactionsで入力とクリックを再現させる。原因はbrowser_console_messagesの1行で大体わかる。
公式版と非公式版を混同しない
検索すると「Safari MCP」を名乗るツールが複数出てくる。ここを混同すると挙動の違いに戸惑うので、先に整理しておく。
| 項目 | 公式(safaridriver --mcp) | 非公式(AppleScript系) |
|---|---|---|
| 提供元 | Apple(WebKitチーム) | サードパーティ(OSSリポジトリ) |
| 動作方式 | WebDriver分離。専用の自動化ウィンドウで起動 | AppleScriptで既存のSafariウィンドウを直接操作 |
| ログイン状態 | 保持しない(Cookie・パスワード非対応) | 保持する(ログイン済みセッションをそのまま使える) |
| インストール | 不要(OS標準コマンド) | 別途npmパッケージ等の導入が必要 |
認証が必要な社内ツールをそのまま覗きたいなら非公式版に軍配が上がる場面もある。ただし、Appleの公式サポートを受けられるのはsafaridriver --mcpだけだ。この記事はこちらを軸に書いている。
名前が同じでも別物
GitHub等で見つかる非公式の「safari-mcp」は個人開発のOSSであり、Appleの公式リポジトリとは無関係のことが多い。READMEの配布元を必ず確認してから導入する。
Playwright MCP・Chrome DevTools MCPとの違い
ブラウザ操作系のMCPはすでに乱立している。どれを選ぶかは、対象ブラウザと用途で決まる。
Safari MCP
対象: Safari実機
WebKit固有の表示崩れ検証に強い。macOS限定でインストール不要。
Playwright MCP
対象: Chrome / Firefox / WebKit
クロスブラウザで動く。毎回クリーンなプロファイルで起動する点はSafari MCPと共通。
Chrome DevTools MCP
対象: Chromeのみ
Core Web Vitalsやパフォーマンストレースの取得が強い。速度改善が主目的ならこちら。
3つとも同時に入れて共存させても問題は起きない。普段の開発ではPlaywright MCPをメインにしつつ、Safari特有の不具合が出たときだけSafari MCPに切り替える、という使い分けが現実的だ。
どんな場面で効くか
向いているのは、Safari固有の不具合調査とiOS/iPadOS向けWebサイトの検証だ。逆に、Chrome前提の自動テストパイプラインをまるごと置き換える用途には向かない。
Safari固有バグの再現
position: stickyの挙動やdate inputの表示崩れなど、WebKitレンダリング特有の不具合はSafari実機でしか正確に再現できない。エージェント経由でスクリーンショットとDOM構造を同時に取得できるので、原因の切り分けが速い。
ステージング環境の目視チェック代行
デプロイ後、主要リンクの200チェックに使っていた時間は5分から実質ゼロになった。認証不要な公開ページなら、AIエージェントに「トップページの主要リンクが全部200を返すか確認して」と投げるだけで済む。他のエージェントフレームワークのCIジョブに組み込む発展形も考えられる。
制限事項と注意点
- Safari Technology Preview限定。安定版Safariにはまだ搭載されていない
- macOS専用。WindowsやLinuxでは動かない
- 同時に動かせる自動化セッションは1つ(WebDriver分離モデルの制約)
- 保存パスワード・Cookie・閲覧履歴にアクセスできないため、ログインが必要なページの検証は別途手当てがいる
- Bot対策やレート制限のあるステージング環境では、想定通りに動かないことがある
ログインが必要なページを見たいときは
社内の認証済み管理画面を検証しようとして、ここで一度詰まった。公式版は毎回クリーンなウィンドウで起動するため、ログイン状態を渡す手段がない。もったいないと感じるのはここで、この場面だけは非公式のAppleScript系ツールか、既存のPlaywright MCPのログイン保持オプションに軍配が上がる。
よくあるつまずき
Technology Previewを複数バージョンインストールしたままだと、safaridriverのパスがずれて接続エラーになる。アップデート時は古いバージョンを消してから入れ直すと事故が少ない。
よくある質問
Q. 通常版のSafariでも使えますか
2026年7月時点では使えない。Safari Technology Preview限定の機能で、安定版への搭載時期はAppleから明言されていない。
Q. Windowsでも動きますか
動かない。safaridriverがmacOS専用バイナリだからだ(詳細は制限事項を参照)。
Q. Claude Code以外のツールからも使えますか
使える。MCP対応クライアントであれば接続方法は共通で、CursorやWindsurfなど任意のMCPクライアントから同じsafaridriver --mcpをそのまま登録すればいい。実際、Windsurf側の設定に足したときは3分もかからなかった。
Q. 料金はかかりますか
かからない。
まとめ
Safari MCPサーバーは、既存のsafaridriverにMCP対応を足しただけの地味な機能に見える。だが、追加インストールなしでSafari実機をAIエージェントに渡せる手軽さは、WebKit固有の不具合を追うエンジニアにとって効果が大きい。
まずclaude mcp add safari-mcp-stp -- "/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver" --mcpを叩いて、手元のサイトのコンソールエラーを拾わせてみるところから試すといい。