Skip to main content
Glama
seleniumbase

SeleniumBase MCP Server

Official
by seleniumbase

SeleniumBase MCP サーバー

SeleniumBase のブラウザ自動化をツールとして公開し、 Model Context Protocol を通じて、あらゆる MCP クライアント(Claude Desktop、Claude Code など)が実際のブラウザを操作できるようにします。

このフォルダには 3つのサーバーバリアント があります:

ファイル

基盤

最適な用途

cdp_server.py

seleniumbase.sb_cdp.Chrome()(ピュアCDPモード、同期)

ボット対策(Cloudflare など)を回避するスクレイピング/自動化。WebDriver は一切使用しません。CAPTCHA 解決機能を含みます。

driver_server.py

seleniumbase.Driver()(WebDriver)

Selenium エコシステムのサポートを備えた一般的な自動化。

sb_server.py

seleniumbase.SB()with を使用せず、手動の __enter__/__exit__ で使用)

最も広範な API サーフェス:Driver が提供するすべての機能に加え、ドラッグ&ドロップ、MFA 処理、ファイルダウンロードなど。activate_cdp_mode でフロー中に CDP モードへ切り替え可能。

3つともデフォルトは headless=False — セッション開始時に headless=True を 渡さない限り、ブラウザウィンドウは表示されます。

タスクに合った *_server.py を MCP クライアント設定で指定してください(下記 手順3を参照)— または、3つすべてを異なる名前で登録することもできます。

1. インストール

(Python 3.10+ と uv が必要です)

git clone https://github.com/seleniumbase/seleniumbase-mcp.git
cd seleniumbase-mcp
uv sync

uv syncpyproject.toml を読み取り、このフォルダ内に .venv/ を作成し、 2つの依存関係(mcp[cli]seleniumbase)とこのプロジェクト自体を インストールします — これにより、[project.scripts] 経由で3つのコンソールスクリプト コマンドが登録されます:

  • seleniumbase-driver

  • seleniumbase-cdp

  • seleniumbase-sb

各コマンドは、そのサーバーファイルの main() 関数 (mcp.run(transport="stdio"))を呼び出すだけです。これにより、MCP クライアント コマンドとして uv run <name> を — python パスも venv パスもスクリプトパスも 指定せずに — 使用できます(下記手順3および4を参照)。

# SeleniumBase's Driver() and SB() formats need a browser driver downloaded:
uv run seleniumbase get chromedriver
# (Not needed for the "seleniumbase-cdp" Pure CDP Mode MCP Server,
#  which doesn't use WebDriver at all.)

uv がない場合?通常の python3 -m venv venv && pip install -e . でも機能します — 以下のすべてで uv run <name> の代わりに python <script>.py を使用し、 MCP クライアント設定ではパスフリーのオプションではなく、絶対パスの venv/bin/python + スクリプトパスを使用してください。)

Related MCP server: gotham-browser

2. スタンドアロンで試す(任意の動作確認)

uv run mcp dev cdp_server.py

これにより、SeleniumBase の「ピュアCDPモード」MCP サーバー用の MCP Inspector が開き、 コマンド(「ツール」)をテストできます。終了するには Ctrl+C を押します。 実際のテストは、クライアントへの配線です(次のステップ)。

3. Claude Desktop に接続する

Claude Desktop は「プロジェクト」ディレクトリから実行されるわけではないため、 素の uv run <name> ではこのリポジトリが見つかるとは限りません。安定した 設定を行うには2つの方法があります:

オプション A — グローバルインストール(推奨、どこにもパス不要):

uv tool install .          # from inside the repo, installs the 3 commands globally

これにより、seleniumbase-driver/seleniumbase-cdp/seleniumbase-sbPATH に恒久的に追加されます(bin ディレクトリが PATH にないと警告された場合は、 uv tool ensurepath を一度実行してください)。その後、claude_desktop_config.json は 次のようになります:

{
  "mcpServers": {
    "seleniumbase-cdp": { "command": "seleniumbase-cdp" },
    "seleniumbase-driver": { "command": "seleniumbase-driver" },
    "seleniumbase-sb": { "command": "seleniumbase-sb" }
  }
}

オプション B — uv をリポジトリに直接指定する(絶対パス1つで済みますが、 venv/interpreter パスを追跡する必要はなく、追加インストールも不要):

{
  "mcpServers": {
    "seleniumbase-cdp": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/seleniumbase-mcp", "run", "seleniumbase-cdp"]
    },
    "seleniumbase-driver": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/seleniumbase-mcp", "run", "seleniumbase-driver"]
    },
    "seleniumbase-sb": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/seleniumbase-mcp", "run", "seleniumbase-sb"]
    }
  }
}

claude_desktop_config.json の場所はシステムによって異なります:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Claude Desktop を再起動すると、🔨 ツールアイコンが表示され、サーバーが 接続されたことがわかります。start_browsernavigateclick などの ツールが利用可能になります。実際に必要なエントリだけを残してください — ブラウザ自動化サーバーが3つもあるのは、1つだけで十分な場合には多すぎます。

4. Claude Code に接続する

このリポジトリの .mcp.json はチェックイン済みで、そのまま使用できます — uv run <name>pyproject.toml からこのプロジェクトを解決するため、 パスの編集は不要です:

{
  "mcpServers": {
    "seleniumbase-cdp": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "seleniumbase-cdp"]
    },
    "seleniumbase-driver": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "seleniumbase-driver"]
    },
    "seleniumbase-sb": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "seleniumbase-sb"]
    }
  }
}

Claude Code は、claude を起動したディレクトリから .mcp.json を自動的に 読み込みます。このリポジトリ(またはそのクローン)内から claude を実行する限り、 そのまま機能します — リポジトリをクローンするすべてのチームメイトにとって、 マシン固有の編集なしで同じように動作します。

.mcp.json に頼らずにサーバーを手動で登録したい場合は:

claude mcp add seleniumbase-cdp -- uv run seleniumbase-cdp
claude mcp add seleniumbase-driver -- uv run seleniumbase-driver
claude mcp add seleniumbase-sb -- uv run seleniumbase-sb

(リポジトリディレクトリ内から実行してください。理由は上記と同じです。)

公開されているツール(driver_server.py)

ツール

目的

start_browser(browser, headless, uc, incognito)

ブラウザセッションを開始(headless のデフォルトは False

close_browser()

セッションを終了

navigate(url)

URL に移動

go_back() / go_forward() / refresh_page()

履歴の移動

get_current_url() / get_title()

ページのメタデータ

get_page_source()

完全な HTML

get_text(selector)

要素の表示テキスト

find_elements_count(selector)

一致する要素の数を数える

is_element_visible(selector)

可視性の確認

click(selector, by)

クリック(CSS または XPath)

type_text(selector, text, clear_first)

フィールドに入力

select_option(selector, option_text)

ドロップダウンオプションを選択

wait_for_element(selector, timeout)

明示的な待機

switch_to_frame(selector) / switch_to_default_content()

iframe の切り替え

assert_text(text, selector)

テキストの存在を検証

screenshot(filename)

スクリーンショットを保存

execute_script(script)

JS スクリプトを実行

設計上の注意点 / ユースケースに合わせて調整すべき点

  • 単一のグローバルセッション。 各サーバーは一度に1つのブラウザセッションを保持します。 これは、MCP サーバーが通常(クライアント接続ごとに1プロセス)起動される方法と一致し、 ツールサーフェスをシンプルに保ちます。複数の同時ブラウザタブ/セッションが必要な場合は、 名前付きセッションの dict に拡張し、各ツールに session_id パラメータを追加することになります。

  • ブロッキング呼び出し。 SeleniumBase の呼び出しは同期であり、ページの読み込みや 要素の待機中はサーバーをブロックします。単一ユーザーのローカルツールでは問題ありませんが、 マルチクライアントサーバーの場合は、asyncio.to_thread 経由のスレッドプールで 実行することを検討してください。

  • ヘッドレス vs ヘッド付き。 デフォルトはヘッド付き(headless=False)で、 ブラウザの動作を確認でき、ヘッドレス Chrome をブロックするサイトでも機能します。 フローを確認したら、バックグラウンド/サーバー用途では headless=True を渡してください。 sb_server.pyuc=True(undetected-chromedriver)は、ボット対策の壁に対する 防御にも役立ちます。

拡張

ツールを追加するには、対応する SeleniumBase メソッドを呼び出す @mcp.tool() デコレータ付き関数を追加するだけです — SeleniumBase には、 ファイルアップロード、ホバー、アラート、ネットワーク状態など、 上記でまだラップされていないメソッドが多数あります。


cdp_server.py — ピュアCDPモード

seleniumbase.sb_cdp.Chrome をラップします。これは SeleniumBase の最もステルス性の高い モードです:ブラウザは Chrome DevTools Protocol 経由でのみ駆動され、WebDriver は 一切関与しません。リファレンス: cdp_mode_methods.md

ツールグループ

グループ

セッション

start_browser(url, headless, incognito, guest, proxy, ad_block)close_browser

ナビゲーション

navigatereload_pagego_back/go_forwardget_current_urlget_title

検索と読み取り

find_element_infofind_all_infoget_textget_html_sourceget_element_attribute(s)is_element_present/visible

操作

clickclick_if_visibleclick_visible_elementstype_textsend_keysset_valueselect_option_by_text/value/indexnested_click

待機

wait_for_elementwait_for_element_visible/not_visible/absentwait_for_text

アサーション

assert_elementassert_textassert_exact_textassert_titleassert_url(_contains)

Cookie とストレージ

get_all_cookiessave_cookies/load_cookiesget/set_local_storage_itemget/set_session_storage_item

スクロール

scroll_into_viewscroll_to_top/bottomscroll_up/down

タブとウィンドウ

open_new_tabswitch_to_tab/switch_to_newest_tabclose_active_tabmaximize/minimizeget/set_window_rect

CAPTCHA

solve_captcha

出力

save_screenshotsave_page_sourcesave_as_pdfevaluate

CDP 固有の設計上の注意点

  • 要素はハンドルとしてワイヤを渡ることはありません。 ネイティブCDPモードでは、find_element() は独自のメソッド(例: el.click()el.get_html())を持つライブオブジェクトを返します。MCPツールはJSONシリアライズ可能なデータしか返せないため、find_element_info/find_all_info は要素を後でメソッドを呼び出せるハンドルとして返す代わりに、プレーンなdict(tag_nametexthtml)へと即座に解決します。複数の候補からどれか1つを操作する必要がある場合は、「検索してからクリック」を2つの別々のステップとして行うのではなく、click_nth_element(位置指定で操作)を使用してください。

  • CAPTCHA解決は万能ではありません。 solve_captcha は対応しているチャレンジタイプ(例: SeleniumBaseデモアプリのCloudflare Turnstile)を処理しますが、任意のCAPTCHAを確実に回避するものではありません。

  • セッションの終了処理。 sb.quit()close_browser によって使用)はセッションを終了する文書化された方法です。プロセスが sb.quit() を呼び出さずに終了した場合も、ブラウザは自動的に閉じます。

  • ラップしていないもの: PyAutoGUIベースの gui_* メソッド(設計上除外 — 上位レベルの設計ノート参照)、低レベルの内部処理(get_websocket_urladd_handler、権限付与、生の get_document/get_flattened_document)、およびメソッドの正確なエイリアス(open/goto vs get)は、ツールリストを焦点を絞って保つために省略されています。必要であれば、他のツールと同様に追加してください。


sb_server.py — with文なしのSB()

seleniumbase.SB()(通常はコンテキストマネージャとして使用)をラップします:

with SB(uc=True) as sb:
    sb.goto(...)

MCPサーバーのツール呼び出しは、別々の関数呼び出しにまたがって一度に1回ずつ行われるため、with で囲む単一のインデントブロックは存在しません。そこでこのサーバーでは、コンテキストマネージャプロトコルを手動で呼び出しています:

sb_context = SB(**kwargs)
sb = sb_context.__enter__()   # in start_browser
...
sb_context.__exit__(None, None, None)   # in close_browser

sbBaseCase インスタンスであり、SeleniumBaseで最も広範なAPIです。driver_server.py 内の Driver が公開する機能のスーパーセットであり、UCモードのステルスヘルパーや、driver_server.py/cdp_server.py にはないいくつかの追加機能も含みます。このサーバーは、既にカバーされているすべてを再ラップするのではなく、それらの追加機能に焦点を当てます:

グループ

ツール

UC/CDPステルス

activate_cdp_mode同じセッションをフロー途中でPure CDPモードに切り替える)

追加のインタラクション

hover_and_clickdrag_and_dropdouble_clickcontext_clickchoose_file(アップロード)

MFA

get_mfa_codeenter_mfa_code(シークレットキーからTOTP/Google-Authenticator形式のコードを生成)

ファイル

download_file

サイトの健全性

assert_no_404_errorsassert_no_js_errors

ビジュアルフィードバック

highlightflash

さらに、このサーバーは、他の2つのサーバーと同じコアのナビゲーション/インタラクション/待機/アサーション/クッキー/スクロール/タブ/出力ツールを備えています。これらは Driver やCDPのメソッド名ではなく、BaseCase のメソッド名(例: sb.gotosb.clicksb.assert_element)を介して呼び出します。

SB() 固有の設計ノート

  • UCモード(ステルスモード)には起動時に uc=True が必要です。 必要な場合は、あらかじめ start_browseruc=True を渡してください。

  • activate_cdp_mode は新しいセッションを開始しません。 既存の sb セッションの背後のモードを、以降のアクションのためにPure CDPへ切り替えます。これはフロー途中でのエスカレーションであり、新しいブラウザを起動するものではありません。

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.

  • Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…

  • Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.

View all MCP Connectors

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/seleniumbase/seleniumbase-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server