mcpField
C
cloak-browser-mcp

cloak-browser-mcp

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

cloak-browser-mcp について

cloak-browser-mcpは、CloakBrowser Chromiumを基盤とするPlaywright互換のMCPサーバーです。ステルス機能や永続プロファイル、任意のネットワーク・ストレージ・ビジョン・テストツールを求めるMCPクライアント向けです。

主な機能

  1. 01Playwright互換のブラウザー操作
  2. 02ステルス検査と監査ツール
  3. 03永続プロファイルの管理
  4. 04プロキシ、地域、タイムゾーン、指紋の設定
  5. 05ネットワーク、ストレージ、ビジョン、テスト機能

活用シーン

  1. 01ボット検知のあるサイトでのブラウザー自動化
  2. 02ブラウザーのネットワーク動作の検査とテスト
  3. 03ブラウザープロファイルとストレージ状態の再利用
  4. 04ロケーター生成とページ要素の検証

MCP 対応

MCPクライアントにブラウザー自動化とCloakBrowser固有のツールを公開し、機能フラグで追加のツール群を有効にできます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"devinwang-cloak-browser": {
"command": "npx",
"args": [
"-y",
"@devinwangd/cloak-browser-mcp"
],
"env": {
"CLOAKBROWSER_LICENSE_KEY": "<CLOAKBROWSER_LICENSE_KEY>"
}
}
}
}
起動コマンドnpx -y @devinwangd/cloak-browser-mcp
設定が必要な環境変数
CLOAKBROWSER_LICENSE_KEYシークレットOptional CloakBrowser Pro license key. Leave unset to use the free binary.

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

パッケージ
npm@devinwangd/cloak-browser-mcp0.2.0

ツール

35

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
urlstringはい読み込む絶対 URL。--allowed-domains / --blocked-domains の制限を受けます。
timeoutMsnumberいいえ
waitUntilenumいいえload | domcontentloaded | networkidle | commit

詳細

cloak-browser-mcp

CloakHQ/CloakBrowser を基盤とする Model Context Protocol(MCP)サーバーです。Cloudflare Turnstile、reCAPTCHA v3、FingerprintJS、BrowserScan、その他30以上のボット検出サービスを、実行時の JS インジェクションなしで通過する、ソースコードにパッチを適用した Chromium を使用します。

@playwright/mcp のドロップイン代替で、86 個のツールを備えています。browser_annotate(未実装を参照)以外の Playwright MCP の全ツールに加え、Cloak 専用のステルス/プロファイル/監査レイヤーを利用できます。

Claude Code、Cursor、VS Code、Codex、Gemini CLI、Windsurf、その他あらゆる MCP クライアントで動作します。


目次


標準の Playwright ではなく CloakBrowser を選ぶ理由

@playwright/mcpcloak-browser-mcp
Chromium標準版ソースコードにパッチを適用(C++ パッチ58件)
navigator.webdrivertrue(漏洩する)存在しない
Cloudflare Turnstile失敗自動通過
reCAPTCHA v3 のスコア~0.1~0.9
人間らしいマウス/キーボード操作なしベジェ曲線、タイプミスの修正
永続プロファイル手動CLI フラグと管理ツールを標準搭載
GeoIP 対応のエミュレーションなしプロキシの出口 IP からタイムゾーン/ロケールを自動設定
ステルス監査/検出プローブなしcloak_stealth_audit と cloak_detection_test を内蔵

ステルス機能が不要な場合は、@playwright/mcp のほうが高速で軽量なので、そちらをお使いください。サイトが何らかのボット検出(Cloudflare、DataDome、PerimeterX、FingerprintJS)を導入している場合は、こちらをお使いください。


クイックスタート

1. 一度だけインストール

ラッパーは npm からインストールします。CloakBrowser の Chromium バイナリ(約200 MB)は、初回使用時に ~/.cloakbrowser/ へダウンロードされます。

Node.js ^20.19.0 || >=22.12.0 が必要です(CloakBrowser 自体が必要とする最小バージョンです)。

バイナリには2つのティアがあります。キーがない場合は無料のバイナリを利用できます。CloakBrowser Pro ライセンスを利用するには、MCP サーバーの環境に CLOAKBROWSER_LICENSE_KEY を設定してください。CloakBrowser ライブラリは CLOAKBROWSER_RELEASE_CHANNEL(stable または preview)と CLOAKBROWSER_VERSION も読み込みます。各ティアに含まれる内容については、cloakbrowser.dev をご覧ください。現在有効なティアは cloak_binary_info で確認できます。

npm install -g @devinwangd/cloak-browser-mcp

インストールせず、必要なときに実行することもできます。

npx @devinwangd/cloak-browser-mcp --caps all

インストール後、PATH 上のバイナリ名は cloak-browser-mcp(スコープなし)です。以下の MCP クライアント設定では、この名前を指定します。

2. MCP クライアントに接続
Claude Code(~/.claude.json またはプロジェクトの .mcp.json)
{
  "mcpServers": {
    "cloak-browser": {
      "command": "cloak-browser-mcp",
      "args": ["--caps", "all"]
    }
  }
}
Cursor/VS Code(.cursor/mcp.json または .vscode/mcp.json)
{
  "servers": {
    "cloak-browser": {
      "command": "cloak-browser-mcp",
      "args": ["--caps", "all"]
    }
  }
}
永続プロファイル+プロキシ+人間らしい入力
{
  "mcpServers": {
    "cloak-browser": {
      "command": "cloak-browser-mcp",
      "args": [
        "--caps", "all",
        "--profile-dir", "/Users/me/.cloak-browser-mcp/profiles/work",
        "--proxy", "http://user:[email protected]:8080",
        "--timezone", "Europe/London",
        "--locale", "en-GB",
        "--geoip",
        "--humanize",
        "--viewport", "1920x1080",
        "--allowed-domains", "*.example.com,*.cloudflare.com"
      ]
    }
  }
}
3. 使用する

Claude Code で:

「example.com を開いて、検索ボックスをクリックし、「hello」を検索して、スクリーンショットを撮ってください。」

エージェントは browser_navigate → browser_snapshot → browser_click → browser_type → browser_take_screenshot を呼び出します。


機能(--caps)

機能ツール使用する場面
(常時有効)ナビゲーション、操作、ページ状態通常のブラウジング
networkリクエストの検査、ルートのモック、オフラインのシミュレーションAPI のデバッグ、障害モードのテスト
storageCookie、localStorage、sessionStorage、ストレージ状態のエクスポート/インポート認証状態の永続化、セッションの再生
visionピクセル座標によるマウス操作キャンバス/SVG アプリでアクセシビリティツリーを介さずに操作する場合
pdfbrowser_pdf_saveページを PDF としてスナップショット保存する場合
testingverify_* + generate_locatorPlaywright テストのコード生成
devtoolsハイライト、トレース、動画、再開エージェントの判断のデバッグ
configget_config、close、run_code_unsafe内部情報の確認 + 任意の JS(--enable-unsafe-eval が必要)
humanizecloak_humanize_set人間らしい入力パラメーターの調整

--caps all を指定すると、すべての機能が有効になります(ただし、run_code_unsafe の使用には追加で --enable-unsafe-eval が必要です)。


CloakBrowser 専用ツール(常時有効)

ツール目的
cloak_set_fingerprintCanvas シード、GPU ベンダー/レンダラー、画面サイズ、ハードウェア並列数、デバイスメモリ、UA ブランド、プラットフォーム、ストレージクォータを上書きします
cloak_set_timezoneCDP 経由でタイムゾーンを即時変更します(再起動不要)
cloak_set_localenavigator.language と Accept-Language を上書きします
cloak_set_geolocation座標を設定するか、プロキシの出口 IP から自動解決します
cloak_set_proxyセッション中にプロキシを切り替えます
cloak_detection_test既知のプローブ(CreepJS、FingerprintJS、BrowserScan、SannySoft、Cloudflare Turnstile)を読み込み、結果を出力します
cloak_stealth_auditプログラムによるチェック:navigator.webdriver、プラグイン数、WebGL ベンダー、言語、UA、chrome.runtime、Canvas ハッシュ、$cdc_* CDP シグナル
cloak_request_signal_inspect単一 URL のリクエストごとの TLS/ヘッダーシグナルを取得します
cloak_persistent_profile_create / list / delete~/.cloak-browser-mcp/profiles/ を管理します
cloak_binary_info / cloak_binary_updateCloakBrowser の Chromium バイナリーを検査/更新します

CLI フラグ

フラグ値デフォルト備考
--caps <csv>all または任意のサブセット(なし)機能によって有効化されるツールを有効にします
--profile-dir <path>絶対パス(一時的)永続的なユーザーデータディレクトリ
--headless / --headed(ブール値)headed(表示)一括実行/CI 実行では --headless を指定します。
--proxy <url>認証情報を含む http(s)/socks5なし
--timezone <tz>IANA タイムゾーンシステム例:America/New_York
--locale <bcp47>BCP-47システム例:en-US
--user-agent <ua>文字列(cloak のデフォルト)
--viewport <WxH>例:1920x10801280×720
--geoipブール値オフプロキシ IP から位置情報を自動解決します
--humanizeブール値オフベジェ曲線のマウス操作 + 誤字を修正するキーボード入力を有効にします
--fingerprint-seed <int>整数ランダムCanvas/WebGL のノイズを決定論的にします
--allowed-domains <csv>ホストパターン(すべて許可)browser_navigate の許可リスト
--blocked-domains <csv>ホストパターン(なし)browser_navigate のブロックリスト
--enable-unsafe-evalブール値オフbrowser_run_code_unsafe に必要です
--upload-allow-dir <path>パス(なし)ファイルアップロード元のパスを制限します
--download-dir <path>パス(現在の作業ディレクトリ)ダウンロードしたファイルの保存先
--max-pages <n>整数20同時に開けるタブの上限
--self-testブール値オフツール一覧を表示して終了します

ツール一覧

ツールは機能ごとに分類されています。「常時有効」のセクションは --caps の指定にかかわらず公開されます。機能によって有効化されるセクションを使用するには、該当する --caps エントリーが必要です。

常時有効
ナビゲーション
ツール必須任意備考
browser_navigateurlwaitUntil, timeoutMs--allowed-domains / --blocked-domains の設定に従います。新しい [eN] スナップショットを返します。
browser_navigate_back——アクティブなタブの履歴を戻ります。
browser_tabsaction (list/new/switch/close)index, id, urlID(t1 など)または 0 始まりのインデックスでタブを管理します。
操作
ツール必須任意備考
browser_clicktargetelement, doubleClick, button, modifierstarget は eN の参照、または Playwright セレクターです。
browser_typetarget, textelement, submit, slowlyslowly:true を指定すると、1 文字ずつ入力します。--humanize と組み合わせてください。
browser_hovertargetelement
browser_dragstartTarget, endTargetstartElement, endElement
browser_droptargetpaths, dataファイルパスには setInputFiles を使用します。任意の MIME データには合成 DataTransfer を使用します。
browser_select_optiontarget, valueselement
browser_press_keykey—ページレベルでキーを押します(例:Control+A、ArrowDown)。
browser_handle_dialogacceptpromptText最後に取得したダイアログに応答します。
browser_file_uploadpaths—--upload-allow-dir が設定されている場合、パスは指定ディレクトリ内に制限されます。
browser_fill_formfields—各フィールドには target と value(および任意の kind)を指定します。
browser_scroll—target, direction, amount要素単位、またはページ単位でスクロールします。
ページの状態
ツール必須任意備考
browser_snapshot——操作可能なノードの [eN] 参照を含むアクセシビリティツリーです。
browser_findtext または regexfilenameスナップショット全体を返す代わりに、スナップショット内を検索します。各一致箇所は、ルートからのパスと前後数行のコンテキストとともに表示されます。一致箇所は最大 20 件です。regex は /pattern/i と記述しない限り、大文字と小文字を区別します。
browser_emulate_media—colorScheme, reducedMotion, forcedColors, contrast, media省略されたパラメーターは変更されません。null を指定すると、オーバーライドが解除され、システム設定に戻ります。
browser_take_screenshot—element, target, type, fullPage, quality, saveAs画像はインラインで返され、必要に応じてディスクに保存できます。
browser_console_messages—level, limitバッファー内のコンソールメッセージと pageerror を返します。
browser_wait_for—timeMs, text, textGone, selector, state, timeoutMs
browser_resizewidth, height—
browser_evaluatefunctionelement, target関数のソースには、アロー関数または関数式を指定する必要があります。
CloakBrowser 専用
ツール必須任意備考
cloak_set_fingerprint—seed, gpuVendor, gpuRenderer, screenWidth, screenHeight, hardwareConcurrency, deviceMemoryGB, uaBrand, uaBrandVersion, platform, storageQuotaMB一部のフラグは次回起動時にのみ反映されます。browser_close を呼び出してから任意のツールを呼び出すと、再起動します。
cloak_set_timezonetimezone—CDP 経由で即時反映されます。
cloak_set_localelocale—navigator.language と Accept-Language ヘッダーを設定します。
cloak_set_geolocation—latitude, longitude, accuracy, fromProxyIpfromProxyIp は現在のプロキシ経由で ipapi.co/json/ を呼び出します。
cloak_set_proxyproxy—コンテキストを再作成します。
cloak_detection_test—suite, customUrlスイート:creepjs、fingerprintjs、browserscan、sannysoft、cloudflare-turnstile。
cloak_stealth_audit——プログラムによる監査です。
cloak_request_signal_inspecturl—TLS の詳細、レスポンスステータス、リクエストヘッダー、レスポンスヘッダーを返します。
cloak_persistent_profile_createname—~/.cloak-browser-mcp/profiles/<name> を作成します。
cloak_persistent_profile_list——
cloak_persistent_profile_deletename, confirm=true—
cloak_binary_info——
cloak_binary_update——
機能による制御

--caps network — browser_network_requests、browser_network_request、browser_route、browser_route_list、browser_unroute、browser_network_state_set。

--caps storage — browser_cookie_set/get/list/delete/clear、browser_localstorage_*、browser_sessionstorage_*、browser_storage_state、browser_set_storage_state。

--caps vision — browser_mouse_click_xy、browser_mouse_move_xy、browser_mouse_drag_xy、browser_mouse_down、browser_mouse_up、browser_mouse_wheel。

--caps pdf — browser_pdf_save。

--caps testing — browser_verify_element_visible、browser_verify_text_visible、browser_verify_list_visible、browser_verify_value、browser_generate_locator。

--caps devtools — browser_highlight、browser_hide_highlight、browser_start_tracing、browser_stop_tracing、browser_start_video、browser_stop_video、browser_video_chapter、browser_resume、browser_video_show_actions、browser_video_hide_actions、browser_start_recording、browser_stop_recording。

--caps config — browser_get_config、browser_close、browser_run_code_unsafe(--enable-unsafe-eval も必要です)。

--caps humanize — cloak_humanize_set。

未実装

Playwright MCP の browser_annotate は提供されていません。このツールは Playwright のダッシュボードウィンドウを開き、ページ上に人が描画するのを待機します。Playwright はこれを内部プロセスとして実行しますが、このサーバーはそのプロセスを起動しません。


インタラクションツールのターゲット構文

target 引数では、次の値を指定できます。

  • 前回の browser_snapshot で取得した eN ref — 例:e7。最も確実です。
  • CSS セレクター — 例:button.primary。
  • xpath=… — 例:xpath=//button[contains(., "Submit")]。
  • text=… — 例:text=Sign in。
  • role=…[name="…"] — 例:role=button[name="Submit"]。

ページ遷移または DOM に大きな変更があった後は、browser_snapshot を再度呼び出して ref を更新してください。


使用例

1. Cloudflare で保護されたページのスクリーンショットを撮る
You: Open https://example-cloudflare-protected.com, wait for the page to settle, take a full-page screenshot.

Agent calls:
  browser_navigate(url="https://...")
  browser_wait_for(textGone="Checking your browser")
  browser_take_screenshot(fullPage=true)

標準の @playwright/mcp は Turnstile チェックに失敗しますが、cloak-browser-mcp はステルスパッチが JS レイヤーより下位にあるため、自動的に通過します。

2. SaaS ダッシュボードにサインインし、認証情報を保持して後で再度開く

フェーズ 1 — 新しいプロファイルで初回サインイン:

// .mcp.json
{
  "mcpServers": {
    "cloak": {
      "command": "cloak-browser-mcp",
      "args": [
        "--caps", "all",
        "--profile-dir", "/Users/me/.cloak-browser-mcp/profiles/saas-prod",
        "--humanize"
      ]
    }
  }
}
You: Open https://saas.example.com, sign in as [email protected] / <password>, then confirm I'm on the dashboard.

フェーズ 2 — 後で再度開くと、すべての Cookie が保持されています。

You: Open https://saas.example.com — you should already be signed in from yesterday's session.
3. ステルスの状態を確認する
You: Run a stealth audit and then load the SannySoft bot detection test.

Agent:
  cloak_stealth_audit()
  cloak_detection_test(suite="sannysoft")

ステルスが維持されていれば、すべて緑色で表示されます。

4. プロキシ経由でセッション中に位置情報/タイムゾーンを切り替える
You: Switch to a UK proxy, align my timezone/locale/geo to match, then load a country-specific landing page.

Agent:
  cloak_set_proxy(proxy="http://uk-proxy.example.com:8080")
  cloak_set_timezone(timezone="Europe/London")
  cloak_set_locale(locale="en-GB")
  cloak_set_geolocation(fromProxyIp=true)
  browser_navigate(url="https://example.com/uk")
5. フロントエンドのテスト中に API レスポンスをモックする
You: While loading example.com, return a fake 500 to /api/orders so I can verify the error state.

Agent:
  browser_route(pattern="**/api/orders", status=500, body='{"error":"simulated"}', contentType="application/json")
  browser_navigate(url="https://example.com")
  browser_take_screenshot()
  browser_unroute(pattern="**/api/orders")
6. ストレージ状態をエクスポートし、新しいセッションで再生する
Agent:
  browser_storage_state(filename="/tmp/saas-state.json")
  # …later, in a new ephemeral session…
  browser_set_storage_state(filename="/tmp/saas-state.json")
  browser_navigate(url="https://saas.example.com")
7. 人による確認用に Playwright のトレースを実行する
You: Trace this whole flow so I can replay it in Playwright Trace Viewer.

Agent:
  browser_start_tracing(filename="/tmp/trace.zip", screenshots=true, snapshots=true)
  # …agent runs the flow…
  browser_stop_tracing()

You: open /tmp/trace.zip in Playwright Trace Viewer (https://trace.playwright.dev)

セキュリティモデル

本番環境の認証情報があるマシンにデプロイする前に、これをお読みください。

要約
アセット信頼境界
cloak-browser-mcp のソース(このリポジトリ)MIT ライセンス、公開済み、ソースを読んで監査できます。
cloakbrowser npm パッケージCloakHQ のメンテナーと npm レジストリを信頼してください。
CloakBrowser の Chromium バイナリ初回使用時に cloakbrowser.dev からダウンロードされます。上流のラッパーによって SHA-256 が検証されます。ライセンス上、このバイナリはクローズドソースです。
環境変数/Keychain/シェルの履歴MCP サーバーはプロセスの環境変数を継承します。サプライチェーンを信頼できない限り、本番環境の認証情報が有効な状態で実行しないでください。
このパッケージがもたらす脅威
1. サプライチェーンの侵害

インストール時または実行時に、@modelcontextprotocol/sdk、playwright-core、cloakbrowser の 3 つのパッケージと、ダウンロードされる Chromium バイナリが取得されます。CloakHQ の npm 公開トークンまたは cloakbrowser.dev が侵害された場合、攻撃者がユーザーアカウントで実行される悪意のあるバイナリを公開する可能性があります。

緩和策:

  • 信頼できる cloakbrowser のバージョンを固定してください。
  • CLOAKBROWSER_BINARY_PATH に監査済みのバイナリを指定してください。
  • CLOAKBROWSER_SKIP_CHECKSUM はデフォルト(false)のままにしてください。
  • ~/.cloakbrowser/ と、使用する --profile-dir を監査してください。
2. エージェントによるブラウザーのナビゲーション

デフォルトでは、browser_navigate は任意の URL を受け付けます。LLM エージェントがプロンプトインジェクションを受け、悪意のある場所に移動させられる可能性があります。

緩和策:

  • --allowed-domains <csv>(*.example.com に対応)。
  • --blocked-domains <csv>(先にチェックされます)。
  • 実際のブラウザープロファイルではなく、専用の一時的な --profile-dir を使用してください。
  • --max-pages <n> でタブが際限なく増えるのを制限してください。
3. 任意の JS 実行
  • browser_evaluate — ページのサンドボックス内で JS を実行します。ローカルファイルシステムは読み取れません。常に利用できます。
  • browser_run_code_unsafe — この Node.js サーバープロセス内で JS を実行します。Node で可能なあらゆる操作を実行できます。二重の明示的な許可が必要です:--caps config と --enable-unsafe-eval の両方が必要です。

緩和策: 環境変数に本番環境の認証情報があるマシンで、--enable-unsafe-eval を決して併用しないでください。

4. ファイルシステムへのアクセス範囲

browser_file_upload と browser_drop は、読み取りアクセス権のある任意のファイルを添付できます。制限するには --upload-allow-dir <path> を使用してください。

書き込み側:browser_take_screenshot --saveAs、browser_pdf_save、browser_storage_state、browser_start_tracing は、エージェントが指定したパスにファイルを書き込みます。これを避けたい場合は、--caps pdf/storage/devtools を指定しないでください。

5. 永続プロファイルからの情報漏えい

--profile-dir には Cookie/localStorage/IndexedDB が蓄積されます。クラウドストレージに同期されている場合、エージェント経由でサインインしたすべてのサイトに、その同期トークンを持つ誰もがアクセスできるようになります。デフォルトのパス ~/.cloak-browser-mcp/profiles/<name> は、一般的なクラウド同期対象のルートディレクトリの外にあります。

6. プロンプトインジェクションによる情報流出

悪意のあるページがエージェントにプロンプトインジェクションを仕掛け、盗んだ状態情報を使って別の場所に移動させたり、DOM 内の秘密情報を POST で外部に送信させたりする可能性があります。これは MCP の問題ではなく、LLM の問題です。

  • タスクごとに別のセッションを使用してください。関係のない作業の合間には browser_close を実行してください。
  • 機密性の高いフローでは、永続プロファイルより一時プロファイルを優先してください。
  • 認証済みの操作を含むタスクでは、エージェントのツール呼び出しを確認してください。
7. ネットワークへの送信
呼び出し接続先タイミング
CloakBrowser バイナリのダウンロードcloakbrowser.dev(CLOAKBROWSER_DOWNLOAD_URL で変更可能)インストール後の初回使用時
ブラウザーの通信エージェントが移動する先常時
cloak_set_geolocation --fromProxyIpipapi.co/json/明示的に呼び出した場合のみ

このラッパーはホームに通信せず、テレメトリーも収集しません。

推奨されるデプロイプロファイル

「Tight」(機密性の高いマシン — 本番環境の認証情報を保持):

--caps network,storage,pdf
--profile-dir /Users/me/.cloak-browser-mcp/profiles/scoped
--allowed-domains *.target.com
--upload-allow-dir /tmp/cloak-uploads
--max-pages 5

--enable-unsafe-eval は使用しません。vision 機能も有効にしません(xy クリックは許可リストのチェックを回避します)。

「Open」(研究/個人でのブラウジング):

--caps all
--humanize
--max-pages 20

「Untrusted」(上流のバイナリをまだ完全には信頼していない場合)— Docker コンテナ内、または Keychain にアクセスできず、.env ファイルもマウントされていない、新しい macOS ユーザーアカウントで実行してください。

脆弱性の報告

cloak-browser-mcp(上流の cloakbrowser パッケージやそのバイナリではなく)にセキュリティ上の問題を見つけた場合は、https://github.com/devinwang/cloak-browser-mcp/security/advisories/new で非公開のセキュリティアドバイザリを作成してください。

上流の CloakBrowser に関する問題については、https://github.com/CloakHQ/CloakBrowser/security/advisories/new をご覧ください。


変更履歴

[0.2.0] - 2026-10-21
  • cloakbrowser を 0.3.x から 0.6.3 にアップグレードしました。 新しいリリースでは、Pro ライセンス、リリースチャネル、署名付きダウンロードの検証が追加されています。サーバーが使用していた機能は削除されていません。新しい MCP ツールはなく、ツール数は 80 のままです。
  • 修正:ライブラリのログ行によって stdio ストリームが破損する可能性がありました。 cloakbrowser は、プロキシ認証情報内の特殊文字の自動エンコードなど、一部のイベントを console.info で報告します。Node はこれを stdout に書き込みますが、MCP クライアントはそこに JSON-RPC のみが出力されることを想定しています。サーバーの実行中は、console.log、console.info、console.debug が stderr に出力されるようになりました。
  • Node の要件が ^20.19.0 || >=22.12.0 になりました(以前は >=18 と宣言されていました)。CloakBrowser 0.3.30 ではすでに Node 20 以降が必要で、0.6.x では 20.19 以降が必要です。CI で Node 18 のテストを行わなくなりました。
  • Playwright MCP 0.0.83 との機能差を埋めるため、6 つのツールを追加しました(80 → 86):
    • browser_find — スナップショット内のテキストまたは正規表現を検索します。
    • browser_emulate_media — カラースキーム、視差効果の低減、強制カラー、コントラスト、メディアタイプを設定します。null を指定すると上書き設定が解除されます。
    • browser_video_show_actions / browser_video_hide_actions(devtools)— 録画中またはスクリーンキャスト中に、ページ上で操作を注釈表示します。
    • browser_start_recording / browser_stop_recording(devtools)— ブラウザーでユーザーが行った操作を記録し、Playwright コードとして返します。
  • browser_annotate は提供されません。Playwright の内部ダッシュボードプロセスを起動し、ページ上に描画する人が必要になるためです。
  • playwright-core の最小バージョンを ^1.61.0 に引き上げました。これは page.screencast.showActions() を初めて含むリリースです。解決されるバージョンは 1.60.0 から 1.64.1 に変わりました。
  • 入力スキーマで、null を許容するパラメーターが { oneOf: [<type>, null] } として示されるようになりました(以前は変換処理で null が削除されていました)。これは browser_emulate_media に必要です。
  • package.json に mcpName を追加し、公式 MCP Registry 用の server.json を追加しました。これには省略可能な CLOAKBROWSER_LICENSE_KEY 変数も含まれます。
[0.1.4] - 2026-08-23
  • 修正:target を指定せずに browser_evaluate を実行すると、常に失敗していました。 関数が文字列式として Playwright に渡されていたため、結果ではなく関数オブジェクトが返され、それが undefined にシリアライズされて MCP の結果検証に失敗していました。現在は関数が呼び出され、正当に undefined を返す関数は文字列 "undefined" を報告します。
[0.1.3] - 2026-08-23
  • 修正:失敗したブラウザーの起動を再試行できませんでした。 拒否された起動 Promise がキャッシュされ、永久に再度待機されていたため、一時的なエラーが 1 回発生するとプロセスを再起動する必要がありました。失敗時にキャッシュがクリアされるようになりました。
  • エラーメッセージを明確化しました。 プロファイルディレクトリを使用中の古い CloakBrowser プロセスがある場合、以前は「No active page」と表示されていました。現在は、根本の起動エラーと古いプロセスを見つけるコマンドを含む NO_BROWSER エラー(BrowserNotLaunchedError)と、不明なタブ ID に対する TAB_NOT_FOUND エラーが用意されています。NoActivePageError は、失敗しているその呼び出しを実行するよう呼び出し元に指示しなくなりました。
[0.1.2] - 2026-08-03
  • 動作変更はありません。リリースパイプラインのみの変更です。NPM_TOKEN シークレットの代わりに、**npm の信頼されたパブリッシング(OIDC)**を使用して公開します。長期間有効なトークンは予告なく期限切れになり、npm は認証されていない公開リクエストに対して 404 Not Found - PUT を返します。これは認証エラーではなく、パッケージが存在しないように見えてしまいます。OIDC に有効期限はありません。
  • actions/setup-node から registry-url を削除しました。このオプションは _authToken=${NODE_AUTH_TOKEN} を含む .npmrc を書き込み、トークンを指定しない場合には NODE_AUTH_TOKEN をプレースホルダーそのものの XXXXX-XXXXX-XXXXX-XXXXX として設定します。その結果、npm は OIDC にフォールバックせず、無効なトークンで認証しようとします。
  • 公開前に、リリースジョブで npm を 11.x 系に固定します。OIDC にはバージョン 11.5.1 以上が必要ですが、Node 22 にバンドルされているのは 10.x です。信頼されたパブリッシングでは来歴情報が自動的に付与されるため、明示的な --provenance フラグを削除しました。アテステーションの適用範囲に変更はありません。
[0.1.1] - 2026-05-24
  • 破壊的変更(UX):デフォルトをヘッドレスではなく、**ヘッドあり(ブラウザーを表示)**にしました。対話型の MCP サーバーでは、エージェントの作業をユーザーが見られるようにする必要があります。バッチ処理や CI で使用する場合は、明示的に --headless を指定してください。これに合わせて、Smithery のデフォルトも変更しました。
[0.1.0] - 2026-05-24
  • 初回リリース。CloakHQ/CloakBrowser を基盤とする約 62 個の MCP ツールを提供します。Playwright-MCP と同等の機能一式に加え、Cloak 独自のステルス、プロファイル、監査、バイナリ管理機能を備えています。
  • CLI:--caps、--profile-dir、--headless/--headed、--proxy、--timezone、--locale、--user-agent、--viewport、--geoip、--humanize、--fingerprint-seed、--allowed-domains、--blocked-domains、--enable-unsafe-eval、--upload-allow-dir、--download-dir、--max-pages、--self-test。
  • ワンクリックで統合できる Smithery YAML。
  • ラッパーは MIT ライセンスです。上流の CloakBrowser Chromium バイナリはプロプライエタリで、無料での再配布は禁止されています。

ライセンス


謝辞

  • CloakHQ/CloakBrowser — 実際の処理を担う、パッチ適用済みの Chromium。
  • @playwright/mcp — ツールの命名とアクセシビリティツリーを優先する設計が、このサーバーの着想となりました。
  • @modelcontextprotocol/sdk — MCP の基盤となる仕組み。

コメント

MCP は初めてですか?

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

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