Steel MCP Server について
Steel MCP Server は、Claude や Cursor などの MCP クライアントから Steel が運用するクラウド上の Chrome を操作できる MCP サーバーです。通常の fetch では読めないページの確認やフォーム入力に向いており、ログイン画面や CAPTCHA では人がブラウザを引き継げます。
主な機能
- 01通常の fetch で取得できないページを読み取り
- 02アクセシビリティツリー由来の要素参照で操作
- 03スクリーンショットと PDF 出力
- 04セッション診断と人によるハンドオフ
- 05プロンプトインジェクション対策と資格情報のマスク
活用シーン
- 01Web ページの価格表を読み取って要約
- 02複数のショップで商品価格を比較
- 03手動ログイン後にアカウントの請求書を確認
- 04申込フォームへの入力とローカルファイルの添付
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Steel MCP サーバー
Claude、Cursor、または任意の MCP クライアントに、クラウド上の実際の Chrome を提供します。通常の
fetchをブロックするページを読み込み、フォームに入力し、スクリーンショットを撮影できます。ログインや CAPTCHA に人の対応が必要な場合は、ブラウザーを人に引き継げます。ブラウザーはSteelによって実行されます。
ステータス: 3.0.0。リリースからダウンロードできます。
npm では公開されていません。mcp.steel.devはまだ稼働していません。
インストール
Steel API キーが必要です。無料プランでお試しいただけます。
macOS または Windows の Claude
steel-mcp-2.0.1.mcpb
をダウンロードして開きます。Claude がインストールし、Steel API キーを尋ねます。Node のインストールは不要です。
インストール済みのバンドルを置き換えた場合は、インストーラーの処理が完了してから Claude を終了して再起動し、新しいツールカタログを Claude に読み込ませるため、新しい会話を開始してください。
Claude Code
claude mcp add steel -e STEEL_API_KEY=your-steel-api-key -- npx -y github:steel-dev/steel-mcp-server
初回実行時にはサーバーがクローンされ、ビルドされるため、約 1 分かかります。次回以降はすぐに起動します。
Cursor、VS Code、その他の MCP クライアント
クライアントの MCP 設定に以下を追加します。
{
"mcpServers": {
"steel": {
"command": "npx",
"args": ["-y", "github:steel-dev/steel-mcp-server"],
"env": { "STEEL_API_KEY": "<your-steel-api-key>" }
}
}
}
チェックアウトから実行する場合は、npm installでサーバーをビルドします。commandにはnodeを、argsには/absolute/path/to/steel-mcp-server/dist/stdio.jsを指定してください。
セルフホストの steel-browser
steel-browserイメージを実行し、API キーの代わりにSTEEL_LOCAL=trueを設定します。キーは不要で、送信もされません。セルフホストの Steel では、一度に実行できるブラウザーセッションは 1 つです。また、マネージドプロキシ、ブラウザープロファイル、マネージド認証情報、CAPTCHA 解決機能はありません。これらのいずれかを要求するツールは、その理由を明示して返します。
チーム向けの共有エンドポイント
dist/hosted.jsは、各呼び出し元がそれぞれの Steel キーを使用する形で、Streamable HTTP 経由でも同じツールを提供します。Claude Code は直接接続できますが、Claude Desktop にはmcp-remoteブリッジが必要です。デプロイ、Redis、トレース、クライアント用の設定例については、docs/HOSTING.mdを参照してください。
依頼できること
| 依頼 | 処理内容 |
|---|---|
| 「このページを読んで、料金表を要約して。」 | steel_scrapeを 1 回実行します。ブラウザーセッションは不要で、解放するものもありません |
| 「この商品の価格を、3 つのショップで比較して。」 | ステートレスな読み取りを 3 回行います。ショップでの表示に JavaScript が必要な場合は、セッションを使用します |
| 「アカウントにサインインして、先月の請求書を確認して。」 | セッションとスナップショットを作成し、ログイン画面でブラウザーを引き渡します。サーバーがパスワードを推測することはありません |
| 「CV の内容を使って、この申請書に入力して。」 | エージェントが通常の項目に入力し、その後steel_session_handoffによって、同じブラウザー内でローカルの CV を選択できます |
| 「スライド用に、この記事の冒頭をスクリーンショットにして。」 | steel_screenshotを 1 回実行します。小さければインラインで表示され、常にダウンロード用リンクも表示されます |
| 「前回のブラウザーセッションで何が起きた?」 | steel_session_diagnosticsが、直近に解放されたセッションを読み取ります。新しいブラウザーは起動されません |
仕組み
- まず読み、必要なときだけブラウズします。
steel_scrapeはページに関するほとんどの質問に回答し、課金対象のセッションを開始しません。セッションは操作が必要な場合にのみ作成され、タスクの完了後に解放されます。 - ピクセルではなく要素を扱います。
steel_snapshotとsteel_findは、ページをアクセシビリティツリーとして読み取り、対象にできる要素に@eN参照を付与します。steel_actは参照を使ってクリック、入力、フォームへの記入を行います。スクリーンショットは人が確認するためのものであり、操作対象を狙うためには使いません。 - 操作結果として変更内容を報告します。 クリックすると、ページが移動したか、DOM が変更されたか、フォーカスが移動したかが返されます。何も変わらなかった場合は、成功したと主張せず、その旨を応答します。参照が使えなくなった場合は、理由と次に呼び出すべきものをエラーで示します。
- 機密性の高い部分は人が対応します。 MCP Apps に対応したホストでは、Claude などの会話内に実行中のブラウザーがインラインで表示されます。操作を引き継ぐと、ログイン、CAPTCHA、支払い、ローカルファイルの操作を人が行えるようになり、操作を戻すとブラウザーがエージェントに返されます。エージェントは続行する前にページを再読み込みします。ログイン画面や CAPTCHA が表示されると、自動的に引き継ぎが開始されます。保存済みのブラウザープロファイルや管理対象の認証情報は、推測せず
steel_session_optionsで検出します。詳しくはdocs/SESSIONS.mdをご覧ください。 - ページの内容はデータであり、指示ではありません。 ページから読み取ったものはすべて、隠しテキストやその他のプロンプトインジェクションの媒介物が除去された
<untrusted-page-content>ブロック内に届きます。パスワードや認証情報は、応答やログに記録される前に伏せ字になります。
ツール
デフォルトの browse プロファイルでは、16 個のツールを利用できます。STEEL_PROFILE=scrape では最初の 3 つだけが公開され、ブラウザーは起動しません。
全ツールの一覧
| ツール | 機能 |
|---|---|
steel_scrape | 予算内でページと範囲を限定したリンクおよびメタデータを読み取ります。ブラウザーセッションは開始しません |
steel_screenshot | 人が確認するための URL、または視覚的な確認のためのライブセッションを撮影します。URL の撮影ではプロキシを利用できます |
steel_pdf | ページを PDF に変換してリンクを返します。プロキシを利用できます |
steel_session_create | 操作可能なブラウザーセッションを開始します |
steel_session_release | セッションを終了して課金を停止します |
steel_navigate | セッションを URL に移動します |
steel_snapshot | ページをアクセシビリティツリーとして読み取り、@eN 参照を付与します |
steel_find | ページ全体を読み取らずに、テキスト、安全な正規表現、またはロールを使って要素を特定します |
steel_act | クリック、入力、フォームへの記入、選択、ホバー、スクロール、キーの押下、戻る操作、オーバーレイの閉鎖を行います |
steel_wait_for | 指定されたテキスト、セレクター、または URL が表示されるまで待機します |
steel_session_diagnostics | セッションのアクティビティを読み取るか、ブラウザーを起動せずにこの認証情報の有効なハンドルを再検出します |
steel_session_handoff | 人が同じブラウザーを排他的に操作できるように一時停止し、その後エージェントに操作を戻します |
steel_session_replay | 明示的に要求された場合に、完了したセッションの Steel ダッシュボードリンクを返します |
steel_batch | 既知の取り消し可能な手順を 1 回の呼び出しで実行します。ログイン、支払い、最終確認の前に操作を人に引き継ぎます |
steel_session_options | デフォルト以外のセッションを計画し、保存済みプロファイル ID や管理対象ログインの名前空間を検出します |
steel_session_live_view | インラインビューアーに接続情報を渡します。ホストはこのツールをモデルから隠します |
| 変数 | デフォルト | 意味 |
|---|---|---|
STEEL_API_KEY | Steel Cloud で必須です。セルフホスト環境には送信されません | |
STEEL_LOCAL | false | true にするとローカルの steel-browser を起動し、API キーが不要になります |
STEEL_BASE_URL | https://api.steel.dev | Steel REST のベース URL です。末尾に /v1 があってもなくても構いません |
STEEL_PROFILE | browse | browse または scrape |
STEEL_SESSION_TIMEOUT_MS | 900000 | デフォルトの変更不可なセッション有効期間です。作成リクエストでは、アカウントの上限内で最大24時間まで指定できます |
STEEL_INACTIVITY_TIMEOUT_MS | 600000 | アイドル時の解放までの時間です。引き継ぎに十分な長さで、放置されたブラウザーは約10分間稼働できます |
STEEL_MAX_SESSIONS | 10 | 認証情報ごとの稼働中セッションと作成待ちセッションの合計数です。Redis 使用時はレプリカ全体で適用されます |
STEEL_CONNECT_URL | wss://connect.steel.dev | CDP エンドポイントです。セルフホスト時はベース URL から導出されます |
ログは stderr に構造化 JSON 形式で出力され、stdout には JSON-RPC 以外は出力されません。ホスト型エンドポイントには独自の変数があり、docs/HOSTING.md に記載されています。
トラブルシューティング
サイトが403を返す、またはチャレンジページが表示されます。 これはボット検出であり、バグではありません。エラーにはベンダー名と次に試すことが1つ記載されます。一度に変更するのは1つだけにしてください。steel_session_diagnostics で何が起きたか確認できます。
マネージドプロキシまたは CAPTCHA の解決が支払いエラーで失敗します。 これらを利用するには、Launch で10ドルの認証済み有料残高が必要です。無料クレジットは対象外です。
@eN 参照が機能しなくなりました。 エラーには理由が記載されます。ページが遷移した、対象を含むフレームが新しいドキュメントを読み込んだ、ノードが削除された、または要素のロールや名前が変わった、のいずれかです。また、復旧のために呼び出す内容も示されます。
クリックしても何も変わらないと報告されます。 別の対象をクリックした可能性があります。オーバーレイが対象を覆っている場合は、エラーにその名前が記載されます。dismiss_overlays を指定して steel_act を実行し、再試行してください。対象がフレーム内にある場合は、フレームが監視されていないことがレスポンスに示されます。再度クリックするのではなく、新しいスナップショットを取得してください。
セッションが消えたように見えます。 Steel は、10分間操作がない場合と、プランの制限時間に達した場合にセッションを解放します。再度操作する必要がある場合にのみ、新しいセッションを作成してください。以前のアクティビティを確認するには、ダッシュボード UUID を指定して steel_session_diagnostics を呼び出すか、ID を指定せずに最新の情報を取得してください。
steel_session_create で「Concurrency limit reached」と表示されます。 ご利用の Steel プランで許可されている同時ブラウザー数を超えています。解放し忘れたセッションもカウントされます。steel_session_release を呼び出すと、1つのセッションがすぐに解放されます。
STEEL_API_KEY に関するメッセージが表示され、拡張機能の起動に失敗します。 キーがサーバーに届いていません。Claude で拡張機能の設定を開き、もう一度入力してください。このフィールドは書き込み専用のため、空欄でも入力済みでも同じように表示されます。
トレースがリクエストされましたが、開始できませんでした。 デスクトップバンドルには OpenTelemetry エクスポーターのスタックが含まれていません。サーバーはこのことを一度ログに記録し、通常どおり動作します。ソースコードをチェックアウトしている場合は、@opentelemetry/sdk-node と @opentelemetry/exporter-trace-otlp-http をインストールできます。
セキュリティとプライバシー
サーバーは独自のデータを保持しません。ツール呼び出しで指定された URL とページ操作を Steel に送信し、Steel がブラウザーを実行して、ページの応答を返します。ページのコンテンツは MCP クライアントに渡され、保存、ログ記録、または他の場所への転送はされません。会話に関する情報は収集されず、標準の OTEL_* 変数を設定しない限り、テレメトリーエクスポーターも読み込まれません。Steel が実行するブラウザーセッションの取り扱いについては、Steel プライバシーポリシーをご覧ください。
ウェブページにはプロンプトインジェクションが含まれることがあり、フィルタリングですべてを取り除けるわけではありません。データの送信、購入、アカウントの変更を行うブラウザー操作は確認してください。脅威モデルと現在の緩和策については、RESEARCH.md §7 をご覧ください。脆弱性は、公開 issue ではなく SECURITY.md の説明に従って報告してください。
開発
npm run build
npm run typecheck
npm run lint
npm test # unit + integration
npm run budget # tools/list byte budget per profile
npm run conformance # MCP conformance suite
npm run test:browser # runs the inline viewer and the frame snapshot in a real Chrome
npm run test:e2e # starts, waits for and tears down the real-browser stack
CLAUDE.mdに作業ルールが記載されています。このプロジェクトではTDDを実践しているため、変更は失敗するテストから始めます。RELEASING.mdでは、この1つのパッケージからリリースされるもの(デスクトップバンドル、コンテナーイメージ、ホスト型サービス)について説明しています。NOTES.mdにはSteelのAPIとChromeを対象に測定した内容が記録されており、RESEARCH.mdには設計の背景にある決定事項が記載されています。
貢献を歓迎します。フォークしてブランチを作成し、変更内容とその理由を記載したプルリクエストをお送りください。バグを報告する場合は、呼び出したツールとエラーテキストを添えてissueを作成してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。