Guida の MCP サーバーはどう動くか
Guida には Model Context Protocol (MCP) サーバーが組み込まれています。Claude Code、Cursor、その他の MCP 対応クライアントのような外部 AI がブラウザーを操作できるのは、このサーバーがあるからです。
この記事では、プロトコル、transport、ツール登録、そして AI が勝手に動かないようにする 3 層の安全モデルを説明します。
MCP とは
MCP は、AI モデルと外部ツールを接続する JSON-RPC プロトコルです。AI は「Navigate ツールを url: https://example.com で呼ぶ」のような要求を送り、サーバーが実行して結果を返します。モデルはブラウザーを直接触りません。見るのはツールの入出力契約です。
MCP には主に次の primitive があります。
- Tools - AI が呼び出せる関数
- Resources - AI が読めるデータ
- Prompts - よく使う操作のテンプレート
Guida は tools と resources を実装し、ブラウザー自動化、データ保存、検索、キュー、ワーカー、ワークフロー台帳などを 100 以上のツールとして公開します。
Transport: ローカル HTTP
Guida はローカル HTTP transport を使います。サーバーは組み込み Kestrel として動き、既定では次の URL を使います。
http://127.0.0.1:9315/stdio ではなく HTTP を使う理由は実用的です。Guida は CLI ツールではなく WPF デスクトップアプリです。stdin/stdout を pipe するより、ブラウザー UI、承認状態、タスク履歴、ワークスペースペインを表示したまま外部 MCP クライアントを接続できる方が自然です。
接続時には、クライアントが initialize し、サーバーが capability を返し、クライアントが tools/list と tools/call を行います。
Client -> initializeServer -> capabilitiesClient -> tools/listClient -> tools/callツール登録
各ツールには名前、説明、パラメーターの JSON Schema、非同期 handler があります。代表的なツールは次のようなものです。
| ツール | 説明 |
|---|---|
Navigate | アクティブタブを URL へ移動 |
Click | CSS selector で要素をクリック |
GetElements | DOM 要素を問い合わせて属性を抽出 |
Screenshot | 表示中 viewport を PNG として撮影 |
ExecuteScript | アプリの Scripting Engine で g.* スクリプトを実行 |
StoreGet / StorePut | ワークスペースストレージを読み書き |
QueueEnqueue / QueueDequeue | 作業キューを管理 |
SearchQuery | インデックス済みドキュメントを全文検索 |
多くのツールは、g.* Scripting API を支える同じサービスへ委譲します。Navigate は g.nav.navigateToUrl() と同じブラウザー操作層を使います。MCP 層は JSON-RPC の要求をサービス呼び出しへ写し、結果を整形する adapter です。
ただし、スクリプトと AI ツールが完全に同じ権限を持つわけではありません。安全モデルが違います。
3 層の安全モデル
Guida では、AI は強力ですが信頼済みではありません。ブラウザーへ届く前に 3 つの層を通ります。
1. 許可済みドメイン
AI が URL へ移動するには、対象ドメインが許可済みである必要があります。Guida は 3 段階の設定を持ちます。
- セッション単位 - アプリを閉じるまで有効
- ワークスペース単位 - ワークスペースフォルダーの
domains.json - グローバル - 設定で常に許可
*.example.com のような wildcard subdomain も使えます。手動閲覧は別で、制限は MCP 由来のナビゲーションに適用されます。
2. ツール承認
許可済みドメイン上でも、監督対象のツール呼び出しには明示的な承認が必要です。Guida は正確なツール名、URL、selector、script code などのパラメーターを表示し、ユーザーが許可または拒否できます。
3. 監査ログ
MCP ツール呼び出しは監査ログへ記録されます。後から、どのツールがどのパラメーターで呼ばれ、成功したか失敗したかを確認できます。AI には自分の監査ログを削除するツールはありません。
認証情報の境界
認証情報は DPAPI で暗号化されます。MCP ツールは復号値を返しません。さらに、MCP 由来スクリプトは g.secrets.getSecret() を使えません。これにより、AI がスクリプト経由で値を読み、ストアへ保存し、後で取得する経路を防ぎます。
なぜここまで必要か
AI にブラウザーを渡すことは便利ですが、通常の自動化より危険な面もあります。見えるブラウザー、明示的な承認、許可済みドメイン、監査ログ、認証情報の分離があって初めて、AI 支援のブラウザー自動化を実務に使いやすくなります。
Guida の MCP サーバーは、この制御を保ったまま AI に作業能力を渡すための橋です。