Skip to main content
Glama
TrueNix
by TrueNix

kitesurf-bridge

Cloudflare Kitesurf — Cloudflare Workers上のV8アイソレートで動作するエージェントファーストブラウザ — をどこからでも操作できます。依存関係ゼロ、ローカルChrome不要。

1つのエンジンを4つの方法で利用できます:

サーフェス

インストール

用途

MCPサーバー

npx -y github:TrueNix/kitesurf-bridge mcp

Claude Code、Cursor、Codex、任意のMCPクライアント

CLI

npx -y github:TrueNix/kitesurf-bridge markdown <url>

シェル、スクリプト、CI

ライブラリ

import { withSession } from 'kitesurf-bridge'

自作のNodeコード

DSH / Cordisプラグイン

構成行

DSHハーネス内のネイティブツール

以下のインストールコマンドはGitHub仕様を使用しており、レジストリアカウントなしで今日から動作します。 npmに@truenix/kitesurf-bridgeとして公開された後は、すべての github:TrueNix/kitesurf-bridge@truenix/kitesurf-bridgeに短縮されます。

npx -y github:TrueNix/kitesurf-bridge markdown https://news.ycombinator.com

これにより、実際のブラウザエンジンで実際のページがレンダリングされ、Cloudflareのネットワーク上で動作します。ローカルにブラウザをインストールする必要はなくAPIトークンも不要です


なぜこれが必要か

Kitesurfはオープンソースではなく、お使いのマシンでは実行できません。Cloudflareはブログで「準備ができ次第」オープンソース化する意向を示していますが、その場合でも、顧客は「自分のアカウントに自分のバージョンのKitesurfをデプロイする」ことが目的とされており、依然としてWorkers上での実行になります。

また、開発ループにローカルのKitesurfはありません。wrangler devお使いのローカルChromeを起動するものであり、Kitesurfではありません。Kitesurfはリモートエンドポイントのbrowser=kitesurfの背後にのみ存在します。

したがって、実際の問いは「ローカルで実行できるか」ではなく、「ローカルコードからドライブできるか」です。このパッケージがそのブリッジです。

存在理由

Kitesurfはオープンソースではなく、お使いのマシンでは実行できません。Cloudflareはブログで「準備ができたら」オープンソース化する意向を示していますが、その場合でも、目標は顧客が「自分のアカウントで自分のKitesurfをデプロイする」ことであり、依然としてWorkers上です。

また、開発ループにローカルのKitesurfは存在しません。wrangler devお使いのローカルChromeを起動しますが、Kitesurfではありません。Kitesurfはリモートエンドポイントのbrowser=kitesurfの背後にのみ存在します。

したがって、実際の質問は「ローカルで実行できるか」ではなく、「ローカルから操作できるか」です。このパッケージはそのブリッジです。

インストール

MCPサーバーとして

claude mcp add kitesurf -- npx -y github:TrueNix/kitesurf-bridge mcp
{
  "mcpServers": {
    "kitesurf": {
      "command": "npx",
      "args": ["-y", "github:TrueNix/kitesurf-bridge", "mcp"]
    }
  }
}
{
  "mcpServers": {
    "kitesurf": {
      "command": "npx",
      "args": ["-y", "github:TrueNix/kitesurf-bridge", "mcp"],
      "env": {
        "CLOUDFLARE_ACCOUNT_ID": "your-account-id",
        "CLOUDFLARE_API_TOKEN": "your-browser-run-token"
      }
    }
  }
}

公開されるツール: kitesurf_markdown, kitesurf_text, kitesurf_links, kitesurf_screenshot, kitesurf_evaluate, kitesurf_accessibility_tree, kitesurf_probe

DSH / Cordisプラグインとして

# in an agent preset composition
- '@truenix/kitesurf-bridge/cordis':
    cli: npx -y github:TrueNix/kitesurf-bridge
    timeoutMs: 120000

プラグインはホスト上に同じツールを登録します。動的なCordisホスト半分にはWebSocketfetchnode:*へのアクセスがないため、サンドボックス内でCDPを開くことはできません。そのため、意図的にCLIをシェルアウトします。詳細はcordis/plugin.mjsを参照してください。

ライブラリとして

npm install github:TrueNix/kitesurf-bridge
import { withSession } from '@truenix/kitesurf-bridge';

const md = await withSession({}, async (session) => {
  await session.navigate('https://example.com');
  return session.markdown();
});

CLI

kitesurf-bridge <command> [options]

  markdown <url>     Extract the page as Markdown (main content by default)
  text <url>         Visible text only
  html <url>         Full serialized DOM after JS runs
  links <url>        Every anchor as JSON
  screenshot <url>   PNG/JPEG   (-o file, --full)
  pdf <url>          PDF        (-o file)
  a11y <url>         Filtered accessibility tree
  eval <url> <expr>  Evaluate JS in the page
  probe              Endpoint + engine capability report
  mcp                Run as an MCP server on stdio

便利なオプション: --main--raw--full--width--height--json--endpoint--account--token--timeout

エンドポイント

プレイグラウンド(デフォルト)

アカウント

URL

wss://kitesurf.cloudflare.app/devtools/page/kitesurf

wss://api.cloudflare.com/.../devtools/browser?browser=kitesurf

認証

なし

Authorization: Bearer <token>

ターゲット

ページ

ブラウザ(ページは自動的に作成・接続されます)

用途

評価

本番

CLOUDFLARE_ACCOUNT_IDCLOUDFLARE_API_TOKEN(またはCF_*)を設定すると切り替わります。トークンなしでアカウントIDを指定すると、共有プレイグラウンドへのサイレントダウングレードではなく、ハードエラーになります。

[!WARNING] プレイグラウンドは無料の共有・認証なしリソースであり、SLAはありません。評価やローカルエージェント作業には適していますが、本番環境では使用しないでください。

Kitesurfについて知っておくべきこと

これらはドキュメントからコピーしたものではなく、ライブサービスに対して検証済みです。kitesurf-bridge probeがこれらを再現します。

KitesurfはページスクリプトにV8を使用するのではなく、Rust製JSエンジンのBoaを使用します。 Boaは再帰制限がはるかに低く、RuntimeLimit: exceeded maximum number of recursive callsをスローします。自然な再帰的なDOMウォークは、大きなページ(Wikipedia、ドキュメントサイトなど)で失敗します。このパッケージのMarkdownコンバーターは、明示的なスタックでDOMをウォークし、呼び出し深度をO(1)に保ちます。kitesurf_evaluateを使用する場合は、反復的な式を推奨します。

ナビゲーション障害はCDPエラーではなく、エッジステータスコードとして現れます。 Page.navigateは、存在しないホストでも通常のframeId/loaderIdを返し、Network.loadingFailedは発生しません。欠落したドメインは520として現れ、Page.navigateはエージェントに空のページを成功として渡します。このパッケージは、Networkドメインのイベントから結果を分類し、空のドキュメントが>=400ステータスで返された場合にエラーをスローし、読み取り可能なコンテンツを持つ実際のエラーページ(status付き)はそのまま返します。

機能フラグ(検証済み):

機能

状態

canvas2d、WebAssembly、shadow DOM、localStorage、cookies、fetch/XHR、IntersectionObserver、MutationObserver

WebGL、ビデオ/オーディオ再生、リアルなTLSフィンガープリントチャレンジ、長時間の認証セッション

これらの機能が必要な場合は、Browser Runのデフォルトブラウザ(Chromium)を使用してください。

パフォーマンストレードオフ(Cloudflareの発表によると):KitesurfはウォームなChromiumに比べてCPUとメモリを3〜7倍少なく使用しますが、1.7〜3倍遅いです。クラウド上でバースト的なエージェントワークロードにとっては有利ですが、自分のマシンでは何も節約できません。ローカルのブラウザ自動化だけが必要で、すでにChromeがある場合、ローカルのPlaywrightの方が高速で、WebGLもサポートしています。

ゼロ依存

package.jsonにはdependenciesブロックが空であり、WebSocketの依存関係も含まれていません。

NodeのグローバルなWebSocket(WHATWG)はリクエストヘッダーを送信できず、アカウントエンドポイントではAuthorization: Bearer …が必要です。undiciはスタンドアロンモジュールとしてインポートできません。そのため、src/ws.mjsはRFC 6455クライアントをnode:http(s)上で直接実装しています — ハンドシェイク、マスキング、継続フラグメント、64ビット長、ping/pong、クローズ — これらはすべてCDPに必要なもので、ヘッダーをサポートしています。

テスト

npm test                        # live tests against the playground
KITESURF_SKIP_NETWORK=1 npm test   # offline only

このスイートは意図的に実サービスに対して実行します。実際の障害(Boaの再帰制限、エッジステータスコード、空のドキュメント処理)は、実サービスに対してのみ発生します。

要件

Node.js ≥ 18。ブラウザもAPIトークンもビルドステップも不要です。

ライセンス

MIT

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.

  • Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.

View all MCP Connectors

Latest Blog Posts

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/TrueNix/kitesurf-bridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server