Terminal UI DevTools について
tui-mcpは、永続的な擬似端末セッションでターミナルアプリを起動・操作するMCPサーバーです。エージェントや開発者がTUIアプリを対話的に扱い、画面のスクリーンショットやテキストを取得できます。
主な機能
- 01永続的な擬似端末でアプリを起動
- 02キー入力・テキスト・マウスイベントの送信
- 03PNGスクリーンショットとテキストスナップショット
- 04端末領域とスクロールバックの読み取り
- 05複数セッションの監視と管理
活用シーン
- 01対話型コマンドラインツールの操作
- 02SSHプロンプトやインストーラーへの対応
- 03ビルド・ログ・デプロイの監視
- 04開発・デバッグセッションの並行実行
MCP 対応
MCPクライアント向けに、端末セッションの起動・確認・操作ツールを提供します。ツール呼び出しの間も、稼働中の擬似端末セッションを維持します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
tui-mcp
ブラウザーにとっての Chrome DevTools MCP のように、tui-mcp はターミナルのためのものです。
任意のターミナルアプリを管理された pty で起動し、スクリーンショットの撮影、テキストの読み取り、キー入力の送信ができます。アプリは実際のターミナルで実行されているものとして動作します。TUI フレームワークの有無を問わず、vim、htop、bubbletea、textual、ink、inquirer、trend、ncurses など、どのようなアプリでも利用できます。
bash ツールとの違いは何ですか?
bash ツールはコマンドを個別に実行します。呼び出しごとに結果を待たずに実行し、プロセスが終了すると出力が返されます。tui-mcp は永続的な対話型セッションを維持します。呼び出しの間も pty は終了しません。これは次のような場合に重要です。
- ツールに状態がある場合 -
mysqlシェルを開き、データベースでUSEを実行し、トランザクション中であるとします。bash ツールでは、呼び出しの間もそのセッションを開いたままにできません。 - ツールに UI がある場合 - htop、vim、k9s、lazygit などです。これらのアプリは ANSI エスケープコードで全画面のインターフェイスを描画するため、bash ツールでは意味のない出力が返されます。tui-mcp は xterm エミュレーションを通して、読みやすいスクリーンショットまたはテキストスナップショットに表示します。
- 操作が複数の手順にわたる場合 - SSH でパスワード、次に 2FA コードを求められ、その後にログインできる場合です。対話型インストーラーで質問に答える場合もあります。
git rebase -iではエディターが開きます。こうした対話型の手順は、ステートレスな bash ツールでは処理できません。 - 何かを監視する必要がある場合 - ログを tail したり、ビルドを監視したり、デプロイの完了を待ったりする場合です。セッションは開いたままなので、エージェントは進捗を確認したいときにいつでもスナップショットを取得できます。
- ツールに TTY が必要な場合 - 実際のターミナルがないと動作が変わったり、起動を拒否したりする CLI もあります。node-pty は
xterm-256colorを備えた実際の pty を用意するため、すべてが想定どおりに動作します。
bash ツールは exec() です。tui-mcp は「ターミナルの前に座り、人間のように使う」ものです。一方はコマンドを実行し、もう一方はソフトウェアを操作します。
screenshot ツールの出力例:

セットアップ
claude mcp add --scope user tui-mcp -- npx tui-mcp
ツール
| ツール | 説明 |
|---|---|
| launch | 管理された pty で TUI アプリを起動します |
| kill | セッションを終了します |
| list_sessions | 終了直後のセッションも含め、セッションを一覧表示します |
| status | セッションの状態と終了コードを取得します |
| resize | ターミナルのサイズを変更します |
| screenshot | ターミナルを PNG としてキャプチャします |
| snapshot | ターミナルをプレーンテキストとしてキャプチャします |
| scrollback | スクロールアウトした履歴を含むバッファーを読み取ります |
| output | pty の生のバイトストリームを読み取ります(エスケープシーケンスを含みます) |
| read_region | バッファーの矩形領域を読み取ります |
| cursor | カーソル位置を取得します |
| send_keys | キー入力またはキーの組み合わせを送信します(Enter、Ctrl+C、Ctrl+Up、q) |
| send_text | 文字列を入力します |
| send_mouse | マウスイベントを送信します |
| wait_for_text | 正規表現パターンが表示されるまで待機します |
| wait_for_idle | ターミナルの変化が止まるまで待機します |
| wait_for_exit | プロセスが終了するまで待機し、終了コードを取得します |
興味深いユースケース
- リモート運用:エージェントが SSH で本番環境のマシンに接続し、ログを追跡してエラーを grep で検索し、サービスを再起動して、復旧する様子を監視します。人間の SRE が見るのと同じターミナル出力を読み取ります。カスタム API は必要ありません。
- レガシーシステムとのやり取り:ncurses の管理パネル、mysql cli、redis-cli、psql などをエージェントが操作できます。REST API が提供されることのないツールにも対応できます。
- 複数セッションのオーケストレーション:エージェントが 3〜4 個のセッションを同時に起動します。1 つは開発サーバー、1 つはテスト、1 つはログの追跡、もう 1 つはデバッガーを実行します。もう 1 組の手を借りたペアプログラミングのようなものです。
- 対話型デバッガー:gdb、lldb、pdb、node --inspect を操作できます。エージェントはブレークポイントを設定し、コードをステップ実行して、変数を調べられます。
- 会話を通じたインフラ操作:kubectl、terraform、docker、aws cli を使います。エージェントは Kubernetes MCP サーバーや AWS MCP サーバーを必要としません。人間と同じように、CLI を直接使います。
ほとんどの MCP サーバーは、特定のツールや API を 1 つラップします。tui-mcp がラップするのはターミナルそのものです。ターミナルは、すべてのツールがすでに使っている汎用インターフェースです。これは MCP の eval() です。
モニター
ターミナルからすべてのアクティブなセッションを監視、操作できます。
npx tui-mcp monitor
左側にセッション一覧、右側にライブの ANSI レンダリングによるターミナルプレビューが表示されます。モニターはマシン上で実行中のすべての tui-mcp サーバーを検出し、それらのセッションを集約します。
キー操作:
j/kまたは矢印キーでサーバーやそのセッション間を移動します。g/Gで先頭/末尾に移動でき、マウスでのクリックやスクロールも使えます- セッション上で
enterを押すと接続します。入力した内容はすべてその pty に渡され、ctrl+\で切断します - サーバー上で
enterを押すと、そのサーバーを対象にした起動パネルが開きます sを押すとセッションのスクロールバック全体をスクロール可能なビューに読み込み、escでライブ表示に戻りますlを押すと、選択した行のサーバーで新しいセッションを起動します(ctrl+sで対象を切り替えます)xを 3 秒以内に 2 回押すと、選択したセッションを終了しますqで終了します
接続、新規起動、終了、スクロールバックの表示には、バージョン 1.2 以降のサーバーが必要です。それより古いサーバー上のセッションには ro(読み取り専用)と表示され、引き続き監視できます。
仕組み
your app <--> node-pty <--> xterm-headless <--> MCP tools
(pty) (terminal emulator) (screenshot, send_keys, etc.)
アプリは node-pty を介して、実際の疑似ターミナルで実行されます。出力は xterm-headless(VS Code のターミナルを支えるものと同じターミナルエミュレーターですが、DOM はありません)で解析されます。MCP ツールは、解析されたバッファーを読み取り、操作します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。