Flintrail について
Flintrailは、AIエージェント向けのブラウザーMCPサーバーです。実際のChromeを操作し、タスクを記録してLLMを介さずに再生できます。ページのセッションを使ったAPIリクエストの再生や、失敗した手順の特定にも対応します。
主な機能
- 01ブラウザー操作の一括実行
- 02変数付きフローの記録と再生
- 03フィンガープリントによる要素の再特定
- 04ページ内からのAPIリクエスト再生
- 05スナップショット、通信、コンソールの確認
- 06ブラウザー拡張機能でChromiumに接続
活用シーン
- 01Webフォームの操作を繰り返し自動化
- 02ログイン済みセッションを使ったサイト操作
- 03異なる変数でフローを並行再生
- 04失敗した手順だけを修復
MCP 対応
Flintrailは、Chromeの操作、ブラウザーフローの記録と再生、ページやネットワークの確認を行うMCPツールを提供します。stdioと、トークン認証付きのStreamable HTTP接続に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AI エージェントのための最速ブラウザー。
実際の Chrome をリアルタイムで操作します。タスクを一度記録すれば、LLM を介さずにミリ秒単位で再生できます。
またはページを完全にスキップして、セッションを使ってサイト独自の API 呼び出しを再生できます。
なぜ Flintrail なのか
現在のブラウザー MCP サーバーでは、モデルが毎回すべての処理を行います。ページを読み取り、要素を選び、クリックし、再びページを読み取ります。クリックのたびにツール呼び出しが発生し、ツール呼び出しのたびにモデルのターンが必要となるため、数秒かかります。翌日に同じタスクを行う場合も、エージェントは再び同じコストをすべて支払います。
Flintrail は、JIT コンパイラーがコードを扱うようにブラウザーを扱います。
- ライブでは、エージェントがページを操作しますが、一連のアクションを 1 回の呼び出しにまとめ、クリック可能な参照を含む簡潔なスナップショットを取得します。
- 記録では、同じ呼び出しが複数の手掛かりを使った要素のフィンガープリントと
{{variables}}とともにキャプチャされます。 - 再生では、フローがブラウザーの速度で実行され、ステップ間にモデルは入りません。サイトが変更された場合、実行は失敗したステップで正確に停止し、ページをエージェントに返すため、修正が必要なのはその部分だけです。
- API 再生では、Flintrail がサイト独自の fetch/XHR 呼び出しを検出し、同じ Cookie とセッションを使ってページ内から再生できます。レンダリングもクリックも不要です。
ベンチマーク
同じ 5 ステップのタスク(フィールドへの入力、チェックボックスの選択、ページの変更、API を呼び出すクライアントレンダリングのボタンのクリック、結果の待機)を、ヘッドレス Chromium で 10 回実行した場合の中央値です。数値はツール側の実時間のみです。実際のエージェントでは、すべてのツール呼び出しにモデルのターンも必要です。そのため、呼び出し回数を 7 回から 2 回に減らすと、さらに数秒節約できます。
斜線のバーは下限です。MCP もエージェントも使わず、Playwright スクリプトを直接実行した場合と同じクリックを行います。UI をクリックするツールはすべてこの下限に制約されるため、呼び出しごとの比率は控えめです。Flintrail がこの下限に上乗せする時間は呼び出しあたり約 50 ms、Playwright MCP では約 260 ms です。下限を下回る唯一の方法は、クリックをやめることです。それを実現するのが API 再生です。
再現するには、npm run bench を実行します(グローバルには何もインストールしません。Playwright MCP は bench/ の依存関係にのみ含まれます)。
アーキテクチャ
インストール
git clone https://github.com/Soflutionltd/flintrail.git
cd flintrail && npm install && npm run build
Claude Desktop、Claude Code、Cursor(stdio)
{
"mcpServers": {
"flintrail": {
"command": "node",
"args": ["/absolute/path/to/flintrail/dist/cli.js"]
}
}
}
Claude Code:claude mcp add flintrail -- node /absolute/path/to/flintrail/dist/cli.js
あらゆるエージェント、あらゆるマシン(HTTP)
node dist/cli.js --http --host 127.0.0.1 --port 8931
# token is generated once in ~/.flintrail/token (or pass --token / FLINTRAIL_TOKEN)
クライアントは Authorization: Bearer <token> を指定して http://host:8931/mcp に接続します。マシンの外部に公開する場合は、TLS を使用するトンネルまたはリバースプロキシの背後に配置してください。
ブラウザモード
| モード | 用途 | 方法 |
|---|---|---|
attach(デフォルト) | デスクトップでの利用。ログイン済みセッションを維持します。 | 専用のChrome for TestingにCDP経由で接続します。macOSでは、Flintrailがブラウザを検出し、必要に応じてローカルのデバッグポートを使って再起動します(タブは復元されます)。その後、バックグラウンドで専用のタブを開きます。 |
launch | サーバー、CI、Dockerでの利用。 | FLINTRAIL_MODE=launchを指定すると、デフォルトでヘッドレスのChromiumを起動し、~/.flintrail/profileに永続プロファイルを保存します。 |
extension | デバッグポートを使わず、あらゆるユーザーが任意のChromiumブラウザで利用できます。 | FLINTRAIL_MODE=extensionを指定し、Flintrail拡張機能をインストールします。詳細は以下をご覧ください。 |
FLINTRAIL_ALLOW_ANY_BROWSER=1を指定しない限り、Flintrailは個人用ブラウザ(Brave、Edge、Opera、またはmacOSではChrome for Testing以外のブラウザ)への接続を拒否します。普段使いのブラウザはそのままお使いいただけます。
ブラウザ拡張機能
拡張機能を使うのが最も簡単です。コマンドラインフラグもデバッグポートも不要で、Chrome、Edge、Brave、Arc、またはChromium 125以降で動作します。

- インストールします。 最新リリースから
flintrail-extension-<version>.zipをダウンロードして解凍し、chrome://extensionsを開いてデベロッパーモードを有効にし、パッケージ化されていない拡張機能を読み込むをクリックしてフォルダーを選択します。(Chrome ウェブストアへの掲載を準備中です。) - **拡張機能モードでFlintrailを実行します。**たとえば、Claude Desktopでは次のようにします。
{ "mcpServers": { "flintrail": { "command": "npx", "args": ["-y", "github:Soflutionltd/flintrail"], "env": { "FLINTRAIL_MODE": "extension" } } } } - **接続します。**Flintrailアイコンをクリックし、
~/.flintrail/tokenにあるトークンを貼り付けて、接続をクリックします。その後、拡張機能は自動的に再接続します。
仕組み:Flintrailは127.0.0.1:8932でリレーを起動します。拡張機能はトークンを使ってリレーに接続し、一度に1つのタブに対してchrome.debuggerでCDPコマンドを実行します。Playwrightからは通常のCDPブラウザとして認識されるため、すべてのツール、記録、再生がそのまま動作します。エージェントに表示されるのは、エージェント自身が開いたタブか、あなたがエージェントと共有で共有したタブだけです。タブの操作中にChromeが「このブラウザはデバッグされています」というバーを表示するのは、意図した動作です。
実演による学習
エージェントにタスクを説明する必要はありません。ポップアップにフロー名を入力し、記録を開始をクリックして、タブで自分でタスクを実行し、停止して保存をクリックします。拡張機能はエンジンが使用するものと同じ要素フィンガープリントで、クリック、入力、選択、チェックボックスの操作、Enterキーの入力を記録します。パスワードフィールドは記録されません。その後、次のようにします。
fl_flow_set_var("paybyphone-renew", 0, "plate") # turn the typed plate into {{plate}}
fl_run("paybyphone-renew", { "plate": "AB-123-CD" })
これで、ユーザーもLLMも介さずに、各ステップを数ミリ秒でフローを実行できます。
拡張機能モードの制限:ブラウザレベルのCDP(ダウンロードフォルダー、権限、ウィンドウサイズ)は拡張機能では利用できないため、downloadはブラウザ標準のダウンロード手順で保存します。chrome.debuggerで操作されるバックグラウンドタブのダイアログは、応答前にChromeが閉じてしまいます。そのため、このモードでは{do:"dialog"}を使うと、ページ内から次のalert/confirm/promptに応答します。
ツール
| ツール | 機能 |
|---|---|
fl_open | URL をバックグラウンドタブで開き、[eN] の参照を含む簡潔なスナップショットを返します。 |
fl_act | 1 回の呼び出しで複数の操作を実行します:click、dblclick、hover、fill、type、select、check、press、upload、download、goto、back、wait、scroll、mouse、dialog、resize、eval、request。 |
fl_snapshot | ページを再読み込みして確認します:インタラクティブ要素、見出し、テキスト抜粋、同一オリジンのフレーム。 |
fl_extract | ページ内で JavaScript を実行し、結果を返します。 |
fl_network | サイト独自の API 呼び出しを、タイミング、本文、JSON サンプルとともに一覧表示します。 |
fl_screenshot | タブ全体、または 1 つの要素(ref/selector)の JPEG スクリーンショットを、mouse で使用できる CSS ピクセル単位で取得します。 |
fl_console | タブのコンソールエラーと未捕捉例外を表示します(level: "all" を指定すると警告とログも含まれます)。fl_act は新しいエラーが発生すると通知します。 |
fl_record_start / fl_record_stop | ワークフローを記録します。repairFrom を指定すると、正常なステップを保持したまま、残りを再記録します。 |
fl_run | 変数を使ってワークフローを LLM なしで再生します。 |
fl_run_many | 複数の変数セットを使って、並列タブでワークフローを再生します。 |
fl_flows / fl_flow | ワークフローを一覧表示し、1 つを検査します。 |
fl_flow_set_var | デモで記録したワークフローの値を {{variable}} に変換します。 |
fl_extension | 拡張機能の接続状態を表示します。 |
fl_adopt | すでに自分で開いたタブの制御を引き継ぎます。たとえば、手動でサインインした直後に使用します。 |
fl_tabs / fl_close | タブを管理します。 |
例
// one call, five actions
{ "tool": "fl_act", "tab": "t1", "actions": [
{ "do": "fill", "ref": "e1", "value": "AA-111-AA", "var": "plate" },
{ "do": "check", "ref": "e3" },
{ "do": "click", "role": "button", "name": "Continue" },
{ "do": "click", "selector": "[data-testid=confirm]" },
{ "do": "wait", "text": "active" }
]}
その後、fl_run("permit", { "plate": "ZZ-999-ZZ" }) を実行すると、1 秒もかからずに同じ操作を繰り返します。
// files, native dialogs, coordinates, mobile width
{ "tool": "fl_act", "tab": "t1", "actions": [
{ "do": "upload", "ref": "e4", "files": ["/Users/me/statement.csv"], "var": "statement" },
{ "do": "dialog", "accept": true },
{ "do": "click", "role": "button", "name": "Delete" },
{ "do": "mouse", "x": 640, "y": 380 },
{ "do": "resize", "width": 390, "height": 844 }
]}
upload は、非表示のものも含めたファイル入力欄のほか、ファイル選択ダイアログを開くボタンやドロップゾーンでも動作します。ダイアログはデフォルトで閉じられ、すべて結果に報告されます。新しいコンソールエラーも同様に報告されます。
再生時に要素を再特定する仕組み
記録された各ステップには、壊れやすいセレクターではなくフィンガープリントが保存されます。フィンガープリントには、テスト ID、安定した ID、name 属性、ARIA ロールとアクセシブル名、プレースホルダー、リンク先、表示テキスト、短い CSS パスが含まれます。再生時、Flintrail は安定性の高いものから順に試し、完全に一致する要素が 1 つだけ見つかった時点で採用します。その要素だけを待機し、ネットワークがアイドル状態になるのを待つことはありません。
セキュリティ
- パスワードがワークフローに書き込まれることはありません。記録中はパスワード欄をスキップし、セッションにログインしたままにしてください。
- ワークフローは
~/.flintrail/flowsにプレーンな JSON として保存されるため、簡単に確認してバージョン管理できます。 - HTTP トランスポートにはベアラートークンが必要です(定時間比較を使用)。デフォルトでは
127.0.0.1にバインドされます。 evalとrequestはページ内で、ページ自身の権限を使って実行され、それ以上の権限はありません。
設定
| 変数 | デフォルト | |
|---|---|---|
FLINTRAIL_MODE | attach | attach、launch、または extension |
FLINTRAIL_RELAY_PORT | 8932 | 拡張機能が接続するローカルポート |
FLINTRAIL_CDP_URL | http://127.0.0.1:9222 | 接続先のブラウザー |
FLINTRAIL_PORT | 9222 | Flintrail が Chrome for Testing を起動するときに使用するデバッグポート |
FLINTRAIL_CHROME | auto | ブラウザーの実行ファイル |
FLINTRAIL_HEADLESS | 1 | 起動モードでウィンドウを表示するには 0 |
FLINTRAIL_HOME | ~/.flintrail | ワークフロー、プロファイル、トークン |
FLINTRAIL_DOWNLOADS | ~/Downloads/Flintrail | ダウンロードの保存先 |
FLINTRAIL_TOKEN | generated | HTTP ベアラートークンおよび拡張機能トークン |
開発
npm install
npx playwright-core install chromium # once, for tests
npm test # build + 19 end-to-end tests over real MCP, extension included
npm run pack:extension # flintrail-extension-<version>.zip
npm run bench # benchmark vs Playwright MCP
ロードマップ
- 拡張機能を Chrome Web Store と Edge Add-ons に掲載します。
- キャプチャした呼び出しが安全に再生できる場合、記録済みの UI ステップを API ステップに自動昇格します。
- よく使うサイト向けの共有ワークフローライブラリ。
- 再生失敗時のビジュアル差分。
フランス語
Flintrail は AI エージェント向けのブラウジング MCP サーバーです。専用の実際の Chrome(個人用ブラウザーではありません)を操作し、複数のアクションを 1 回の呼び出しで連続実行します。タスクを初回に記録して、その後は AI を使わず数百ミリ秒で自動再生するか、セッションを使ってサイトの API 呼び出しを直接再生します。当社のベンチマークでは、同じタスクに Playwright MCP では 2.4 秒かかるのに対し、Flintrail の API モードでは 0.11 秒です。
Chrome 拡張機能により、誰でも簡単に利用できます。インストールしてトークンを貼り付ければ、エージェントがブラウザーを操作します。さらに、タスクを自分で 1 回実行してエージェントに覚えさせることもできます(Start recording ボタン)。その後は Flintrail が自動で再生します。パスワードが記録されることはありません。
ライセンス
MIT © 2026 Soflution Ltd
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。