mcpField
U
unbrowser by Unchained

unbrowser by Unchained

ローカル
unchainedsky.comブラウザ自動化1610 週間前に更新

unbrowser by Unchained について

unbrowserは、フルブラウザーを使わずに構造化されたページ情報を扱う、エージェント向けのステートフルな非ビジュアルWebランタイムです。静的ページ処理と任意の制限付きスクリプト実行に対応し、実ブラウザーへの切り替え時期も示します。

主な機能

  1. 01構造化ページマップとDOMクエリ
  2. 02Cookie・フォーム・リンクの状態保持
  3. 03ページ要素の安定した参照
  4. 04任意の制限付きQuickJS実行
  5. 05チャレンジとSPAのシグナル検出
  6. 06ブラウザーへ切り替えるための案内

活用シーン

  1. 01静的ページからリンクや内容を抽出
  2. 02セッション内でHTMLフォームを送信
  3. 03軽量なクライアント描画ページを調査
  4. 04Chromeが必要なタスクを判定

MCP 対応

MCPクライアントにnavigate、query、extractなどのWebナビゲーション・抽出ツールを提供します。stdioまたは共有Streamable HTTPエンドポイントで実行できます。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
pypipyunbrowser0.0.21
cargounbrowser0.0.21

ツール

33

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

パラメーター型必須説明
urlstringはい取得する絶対 URL
exec_scriptsbooleanいいえ解析後にページの <script> タグ(インライン + 外部 src)を実行し、イベントループが落ち着くまで待機して、DOMContentLoaded + load を発火します。既定値は false です。
include_asciibooleanいいえ人が読みやすい ASCII blockmap グリッドを含めます(JSON フィールドと重複します)。既定値は false です。

詳細

unbrowser

エージェント向けの低コストなブラウザ処理。ネイティブバイナリ1つ。Chromeは不要です。

unbrowser MCP server

公式 MCP Registry ID: mcp-name: io.github.protostatis/unbrowser

unbrowser は、エージェント向けのステートフルな非ビジュアルウェブランタイムです。curl/WebFetch と実際のブラウザの中間に位置し、Cookie と DOM の状態を保持して、クエリ可能な要素参照を返し、リンクや HTML フォームを処理し、チャレンジや SPA のシグナルを検出します。また、静的 HTML だけでは不十分な場合に、範囲を限定した QuickJS のページスクリプトを実行できます。

デフォルトの navigate は、高速な静的/SSR 処理です。 範囲を限定した QuickJS の実行が必要な場合に限り、exec_scripts: true を設定してください。大規模な SPA、ピクセル、V8 の忠実度、拡張機能、対話型のボット対策チャレンジには、実際の Chrome を使用してください。

インストールする前に、ライブ公開ウェブデモをお試しください。このデモで受け付けるのは、ページに表示されている固定の公開ソースセットのみです。個人データ、Cookie、認証が必要なタスクは送信しないでください。公開サイトでのスモークテストには、共有 Streamable HTTP MCP エンドポイント https://unchainedsky.com/unbrowser-mcp を利用できます。本番環境のセッションにはローカルインストールを使用してください。

アクセスが許可されているサイト、アカウント、データに対してのみ unbrowser を使用してください。 チャレンジの検出や Cookie のインポートによって、アクセス制御やサイトの利用規約を回避する許可が与えられるわけではありません。セッション Cookie は認証情報として扱ってください。ローカルに保管し、許可されたタスクに限定して使用し、公開デモには決して送信しないでください。

適切なティアを選ぶ

必要なものcurl/WebFetchunbrowser実際の Chrome
静的/SSR HTML生のレスポンス構造化された BlockMap + DOM クエリ完全なブラウザー
Cookie、リンク、HTML フォーム自前で実装組み込み組み込み
クライアント側のページスクリプト❌範囲を限定した QuickJS、オプトインV8
ピクセル、Canvas、WebGL、Workers、拡張機能❌❌✅
エージェント向けの出力自前で解析要素参照、ページシグナル、構造化抽出自前で CDP/DOM を解析
対話型のアクセスチャレンジ❌検出して停止、または上位ティアへ移行許可されたブラウザー/人間による確認

HTTP だけでは機能が足りず、フルブラウザーのコストが高すぎる場合に unbrowser を使用してください。ページで Chrome が必要な場合、実現できない互換性があるかのように装うのではなく、出力でエージェントに上位ティアへの移行を指示します。

クイックスタート

Docker — Linux amd64/arm64、プルサイズ約13 MiB
docker pull ghcr.io/protostatis/unbrowser:latest

# One-shot navigation
docker run --rm ghcr.io/protostatis/unbrowser:latest \
  navigate https://example.com --json

# Default mode: MCP over stdio
docker run --rm -i ghcr.io/protostatis/unbrowser:latest

イメージは distroless で、root 以外のユーザーとして実行されます。シェル、パッケージマネージャー、永続状態はありません。本番環境では :vX.Y.Z またはイメージダイジェストを固定してください。

Python
pipx install pyunbrowser   # recommended on macOS / modern Linux
# or, inside a Python 3.10+ virtual environment:
pip install pyunbrowser
from unbrowser import Client

with Client() as ub:
    ub.navigate("https://news.ycombinator.com")
    for link in ub.query(".titleline > a")[:3]:
        print(link["text"], link["attrs"]["href"])

macOS では、/usr/bin/python3 は3.9であり、wheelをインストールできません。pipx または Homebrew の Python を使用してください。PyPI の配布名は pyunbrowser ですが、インポート名と実行ファイル名は引き続き unbrowser です。

MCP
{
  "mcpServers": {
    "unbrowser": {
      "command": "unbrowser",
      "args": ["--mcp"]
    }
  }
}

最小構成:"--mcp-profile", "minimal" を追加すると、navigate/query/extract/help のみが公開され、エージェントは help(topic) を使って残りの機能を見つけられます。Python ラッパーには、3つのツール(search/open/help)を備えたスマートサーバーが unbrowser-smart コンソールスクリプトとして含まれています。

Docker MCP の設定
{
  "mcpServers": {
    "unbrowser": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "ghcr.io/protostatis/unbrowser:latest"
      ]
    }
  }
}

Cargo、リリースアーカイブ、ソースビルド、永続シェルセッション、生の JSON-RPC、すべての MCP オプションについては、インストールとインターフェースのリファレンスを参照してください。

エージェントが得られる情報

  • navigate は BlockMap を返します:ページタイトル、ランドマーク、見出し、操作可能な要素、密度シグナル、ASCII のアウトラインが含まれます。サイズはページによって異なり、固定トークン数を保証するものではなく、計画に役立つよう構造化されています。
  • 安定した要素参照(e:142):要素を一度クエリすれば、HTML を再解析せずに click、type、または submit を実行できます。
  • 状態を保持する Cookie とフォーム:Cookie jar、GET および URL エンコードされた POST フォーム送信、リンク、リダイレクトはセッション内で維持されます。
  • ページとチャレンジのシグナル:density.likely_js_filled、thin_shell、challenge.provider により、スクリプトを実行するか、埋め込みデータを調べるか、停止するか、許可されたブラウザーセッションにエスカレーションするかをエージェントが判断できます。
  • すべての結果にルーティング支援機能:micro_hint(次に行う具体的な手順)、next_tools(優先順位付きの候補)、avoid(実行できる処理がないツール)、および再試行可能性/重大度/証拠を伴う安定した escalation 分類(challenge、thin_shell、partial_result など)が含まれます。推奨事項が avoid と矛盾することはありません。
  • 構造化されたヘルパー:ルートの検出、カードの抽出、テーブルの正規化、text_main、セレクターのデバッグにより、一般的な抽出ワークフローに対応します。

スクリプトモードとエスカレーション

{"id":1,"method":"navigate","params":{"url":"https://example.com","exec_scripts":true}}

exec_scripts: true を指定すると、インラインスクリプトと外部スクリプトが、制限付きウォッチドッグのもとで QuickJS 上で実行されます。これにより、軽量なハイドレーションや取得可能なデータを反映できますが、V8 やレンダリングエンジンではありません。負荷の大きい React/Vue/Ember アプリでは、空のシェルが残ることがあります。

許可されたタスクで実際のピクセル、Canvas/WebGL、Workers、ブラウザー拡張機能、V8 互換性、認証済みプロファイル、または人間による確認が必要な場合は、unchainedsky-cli または Unchained にエスカレーションしてください。ユーザーが Chrome ですでに許可されたセッションを確立している場合、cookies_set を使って必要なセッション Cookie をローカルにインポートでき、有効期限が切れるまで利用できます。これはサイトの制御を回避する許可ではありません。

ドキュメント

必要な情報参照先
インストール方法、セッション CLI、単発 CLI、raw RPC、MCP、シム、RPC の全一覧使用リファレンス
スクリプトの互換性、SPA シグナル、チャレンジへの対処、許可された Cookie の引き渡し、エスカレーション互換性とエスカレーション
配布とサポート対象のディレクトリ一覧配布に関する注意事項
ネイティブバイナリのビルドビルド手順

ライセンス

Apache-2.0 — LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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