llm-wiki-chrome
LLM Wiki for Chrome
公開された、コンテンツフリーな実行基盤。ターゲットに特化したllm-wikiアダプタ向け。 1つのChrome拡張機能、1つの許可リスト登録済みNative Messagingホスト、プライベートUnixソケットリレー、およびバージョン管理された型付きジョブ契約を提供します。
拡張機能とローカルコネクタのソースは公開されています。ブラウザの許可、ページデータ、認証情報、プライベート結果スロット、ランタイムソケットはローカルに留まり、リポジトリのコンテンツになることはありません。公開ソースの提供は、Chromeウェブストアリリースやユーザーデータ公開の許可を意味するものではありません。
これは自律的な自然言語ブラウザエージェントではありません。小規模な構造化エージェントツールサーフェス(共有タブ、アクセシビリティスナップショット、ビューポートスクリーンショット、セマンティッククリック、プライベートテキスト挿入、キーコード、スクロール)を公開し、すべての呼び出しを同じ正確なターゲット型付きプロトコルにコンパイルします。任意のJavaScript、生のCDPメソッド、ダウンロードされたコード、環境ブラウザアクセス、ページ作成のアクションは受け入れません。プロバイダ固有のアダプタは、重要なワークフローに対して、より強力なルーティング、認証、ジャーナル、リカバリ、冪等性、最終読み返し検証を引き続き担当します。

インストール、コラボレーション、セキュリティ、トラブルシューティングガイド →
クリックしてコラボレーションするフロー
拡張機能は永続的なサイトアクセスやページごとのChromeホスト登録を必要としません。ユーザーはHTTPSページを開き、拡張機能のアクションをクリックします。Chrome上での名称はLLM Wiki for Chromeです。ブラウザ実行基盤の用語は、内部プロトコルと実装のみに限定されます。 そのChromeユーザージェスチャにより、正確なタブ、URL、オリジンに紐付いた、新しい一時的なコラボレーション許可が作成されます。追加のタブをクリックすると、最大16の許可からなる明示的なワークスペースが構築されます。実行基盤は無関係なタブを列挙することはありません。同一オリジン内のナビゲーションにより、正確な許可IDとURLが更新され、古いプログラムはクローズド状態で失敗します。タブがオリジンから離れたり、閉じられた場合、またはユーザーがサイドパネルでそのタブまたはワークスペース全体を停止した場合、許可は取り消されます。
アクティブな許可は、ページ上の固定された緑色のアウトラインと「LLM WIKI • CONTROLLED」のピル、および「ON」のアクションバッジとして表示されます。このマーカーはパッケージ化されており、非インタラクティブ、コンテンツ非依存であり、拡張機能のクリック後にのみ注入されます。許可が取り消されると削除され、ページやジョブのコンテンツを受け取ることはありません。
アクションリスナーはChromeのactiveTab許可を受け取り、その正確なタブのサイドパネルを同期的に開きます。パネル読み込み時に、アクションによって作成された許可を確認します。リレーされたパネルメッセージは、パネルを開こうとしたり、ユーザージェスチャを偽造しようとしたりすることはありません。その接続ボタンはステータス/再試行コントロールであり、activeTab権限を作成するツールバージェスチャの代わりにはなりません。接続状態は、許可がライブローカルコネクタを通じて公開されたことを意味し、エージェントはユーザーに拡張機能の内部を調べさせることなく、browser_statusで準備完了を検出できます。
ローカルエージェントとターゲットアダプタは、ネイティブソケットを通じてプライベートワークスペースを取得します。直接エージェントは、最初にクリックされた正確な許可をリストし、すべてのツール呼び出しで1つのコラボレーションIDを指定する必要があります。サーバーは固定の型付きプログラムをコンパイルし、許可やページが変更された場合はクローズド状態で失敗します。クリックは、その正確なタブに対する制限付き読み取りと構造化インタラクションを許可します。環境ブラウザアクセスを許可することはありません。重要なプロバイダワークフローは、より強力な前提条件と独立した検証のために、ターゲットアダプタを引き続き使用します。
アダプタコードは、一度インストールして信頼する必要があります。コラボレーション許可は、ブラウザUIを通じて検査および検証できるワークフローに対してのみ、リソースごとの登録とプロバイダOAuthを置き換えます。ターゲットアダプタは、オプションのより強力な検証パスとして、ファーストパーティAPIを保持することができます。
ミューテーションプログラムは、assert_ax_private_sha256を使用して、プロバイダ所有のリビジョンフィンガープリントをバインドできます。実行基盤は、制御されたミューテーション境界の直前に、公開された正確なタブ上の制限付きアクセシビリティプロジェクションを再計算し、ドリフトがあればクローズド状態で失敗します。期待されるハッシュはプライベート値のままです。プロジェクションされたページコンテンツもハッシュもサイドパネルには表示されません。
プロバイダアダプタは、バンドルされたクライアントを直接使用します。
from browser_executor.client import BrowserExecutorClient
executor = BrowserExecutorClient()
collaboration = executor.collaboration_for_url(expected_url)
if collaboration is None:
raise RuntimeError("click the extension on the target page")
# Bind collaboration_id, url, and origin into the signed typed program.
result = executor.run(program, private_values=private_values)Codexやその他のMCPクライアントは、プログラムを自分で構築する代わりに、プロバイダニュートラルな直接コラボレーションサーフェスを使用します。
.venv/bin/python adapter.py mcp-serverMCPサーバーは、明示的なタブライフサイクル、正確な同一オリジンナビゲーション、待機、アクセシビリティスナップショット、ビューポート/領域/全ページスクリーンショット、要素ジオメトリ、クリック/ホバー/タイプ/選択/ドラッグ/キー/スクロール、制限付き診断、登録済みルートファイル転送、パスワードマネージャーUIアクティベーション、インメモリワークフロードラフトを含む、固定された構造化ツールインベントリを公開します。任意のプログラム、CSSセレクタ、スクリプト、自然言語実行ツール、無関係なタブのクエリはありません。ページコンテンツは、アクティブなリクエストの呼び出し元ローカルエージェントにのみ返され、このリポジトリによって永続化されたり、サイドパネルに表示されたりすることはありません。
Related MCP server: browser-mcp
開発状態
現在の開発ブランチは、0.0.1の基盤を最初の制限付き実行スライスで拡張します。
厳密なプログラムハッシュ化と検証;
PythonクライアントとMV3バリデータのためのクロス言語ポリシー決定テスト;
正確なHTTPSターゲットと制限付きアクション宣言;
永続的なホスト権限のない、クリックで作成されたactiveTab許可;
プライベートな正確なURLルックアップを備えた、制限付きマルチタブコラボレーションワークスペース;
ローカルクライアントによって集約されたChromeインスタンスごとのネイティブソケット。これにより、複数のChromeプロファイルやプロセスが互いの共有タブを上書きできません;
どのタブが制御されているかを正確に示す、固定されたページアウトライン/ピルとツールバーバッジ;
明示的な許可のみを含む緑色の「LLM Wiki」タブグループ;
同一オリジンでの開く/ナビゲート/履歴/リロード、正確なタブのフォーカス/クローズ、セマンティック待機、ホバー、オプション選択、ドラッグ&ドロップ、スクロールから要素へのプリミティブ;
アタッチされた子フレームターゲット全体にわたる平坦化され制限されたアクセシビリティコレクション。セッションにバインドされたジオメトリとインタラクションを備えています。セマンティックAX発見は、開かれたシャドウツリーもカバーしますが、任意のDOMトラバーサルは許可しません;
領域と寸法が制限された全ページスクリーンショット、セマンティック要素ジオメトリ、制限されたパフォーマンスメトリクス;
realpathチェック、ダウンロード完了検証、危険状態の強制、ストリーミングハッシュ、暗黙のファイルシステム権限なしを備えた、マシンローカルのアップロード/ダウンロードルート;
手動、承認済み計画、自動の制限付き認可モード。保護されたアクションは常にローカル確認とコンテンツフリーなセッション決定カウンターにフォールバックします;
コンテンツフリーな完了/注意通知;
キャンセル可能なインメモリ読み取り専用スナップショットスケジュール。そのプライベート結果は一度取得され、権限はMCPプロセスまたはタブ許可とともに期限切れになります;
すでに入力されたエージェントアクションを、ハッシュバインドされ、レビュー必須で、意図的に再生不可能なプロバイダドライバードラフトにインメモリ記録;
認証情報の値を受け取らないパスワードマネージャーUIアクティベーション;
ターゲットアダプタを正確な許可、承認済み計画ハッシュ、1つのミューテーションコールバック、アダプタ所有の事後条件検証にバインドするプロバイダドライバーSDK;
アクションリスナータブ許可、サイドパネルのステータス/再試行コントロール、コンテンツフリーなエージェント準備完了ツール;
コンテンツフリーなサイドパネルワークスペース、進行状況メーター、タブごとの取り消し、キャンセル;
個別の読み取りとミューテーション機能;
Pythonクライアント内の1つの制御されたミューテーションコールバック;
安定した拡張機能IDと正確なネイティブホストオリジン;
プライベートローカル状態、短いソケットパス、メッセージ制限、1つのアクティブジョブ;
正確なタブアクティベーションとレビュー済み同一オリジンナビゲーション;
拡張機能のクリックを即座に検出可能かつエージェントが制御可能にする直接ローカルMCPエージェントサーフェス。プロバイダOAuth許可は不要;
許可リストに登録されたDOMおよびアクセシビリティツリーの読み取り、待機、プライベート抽出;
実行基盤側での永続化を伴わない、バイト制限付きプライベートビューポートJPEGキャプチャ;
制限付きビューポートスクロール、重複排除による長いリストの収集、プライベートAXリンク/説明抽出;
プライベート結果スロットを通じた制限付き正確なタブのブラウザログキャプチャ;
クエリ文字列を除去し、ヘッダー、ボディ、クッキー、イニシエーター、セキュリティ詳細を無視する、制限付き正確なタブのリクエストメタデータキャプチャ;
スカラー引数のみを保持し、リモートオブジェクトを評価または逆参照しない、制限付き正確なタブのコンソールAPIキャプチャ;
型付きクリック、フォーカス、キーコード、プライベートテキスト挿入アクション;
キャンセル、ターゲットフォーカスドリフト検出、結果サイズ制限、ベストエフォートのデバッガクリーンアップ(キャンセルは次の制限付きアクションで停止し、すでに開始されたミューテーションをロールバックできません);
プロバイダ効果の前の1回限りの事前ミューテーション認可;
ルートフリーのllm-wikiセルフテストマニフェスト;
接続、実行中、認可、失敗状態を備えたコンテンツフリーな拡張機能ステータスパネル。
このブランチはリリースやインストール済みプロバイダの代替ではありません。ターゲットアダプタのシャドウラン、プロバイダ所有の検証、アップグレード/ロールバックテスト、明示的なリリース承認は、統合された0.1.0の前に引き続き必要です。
リポジトリの境界
追跡が許可される材料:
実行可能コードと拡張機能アセット;
プロトコルスキーマとセキュリティ文書;
合成フィクスチャと決定論的テスト。
実際のリソースURLや識別子、ページテキスト、スクリーンショット、キャプチャ、計画、レシート、抽出結果、クッキー、認証情報、ブラウザストレージ、プロバイダコーパスをコミットしてはいけません。ランタイムの入力と出力は、ターゲットアダプタの別途制御されるデータプレーンに留まり、可能な限りメモリ内に保持されるべきです。
アーキテクチャ
local agent through fixed MCP tools OR a targeted provider adapter
-> select one exact user-created click grant from the private collaboration workspace
-> deterministic typed program + exact approved plan hash
-> BrowserExecutorClient over a private Unix socket
-> allowlisted Native Messaging host
-> shared MV3 extension on the exact user-exposed tab
-> one-shot before-mutation challenge when required
-> private result slots returned only to the targeted adapterllm-wikiは、このリポジトリのルートフリーなself-testアダプタマニフェストを参照する可能性がありますが、外部の編集やリサーチリクエストを直接実行基盤にルーティングすることはありません。
パッケージングとインストール
インストール可能な製品は、Chromeのセキュリティ境界で分割されます。
llm-wiki-chromeネイティブコンパニオン: Pythonクライアント、固定MCPサーバー、Native Messagingホスト、インストーラー、診断、パッケージ化された拡張機能アセット;LLM Wiki for Chrome: 公開ソースのMV3拡張機能ZIP。Chromeウェブストアへの公開は、明示的な承認が必要な別のリリースステップです。アンパックされたパスを読み込むことは、開発ワークフローのままです。
開発専用のHomebrew Formulaは、HEADビルドとしてnvk/tapから利用可能です。これは意図的に安定リリースではありません:
brew install --HEAD nvk/tap/llm-wiki-chrome
llm-wiki-chrome install
llm-wiki-chrome doctorinstallは、正確なオリジンのNative Messaging登録を書き込みます。デーモンはインストールしません。Chromeはオンデマンドでホストを起動し、標準入出力を介して通信します。各Chromeホストは、決定論的な/tmp/llm-wiki-chrome-<uid>/ランタイムディレクトリの下に、プライベートなプロセスごとのソケットを作成します。CLI、MCPサーバー、ターゲットアダプタは、それらのソケットを自動的に発見します。通常のソケット引数、ポート、ペアリングコード、環境変数はありません。既存の環境オーバーライドは、例外的なサンドボックス化または開発セットアップの場合にのみ残されています。
アンパックされた開発インストールの場合、パッケージに正確なパスを問い合わせます:
llm-wiki-chrome extension-pathchrome://extensionsからそのディレクトリを読み込み、llm-wiki-chrome doctorを実行します。healthy: trueはパッケージとNative Messaging登録を確認します。connected: trueは、Chromeが拡張機能のネイティブポートを開いている間に表示されます。ネイティブコンパニオンの登録のみをアンインストールするには:
llm-wiki-chrome uninstallファイル転送はデフォルトで無効です。~/.config/llm-wiki/browser-executor.jsonで明示的なマシンローカルルートのみを有効にします:
{
"upload_roots": ["/absolute/private/staging/uploads"],
"download_roots": ["/absolute/private/staging/downloads"]
}すべてのパスは最終的なシンボリックリンクを拒否し、その親チェーンを解決し、登録されたルート内に留まらなければなりません。アップロード値はプライベートスロットのみを移動します。ダウンロードは完了し、Chromeによって安全であると受け入れられ、登録されたルート内にあり、呼び出し元に返される前にローカルコンパニオンによってハッシュ化されなければなりません。
サイドパネルでは、Manual(手動)、Approved plan(承認済み計画)、Automatic bounded jobs(自動バウンドジョブ)を選択できます。デフォルトはApproved planです。ファイルアップロード、ダイアログ処理、およびcredential-brokerの有効化は、引き続き保護されたアクションであり、常にローカルでの手動確認が必要です。認証履歴は、ページコンテンツのログではなく、コンテンツフリーのセッションカウンターです。
ワークフロー記録は、固定されたMCPサーフェスを通じて既に要求されたタイプ操作のみをキャプチャします。browser_record_stopは、メモリ内のハッシュバインドされたレビュー必須のドラフトを返します。汎用エグゼキュータはこれを決して再生しません。対象アダプタが、バージョン管理されたプロバイダワークフローをレビュー、コンパイル、認可、ジャーナリング、および独立して検証する必要があります。直接サーフェスは、正確なグラントとMCPプロセスがアクティブである間、読み取り専用スナップショットのバウンドされたメモリ内スケジューリングのみを許可します。永続的または定期的なスケジューリング、変更、リカバリ、およびジャーナルは、対象アダプタまたは外部スケジューラに残り、拡張機能のインテントレイヤーには決して残りません。
対象アダプタは、browser_executor.driver.ProviderDriverSessionを使用して実行境界を集中管理できます。これにより、計画ハッシュまたは正確なグラントのドリフトが拒否され、アダプタ所有のstatus: verified事後条件が必要になります。
公開せずに、決定論的なコンテンツフリーのChrome Web Store ZIPをビルドします。
python3 scripts/package_extension.pyこれらのビルドコマンドによって、リリース、タグ、ストアへのアップロード、またはインストール済みのアップグレードは実行されません。
開発
python3 -m venv .venv
.venv/bin/python -m unittest discover -s tests -v
.venv/bin/python -m compileall -q adapter.py browser_executor tests
node --check extension/service-worker.js
node --check extension/protocol.mjs
node --check extension/executor.mjs
node --check extension/sidepanel.js決定論的なスイートは、分離された実際のブラウザを使用したスモークテストによって補完されます。これには、一致するChrome for TestingとChromeDriverのペア、および実行時に提供される正確な承認済みの読み取りターゲットが必要です。通常のChromeプロファイルには触れず、キャプチャされたビューポートを印刷、永続化、または返しません。
LLM_WIKI_BROWSER_E2E_TARGET_URL='<exact approved HTTPS target>' \
.venv/bin/python tests/chrome/run_extension_e2e.py \
--chrome '/path/to/Google Chrome for Testing' \
--chromedriver '/path/to/chromedriver'ハーネスは、展開された拡張機能を一時ディレクトリにコピーし、テスト専用の拡張機能ページを追加し、署名された読み取りプログラムをヘッドレスChromeで実行し、コンテンツフリーのカウンターのみを返します。リポジトリによってChromeバイナリがダウンロードまたはインストールされることはありません。
セルフテストはコンテンツフリーです。
.venv/bin/python adapter.py describe
.venv/bin/python adapter.py execute --request /private/request.json \
--response /private/response.jsonソースチェックアウトのネイティブホストを一度インストールし、そのMCPコマンドを登録します。
.venv/bin/python adapter.py install
codex mcp add llm-wiki-browser \
-- .venv/bin/python adapter.py mcp-server登録後にエージェントセッションを再起動すると、固定されたツールインベントリが利用可能になります。ユーザーが特定のHTTPSタブで拡張機能をクリックするまで、Chromeは何も公開しません。コラボレーションを停止すると、グラントは取り消されます。プライベートなデフォルトの/tmpディレクトリにアクセスできない例外的なランタイムは、両方のコマンドに対して一貫してLLM_WIKI_BROWSER_EXECUTOR_NATIVE_SOCKETを設定する場合がありますが、これはパッケージ化されたユーザーフローの一部ではありません。
browser-installは、正確なオリジンのNative Messagingマニフェストとランチャーを書き込みます。明示的なインストールまたは移行タスクの間にのみ使用してください。展開された拡張機能の読み込み、通常のChromeプロファイルの変更、インストール済みコピーのアップグレードはテストスイートの一部ではなく、明示的なユーザーの指示が必要です。
セキュリティモデル
エグゼキュータは、正規のプログラムハッシュ、計画ハッシュ、アクティブなコラボレーションID、固定されたドライバーID/バージョン、正確なターゲット、機能、制限、アクション語彙、プライベートスロット、および結果の許可リストを、Pythonと拡張機能の両方で独立して検証します。永続的なホスト権限、<all_urls>アクセス、またはコンテンツスクリプトはありません。ChromeのactiveTabグラントは、ユーザーが拡張機能をクリックしたときにのみ作成されます。インタプリタは固定されたCDPメソッド許可リストを持ち、Runtime.evaluate、生のメソッド、スクリプト、またはページ生成アクションを受け入れません。
固定されたCDP許可リストには、ペアのLog.enable/Log.disableおよびNetwork.enable/Network.disableウィンドウも含まれます。後者は、バウンドされたプライベートリクエストメソッド、オリジン/パス、リソースタイプ、ステータス、MIME、キャッシュ、および失敗スカラーのみを保持し、クエリ文字列を削除し、ヘッダー、ボディ、クッキー、イニシエーター、セキュリティ詳細、またはリクエストIDを決して保持しません。どちらの機能も、生の診断メソッドやリクエストインターセプトを公開しません。別のペアのRuntime.enable/Runtime.disableウィンドウは、バウンドされたプライベートなRuntime.consoleAPICalledの型、タイムスタンプ、およびスカラー引数のみを保持します。コンテキスト、スタック、説明、プレビュー、オブジェクトIDを無視し、評価、コンパイル、関数呼び出し、スクリプト実行、またはプロパティアクセスを決して許可しません。各Chromeネイティブホストプロセスは、設定されたベースパスの下に一意のプライベートソケットをバインドします。クライアントは厳密に名前付けられたそれらのソケットのみを検出し、それらの明示的なコラボレーションワークスペースを集約し、ジョブを正確なグラントを所有する単一のホストにルーティングします。これにより、複数のChromeプロファイルが互いのリレーを置き換えるのを防ぎながら、ジョブごとに1つの正確なタブを維持します。
エグゼキュータは信頼されたローカルコードであり、オペレーティングシステムのサンドボックスではありません。対象アダプタは、すべての結果的なプロバイダ効果を認可し、プロバイダの最終状態を独立して証明する責任を引き続き負います。直接の変更ツールは、内部の1回限りの境界を越えますが、意図的にプロバイダのトランザクション保証を主張しません。SECURITY.mdを参照してください。
Maintenance
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
- Alicense-qualityBmaintenanceMCP server for controlling a local camofox-browser instance, enabling LLM agents to perform web automation tasks such as navigation, interaction, snapshotting, and content extraction.53MIT
- AlicenseAqualityCmaintenanceAgent-native browser control MCP server that enables AI agents to browse and interact with web pages via accessibility tree snapshots and ref ID-based commands.152MIT
- FlicenseCqualityAmaintenanceEnables safe automation of Chrome browser through a local MCP server and Chrome extension, allowing LLMs to control browser tabs, pages, and computer-use actions with permission controls.50
- Flicense-qualityCmaintenanceMCP server that wraps agent-browser to let LLMs control a real browser, providing tools for navigation, interaction, reading page content, accessibility snapshots, screenshots, and session management.1
Related MCP Connectors
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Live browser debugging for AI assistants — DOM, console, network via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/nvk/llm-wiki-chrome'
If you have feedback or need assistance with the MCP directory API, please join our Discord server