AIエージェントにアプリを操作させたいとき、多くの開発者はPlaywrightやブラウザ自動化ツールに頼る。だが実際のUIをスクレイピングする方法には限界がある。Tesseronはその問題を正面から解決するTypeScript SDKだ。

この記事でわかること:

  • Tesseronが何を解決するのか
  • MCP経由でAIがライブアプリを操作する仕組み
  • インストール方法とコードサンプル
  • 対応フレームワークとクライアント
  • ライセンスと今後のロードマップ

https://github.com/BrainBlend-AI/tesseron

Playwrightなしでアプリを操作できる

従来のAIエージェントによるUI操作は、ブラウザのDOMをスクレイピングし、要素を特定してクリックや入力を模倣する。この方法はUIの変更に弱く、実際のアプリ状態を正確に把握できない。

Tesseronのアプローチは異なる。アプリ側に「アクション」を宣言し、AIエージェントはそのアクションをMCPツールとして呼び出す。ハンドラーはアプリの実際の状態に直接アクセスして実行されるため、DOM操作は一切不要だ。

MCPで繋ぐ仕組み

Tesseronのアーキテクチャは3つのピースで成り立つ。

アプリ(ブラウザタブ、Electron/Tauriデスクトップアプリ、Node.jsデーモン)が@tesseron/webまたは@tesseron/serverを通じてWebSocketでMCPゲートウェイ(@tesseron/mcp)に接続する。MCPゲートウェイはClaude CodeやCursorなどのMCPクライアントと標準のstdio経由で通信する。ユーザーがプロンプトを送ると、エージェントはアプリが宣言したアクションをMCPツールとして呼び出す仕組みだ。

v1.0はWebSocketを使ったJSON-RPC 2.0ベースの独自プロトコルを採用しており、プロトコル自体はCC BY 4.0でオープンに公開されている。

主な機能

型付きアクション宣言

ZodまたはStandard Schemaに対応した任意のバリデーターでアクションの入力スキーマを定義する。型のミスマッチはエージェントが呼び出す前に検出される。

フレームワーク非依存

@tesseron/web(ブラウザ)、@tesseron/server(Node.js)、@tesseron/react(Reactフック)と用途別にパッケージが分かれており、既存のスタックにそのまま組み込める。

ファーストクラスのMCP機能

アクションコンテキスト(ctx)は4つの追加機能を提供する。ctx.confirmでyes/no確認、ctx.elicitでスキーマ検証済みの追加入力収集、ctx.sampleでエージェント側のLLM呼び出し、ctx.progressでリアルタイムの進捗通知だ。

クリックで接続

APIキーもOAuth設定も不要。アプリが生成した6文字のクレームコードをエージェントに渡すだけで接続が完了する。

インストールと使い方

Claude Codeを使っている場合は以下のコマンド2行でセットアップできる。

/plugin marketplace add BrainBlend-AI/tesseron
/plugin install tesseron@tesseron

これでMCPゲートウェイが自動起動し、MCPサーバーとして登録される。あとはアプリ側にSDKを追加してアクションを宣言するだけだ。

ブラウザアプリへの組み込み例を示す。

import { tesseron } from '@tesseron/web';
import { z } from 'zod';

tesseron.app({ id: 'todo_app', name: 'Todo App' });

tesseron
  .action('addTodo')
  .input(z.object({ text: z.string().min(1) }))
  .handler(({ text }) => {
    state.todos.push({ id: newId(), text, done: false });
    render();
    return { ok: true };
  });

await tesseron.connect();

addTodoアクションはMCPツールとして公開され、Claude Codeから「タスクを追加して」と指示するだけで呼び出される。

Claude Code以外のクライアント(Claude Desktop、Cursor、VS Code Copilot、Codexなど)でも動作する。ただしctx.elicit(MCP 2025-06仕様)はClaudeデスクトップアプリとClaude.aiでは未対応で、Claude Codeは2.1.76以降で対応している。

対応クライアントと注意点

MCPツール呼び出しはすべてのMCPクライアントで動作する。一方、ctx.sample(サーバーからLLMを呼び出す機能)はVS Code CopilotやGoose、fast-agentなど一部クライアントのみ対応しており、Claude Code・Claude Desktopでは現在使えない。機能が未対応のクライアントから呼び出された場合、TesseronはSamplingNotAvailableErrorなどの型付きエラーを返すため、ハンドラー側で明示的に分岐処理できる。

パッケージ構成

npmには5つのパッケージが公開されており、すべてv1.0.1でリリースされている。

パッケージ 用途
@tesseron/core プロトコル型定義・アクションビルダー
@tesseron/web ブラウザ向けSDK
@tesseron/server Node.js向けSDK
@tesseron/react Reactフックアダプター
@tesseron/mcp MCPゲートウェイサーバー(CLIとして動作)

ライセンス

参照実装はBusiness Source License 1.1(BUSL-1.1)。アプリへの組み込みや社内利用は無償でできる。ただし、Tesseronをホスティングサービスやマネージドサービスとして第三者に提供することは禁止されている。各リリースは公開から4年後にApache-2.0へ自動的に移行する。

プロトコル仕様自体はCC BY 4.0で公開されており、任意の言語での互換実装が奨励されている。

ロードマップと現状

v1.0はApril 2026にリリースされた。今後のロードマップにはSvelte/Vueアダプター、ブラウザ内デバッグUI(devtools)、Streamable HTTPトランスポート、Python SDK、TauriむけのRustバインディングが挙げられている。

Playwright不要でAIがアプリの実際の状態を操作できる点は、ブラウザ自動化の定番手法に対する明確な代替となりうる。Claude CodeプラグインとしてMCPに完全統合されており、すでにMCP対応エージェントを使っている開発者はすぐに試せる。