SlimAtlas AI
特徴
ブラウザ自動化: ナビゲーション、クリック、タイピング、フォーム入力、JavaScriptの評価
デフォルトで軽量: Chromium比でメモリ約5分の1、生のHTML比でスナップショット約25分の1
ページスナップショット: 一意のノードIDを持つコンパクトなYAMLアクセシビリティツリースナップショットを取得し、要素を正確にターゲット指定可能
LLM最適化コンテキスト: スナップショットは意味的に必須の要素のみに削減され、コンテキスト使用量を最小限に抑えるため、同じウィンドウ内でより多くのページとより長いセッションを処理可能
設定可能なフォールバックブラウザ: 2段階モデル — まず軽量ブラウザを使用し、デフォルトがボット検出された場合、クラッシュした場合、またはタイムアウトした場合にのみ、ヘッドフルChrome、Browserless、Browserbaseのクラウドブラウザにエスカレーション
レート制限: 検知を回避。ワイルドカードパターン(
*、*.reddit.com)を使用して特定ドメインへのリクエスト間に設定可能な最小遅延を強制し、オプションのジッターも追加可能。エージェントがサイトを過剰に叩いてボット防御を発動させることなく、ペースを調整プロキシサポート: 単一の
PROXY_SERVER設定で全リクエストをHTTPプロキシ経由でルーティング — 両方のブラウザレイヤーに自動適用されるため、実際のIPがターゲットに触れることはありません。インライン基本認証(http://user:pass@host:port)に対応堅牢なセッション管理: セッションごとのシリアライズ、オプションのセッション上限(
MAX_SESSIONS)、セッション途中のクラッシュリカバリ(履歴リプレイ付き)、グレースフルシャットダウンセッション管理: 一意のセッションIDを使用して複数の操作にわたってセッションを再利用
クロスプラットフォーム: LinuxとmacOSで動作し、必要に応じて設定可能な実ブラウザフォールバックを提供
Related MCP server: opencode-browser-control
ベンチマーク
SlimAtlasは、slim-atlas-benchを使用してPlaywright MCP(ヘッドレスおよびヘッドフルChromium)とベンチマーク比較されました — 5カテゴリ×25の実在サイト、各3回実行(合計225回)、すべてlocalhost上のDockerで実行。
セットアップ: 各サービスは独自のDockerコンテナ内でMCPサーバーとして実行されます。ベンチマークハーネスは、langchain-mcp-adaptersを介してツール呼び出しごとのレイテンシ(ナビゲート+スナップショット)を測定し、Docker stats APIを介してコンテナRAMを取得します。スナップショットのトークン数は約4文字/トークンで推定されます(生のHTMLベースラインと同じ方法論)。
メトリクス(中央値) | SlimAtlas | Playwright Headless | Playwright Headful |
ナビゲート+スナップショット(ms) | 1,383 | 1,116 | 687 |
コンテナRAM(MB) | 124 | 635 | 815 |
スナップショットトークン | 414 | 940 | 1,843 |
SlimAtlasはナビゲーション速度と引き換えに、リソース使用量を大幅に削減します。Chromiumはページ読み込みが高速ですが、5〜6倍のRAMを使用し、スナップショットあたり2〜4倍のトークンを生成します — これはエージェントワークフローを大規模に運用する際に支配的な2つのコストです。
結果
インストール
Bun ≥1.1が必要です。
# Install dependencies
bun installブラウザバイナリは初回実行時に自動的にダウンロードされます。
フォールバックブラウザ: レベル1は常に軽量ブラウザです。レベル2はFALLBACK_BROWSER — headful(ヘッドフルChrome)、browserbase(クラウド)、browserless(クラウド)、またはnone(デフォルト、フォールバックなし)のいずれか。デフォルトがクラッシュ、タイムアウト、またはボット検出された場合、セッションは設定されたフォールバックに1回だけ切り替わります。ChromeはPuppeteerにバンドルされています。Browserbase/BrowserlessにはAPI認証情報が必要です(下記参照)。
使用方法
MCPサーバーの実行
# Standalone HTTP server (default)
bun run src/index.ts --port=8080
# Remote, authenticated
MCP_AUTH_TOKEN=s3cret bun run src/index.ts --host=0.0.0.0 --port=8080SlimAtlasは単一のStreamable HTTP /mcpエンドポイントを公開します。各クライアントはmcp-session-idヘッダーを介して独自のセッションを取得します。MAX_SESSIONSは同時実行数を制限します。MCPクライアントを以下のように設定します:
{
"mcpServers": {
"slimatlas": {
"url": "http://localhost:8080/mcp",
"transport": "http"
}
}
}認証付き:
{
"mcpServers": {
"slimatlas": {
"url": "http://your-host:8080/mcp",
"transport": "http",
"headers": { "Authorization": "Bearer s3cret" }
}
}
}ヒント: リモート公開には--host=0.0.0.0を使用しますが、その場合は必ずMCP_AUTH_TOKENを設定してください。サーバーはプレーンHTTPのみを話します — フロントにTLS終端(Caddy/nginx)を配置しない限り、Bearerトークンはネットワーク上を平文で流れます。
Docker
イメージにはビルド時にLightpandaバイナリがバンドルされているため、コンテナは自己完結型で起動し、再ダウンロードは発生しません:
docker build -t slimatlas .
docker run -p 8080:8080 -e MCP_AUTH_TOKEN=s3cret slimatlas
# -> http://localhost:8080/mcp再現性のあるビルドのためにLightpandaリリースを固定します(任意のlightpanda-io/browserタグ — デフォルトはnightly):
docker build --build-arg LIGHTPANDA_VERSION=0.3.3 -t slimatlas:0.3.3 .マルチアーキテクチャは自動的に処理されます — ビルドはuname -mを介してコンテナのアーキテクチャを検出します(x86_64 → lightpanda-x86_64-linux、aarch64 → lightpanda-aarch64-linux)。そのため、バイナリは常にビルド対象のプラットフォームと一致します。
Apple Silicon(MシリーズMac): ネイティブでビルド/実行するには
--platform linux/arm64を渡してください。これがないと、Docker Desktopはamd64をデフォルトにし、Rosettaでコンテナを実行する可能性があり、Lightpandaバイナリの起動に失敗します(rosetta error: failed to open elf …)。docker build --platform linux/arm64 --build-arg FALLBACK_BROWSER=headful -t slimatlas . docker run --platform linux/arm64 --name slimatlas -p 8080:8080 -e MCP_AUTH_TOKEN=s3cret -e LIGHTPANDA_POOL_SIZE=10 -e CHROME_POOL_SIZE=10 slimatlas
ヘッドフルフォールバックバリアント。 デフォルトのイメージはLightpandaのみを実行します(FALLBACK_BROWSER=none)。ヘッドフルChromeフォールバックを有効にする場合(実行時にFALLBACK_BROWSER=headfulを設定する場合にのみ必要)、ヘッドフルバリアントをビルドしてください — Chromeランタイムライブラリ+Xvfb(約150MB)が追加され、FALLBACK_BROWSER=headfulがプリセットされます:
docker build --build-arg LIGHTPANDA_VERSION=0.3.3 FALLBACK_BROWSER=headful -t slimatlas:headful .
docker run -p 8080:8080 -e MCP_AUTH_TOKEN=s3cret slimatlas:headfulXvfbは、ヘッドフルChromeにエスカレーションする最初のセッションでコンテナ内で遅延起動されます — エントリポイントや手動のxvfb-runは不要です。
Stdioモード
サーバーをサブプロセスとして起動するMCPクライアント(ローカル、シングルクライアント)向けに、stdioトランスポートを使用します:
bun run src/index.ts{
"mcpServers": {
"slimatlas": {
"command": "bun",
"args": ["run", "path/to/mcp/src/index.ts"]
}
}
}設定
MCPクライアント設定に追加:
{
"mcpServers": {
"slimatlas": {
"command": "bun",
"args": ["run", "path/to/mcp/src/index.ts"]
}
}
}ヒント: FALLBACK_BROWSER=noneを設定すると、軽量ブラウザのみを使用し、エラーを正直に伝播させます。headfulまたはbrowserbaseを使用すると、実ブラウザのフォールバックを有効にできます。
すべての環境変数とCLIフラグについてはdocs/configs.mdを参照してください。
フォールバックブラウザ
| レベル2ブラウザ | 備考 |
| — | 軽量ブラウザのみ。エラーは正直に伝播 |
| ヘッドフルChrome | macOSでは実ウィンドウ。ヘッドレスLinuxでは |
| Browserbaseクラウド |
|
既知の難しいドメインではデフォルトブラウザをスキップするには、SKIP_LIGHTPANDA_DOMAINS(カンマ区切り、サブドメイン認識)を使用します。一致したホストはフォールバックブラウザで直接起動します。FALLBACK_BROWSER != noneが必要です(それ以外の場合はリストは警告付きで無視されます)。
レート制限
エージェントのための丁寧で検知回避的なペーシング。RateLimiterは、リストしたドメインへのbrowser_navigate呼び出し間にサーバー全体の最小遅延を強制し、オプションのランダムジッターを追加して、間隔が固定された指紋化可能なものにならないようにします。バケットはすべてのセッションにわたってホストごとにキー設定されます(ターゲットサイトが見るのはセッションではなくIPだからです)。パターンはワイルドカードをサポートします:
パターン | 一致対象 | バケット |
| すべてのホスト | 各ホストが独立してスロットルされる |
| サブドメインのみ( | 一致するすべてのサブドメインが1つのバケットを共有 |
|
| エイペックス+サブドメインが1つのバケットを共有 |
デフォルトでは無効。空でないドメインリストかつゼロ以外の遅延で有効化:
# Via CLI flags
bun run src/index.ts --rate-limit-domains=*.reddit.com,g2.com --rate-limit-min-delay-ms=2000 --rate-limit-jitter-ms=1500
# Or via environment / .env
RATE_LIMIT_DOMAINS=*.reddit.com,g2.com
RATE_LIMIT_MIN_DELAY_MS=2000
RATE_LIMIT_JITTER_MS=1500プロキシ
実際のIPをターゲットから守ります。単一のPROXY_SERVERを設定するだけで、SlimAtlasは両方のブラウザレイヤーからのすべてのHTTPトラフィックをプロキシ経由でルーティングします — ブラウザごとの配線は不要です:
軽量ブラウザ(レベル1) — ネイティブの
--http-proxyフラグを介して転送。Chromeフォールバック(レベル2) — 起動時に
--proxy-serverを介して適用。
# Via CLI flag
bun run src/index.ts --proxy-server=http://host:8080
# Or via environment / .env
PROXY_SERVER=http://user:pass@host:8080インライン基本認証(http://user:pass@host:port)は軽量ブラウザレイヤーでサポートされています。IP許可リスト型プロキシ(認証情報なし)の場合は、両レイヤーでそのまま機能します。(page.authenticateによるページごとのChrome認証はロードマップに含まれています。)
CLIフラグ
すべての環境変数は、小文字のCLIフラグとして--flag=value形式でも渡せます。CLIフラグは環境変数を上書きします。不明なフラグがあるとサーバーは起動時に終了します。完全なリストはdocs/configs.mdを参照してください。
bun run src/index.ts --fallback-browser=headful --lightpanda-pool-size=3 --skip-lightpanda-domains=g2.com --navigate-timeout=60000MCPクライアントからフラグを使用するには、args配列に追加します:
{
"mcpServers": {
"slimatlas": {
"command": "bun",
"args": [
"run",
"path/to/mcp/src/index.ts",
"--fallback-browser=headful",
"--skip-lightpanda-domains=g2.com,linkedin.com",
"--chrome-pool-size=3"
]
}
}
}使用ワークフロー
# Example: Navigate, snapshot, and interact with a page
# 1. Navigate to a URL (creates a new session automatically)
result = mcp.call("browser_navigate", {"url": "https://example.com"})
# Returns: session_id: abc1, result: Navigated to https://example.com. Title: Example Domain
# 2. Take a snapshot to see the page structure
snapshot = mcp.call("browser_snapshot", {"session_id": "abc1"})
# Returns YAML with node IDs like: 0: {type: div, children: ...}
# 3. Click a node by ID (from the snapshot)
mcp.call("browser_click", {"session_id": "abc1", "nodeId": 2})
# 4. Type into a search box
mcp.call("browser_type", {"session_id": "abc1", "nodeId": 5, "text": "search query"})
# 5. Close the session when done
mcp.call("browser_close", {"session_id": "abc1"})利用可能なツール
ツール | 説明 | 値 |
| 設定可能な待機戦略で URL に移動します | すべての Web 操作のエントリポイントです。 |
| 一意のノード ID を持つ YAML アクセシビリティツリーを取得します | LLM の理解に適した構造化ページ表現です。ノード ID により、クリックや入力の正確なターゲット指定が可能です |
| ID で特定のノードの内容を表示します(テキストまたは画像) | ページ全体を再読み込みせずに個々の要素を検査します。画像は base64 で返され、視覚的な検証が可能です |
| ノード ID または CSS セレクタで要素をクリックします | 信頼性と簡潔さの点で、CSS セレクタよりも(スナップショットからの)ノード ID が推奨されます |
| 要素にテキストを入力します(キーストロークの遅延を設定可能) | 人間の入力をシミュレートします。検索ボックス、フォーム、テキスト入力に使用します |
| 入力要素に値を即座に入力します | フォームフィールドでは |
| ブラウザ履歴を戻ります | 複数ステップのワークフローやナビゲーションの誤りを修正するために不可欠です |
| ブラウザ履歴を進みます | 双方向ナビゲーションのために |
| 現在のページを再読み込みします | 動的コンテンツを更新したり、古いページ状態から回復します |
| 現在のページの URL とタイトルを取得します | ナビゲーションの成功と現在のコンテキストを確認する簡単な方法です |
| ブラウザセッションを閉じてリソースを解放します | クリーンアップに重要です。セッションはタイムアウトで自動的に閉じますが、明示的に閉じることを推奨します |
テストの実行
# Run all tests
bun test
# Run tests in watch mode
bun test --watch要件
Bun ≥1.1
Linux または macOS(自動ダウンロード)または Chrome/Chromium(フォールバック)
ライセンス
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for Mint — AI-powered QA that runs your app in a real browser on every PR.
Live browser debugging for AI assistants — DOM, console, network via MCP.
MCP server for visual regression testing: triage a PR's UI diffs from your coding agent.
MCP server for Firecrawl — web search, scraping, and biomedical/arXiv paper search.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for browser automation that lets LLMs interact with web pages through structured accessibility snapshots, bypassing the need for screenshots.236,403,349 npmApache 2.0
- AlicenseAqualityDmaintenanceA Playwright-powered MCP server for browser automation using ARIA snapshots and element refs, enabling LLMs to control Chrome/Edge without CSS selectors.416 npmMIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that lets LLM agents control all Chrome browser tabs via accessibility snapshots, element references, and a virtual cursor, supporting operations like click, type, navigate, screenshot, and video recording.MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP server that provides browser automation using Playwright, enabling LLMs to interact with web pages through structured accessibility snapshots.-