Selenium MCPをClaude Codeに繋ぐ — mcp-seleniumの導入手順
非公式のmcp-seleniumサーバーをClaude Codeに接続し、ブラウザ操作をエージェントに任せる手順と、Playwright MCPとの使い分けをまとめます。
SeleniumHQが配布する公式のMCPサーバーは見当たりません。個人開発者が公開するmcp-seleniumが、Claude CodeからSeleniumのブラウザ操作をMCP経由で呼び出せる、公開されている選択肢の1つです。パッケージ名は@angiejones/mcp-seleniumで、Chrome・Firefox・Edge・Safariの4ブラウザに対応します。
導入はclaude mcp add一行で終わりますが、コミュニティ製である以上、ベンダーのSLAに基づくサポートを前提にした運用はできません。すでにSelenium Grid資産を抱えているチームが、それを活かしたままAIエージェントに操作を任せたいときの選択肢として位置づけます。
mcp-seleniumとは何ができるか
mcp-seleniumは、Selenium WebDriverの操作をMCPツールとして公開するサーバーです。開発者はangiejones氏で、SonarSourceやCypressが提供するベンダー製のMCPとは違い、個人がGitHubで公開・保守するパッケージです。ライセンスはMIT。
エージェントに「Chromeを開いてgithub.com/angiejonesへ行き、スクリーンショットを撮って」と伝えるだけで、内部的にstart_browser・navigate・take_screenshotの各ツールが順に呼び出されます。手動でのスクリプト記述や、要素をどう探すかの明示的な指示は不要です。
対応ブラウザはChrome・Firefox・Edge・Safariの4つです。Safariのみ追加の準備が要り、macOS上でsudo safaridriver --enableを一度実行し、Safariの「開発」メニューから「リモートオートメーションを許可」を有効にする必要があります。ヘッドレスモードには対応していません。
ブラウザの起動はstart_browserツールが担い、browserパラメータにchrome・firefox・edge・safariのいずれかを指定します。optionsにはヘッドレス指定(headless: boolean)と、Chromeの起動引数を配列で渡すargumentsが用意されており、社内プロキシ経由でのアクセスや画面サイズ固定など、ブラウザ起動時の細かい調整はここで行います。
Claude Codeへの接続手順
npm経由でのインストールは不要で、claude mcp addがnpx経由でパッケージを都度取得します。
claude mcp add selenium -- npx -y @angiejones/mcp-selenium@latestCursor・Windsurfなど他のMCPクライアントを使う場合は、mcpServersブロックに以下を追加します。
{
"mcpServers": {
"selenium": {
"command": "npx",
"args": ["-y", "@angiejones/mcp-selenium@latest"]
}
}
}npx経由の起動を避けたい場合はnpm install -g @angiejones/mcp-seleniumでグローバルインストールし、mcp-seleniumコマンドで直接起動する方法もあります。MCPサーバーを一元管理するSmitheryを使っているなら、npx -y @smithery/cli install @angiejones/mcp-selenium --client claudeでも導入できます。
接続後は、要素の指定方法(ロケーター戦略)としてid・css・xpath・name・tag・classのいずれかをエージェントが状況に応じて選びます。人間がセレクタを都度指定する必要はなく、navigateでページ遷移した後はinteract(クリック)・send_keys(入力)・get_element_text(テキスト取得)のようなツールを組み合わせて操作します。
たとえばログインフォームなら、「メールアドレス欄にtest@example.comを入力してログインボタンを押して」と伝えるだけで、エージェントはsend_keysでby: "css"・value: "input[type=email]"のようなロケーターを自分で組み立てて実行します。要素の属性値(hrefやクラス名)を条件分岐に使いたい場合はget_element_attributeで個別に取得できるので、「このリンクのhref属性を見て、外部サイトかどうか判定して」のような指示にも対応できます。
各操作系ツールのtimeoutは既定10000ミリ秒です。press_keyのみキー入力自体にはタイムアウトが無く、alertは5000ミリ秒で、要素が現れるまでこの時間だけ待ってからエラーを返します。
使えるツールの全体像
用意されているツールは操作系・情報取得系・ブラウザ管理系におおむね分かれます。
| 分類 | 主なツール | できること |
|---|---|---|
| 操作 | 主なツールinteract / send_keys / press_key / upload_file | できることクリック・入力・キー送信・ファイルアップロード |
| 情報取得 | 主なツールget_element_text / get_element_attribute / take_screenshot | できることテキスト・属性・スクリーンショットの取得 |
| ウィンドウ / フレーム | 主なツールwindow / frame | できることタブ切り替え・iframe内への遷移 |
| ブラウザ状態 | 主なツールadd_cookie / get_cookies / alert | できることCookie操作・ダイアログ処理 |
| 診断 | 主なツールdiagnostics | できることWebDriver BiDi経由のコンソール・エラー・ネットワークログ取得 |
| 高度な操作 | 主なツールexecute_script | できることドラッグ&ドロップなど、標準ツールで対応できない操作をJavaScriptで直接実行 |
diagnosticsはWebDriver BiDiに対応しているブラウザで自動的に有効になり、コンソールログ・エラー・ネットワーク情報をconsole・errors・networkのいずれかで指定して取得します。フロントエンドのデバッグをブラウザ操作とセットでエージェントに任せたいときに使います。
フォーム操作では、send_keysが入力前にフィールドを自動でクリアするため、既存の入力値を消してから打ち直す手間を毎回指示する必要はありません。ファイルアップロード用のupload_fileはfilePathに絶対パスを渡す形式で、input要素へのドラッグ&ドロップ操作は代わりにexecute_scriptでJavaScriptを直接実行します。
ブラウザのconfirm・alert・promptダイアログはalertツールが担当し、accept(許可)・dismiss(キャンセル)・get_text(表示文言の取得)・send_text(prompt入力欄への入力)の4アクションを切り替えます。複数タブやiframeをまたぐ操作はwindow(タブの一覧・切り替え・クローズ)とframe(iframe内部への遷移とdefaultでの復帰)の2ツールが担い、frameはロケーターまたはインデックス指定のどちらでも切り替えられます。
アクセシビリティツリーで要素を素早く見つける
mcp-seleniumはツール呼び出しとは別に、MCPリソースとして2つの読み取り専用エンドポイントを公開します。browser-status://currentは現在アクティブなセッションIDの有無をプレーンテキストで返し、accessibility://currentは現在のページのアクセシビリティツリーをJSONのスナップショットとして返します。
アクセシビリティツリーは、ページのHTML全体を渡すよりもはるかに小さいコンパクトな構造化データで、インタラクティブな要素とテキストの位置関係を把握できます。エージェントが「ログインフォームのメールアドレス欄を探して」のような指示を実行する際、HTML全文を都度読み込ませるよりもコンテキスト消費を抑えられます。browser-status://currentのほうは軽量な確認用で、セッションが生きているかをツール呼び出しなしに素早く見るために使います。長時間のテストシナリオを組んでいて、途中でセッションが切れていないか確認したいときに向いています。
PlaywrightのMCPとどちらを選ぶか
同じブラウザ自動化のMCPとして、Microsoft製のPlaywright MCPがあります。新規にブラウザ自動化のMCPを導入するなら、開発元によるメンテナンスが続いていて活発なPlaywright MCPが第一候補です。
mcp-seleniumが選択肢になるのは、既存のSelenium Grid資産や、Seleniumでしか動かないレガシーな社内ツールをすでに抱えているケースです。WebDriverプロトコルへの依存を前提にした既存のインフラやテストコードを置き換えずに、AIエージェントからの操作だけを追加したい場合に向きます。WebDriverはW3Cで標準化されたプロトコルなので、複数言語のテストコードやCI基盤がすでにこのプロトコルの上に成り立っているなら、mcp-seleniumはその資産にAIエージェントを橋渡しするアダプタとして働きます。逆に、これから自動化基盤を新設するなら、既存資産への配慮は不要なのでPlaywright MCP側の判断材料(開発元のメンテナンス体制、アクセシビリティツリーの活用)がそのまま効いてきます。
| 観点 | mcp-selenium | Playwright MCP |
|---|---|---|
| 提供元 | mcp-selenium個人開発者(コミュニティ) | Playwright MCPMicrosoft製 |
| 対応ブラウザ | mcp-seleniumChrome / Firefox / Edge / Safari | Playwright MCPChromium系 / Firefox / WebKit |
| 既存資産との親和性 | mcp-seleniumSelenium Grid・WebDriver前提の環境 | Playwright MCP新規導入、アクセシビリティツリー活用 |
| 向くケース | mcp-seleniumレガシーSelenium資産を活かしたい | Playwright MCPゼロから自動化を組む |
よくあるつまずき
Safariで動かない。sudo safaridriver --enableを実行していない、またはSafariの「開発」メニューで「リモートオートメーションを許可」を有効にしていないと起動時に失敗します。ヘッドレスモード非対応の点も、CI環境で使う場合はあらかじめ考慮します。
要素が見つからずタイムアウトする。interactやsend_keysのタイムアウトは既定で10000ミリ秒(10秒)です。動的に描画される要素やページ遷移直後の操作では、ロケーター戦略(id/css/xpathなど)を変えても改善しない場合、timeoutパラメータを明示的に伸ばすかページの読み込み完了を待つ操作を挟みます。SPA(シングルページアプリケーション)のように描画が非同期で完了するページでは、この待ち時間の調整だけで解決することが多いつまずきです。
コミュニティ製パッケージ特有の運用リスク。ベンダー製のMCPと異なりSLAやサポート窓口はありません。本番のCIパイプラインに組み込む前に、社内でのセキュリティレビューや、パッケージの更新頻度・Issue対応状況の確認を挟むのが安全です。
ドラッグ&ドロップが標準ツールで実現できない。interactが対応するアクションはclick・doubleclick・rightclick・hoverの4つで、ドラッグ操作は含まれません。要素の並べ替えやスライダー操作が必要な画面では、execute_scriptにJavaScriptのドラッグ&ドロップ実装を渡してエージェントに実行させます。標準ツールで実現できない操作全般の逃げ道としてexecute_scriptが用意されている、と理解しておくと迷いません。execute_scriptにはargsでarguments[0]のように参照できる引数を渡せるので、要素そのものをスクリプトに引き渡す実装にも対応します。
まとめ
mcp-seleniumは、claude mcp add selenium -- npx -y @angiejones/mcp-selenium@latestの一行でClaude CodeからSeleniumのブラウザ操作を呼び出せるようになるコミュニティ製パッケージです。Chrome・Firefox・Edge・Safariに対応し、クリック・入力・スクリーンショット・Cookie操作・診断ログ取得までを自然文の指示だけでこなせます。新規にブラウザ自動化を組むならPlaywright MCPが有力な選択肢ですが、Selenium Gridや既存のWebDriver資産を抱えるチームには、資産を作り替えずにAIエージェントを足せる現実的な選択肢になります。標準ツールで足りない操作はexecute_scriptに、要素探索の負荷を下げたいならaccessibility://currentリソースにと、逃げ道が用意されている点も導入前に押さえておくと迷いにくくなります。
Claude CodeのMCP設定全般(スコープ・.mcp.json・認証)はClaude Code MCP設定ガイドにまとめています。合わせて読むと、--scope projectでチーム共有する設定の書き方まで一通り把握できます。