MCP Interactive Terminal Server について
MCP Interactive Terminal Serverは、gdbやREPLなど入力待ちのコマンドラインプログラムをエージェントから操作できます。プロセスの起動、コマンド送信、出力確認をツールで管理します。
主な機能
- 01対話型コマンドセッションの起動
- 02実行中プロセスへのコマンド送信
- 03出力やプロンプト文字列の待機
- 04アクティブなセッションの確認
- 05セッション出力のログ保存(任意)
活用シーン
- 01gdbデバッグセッションの自動化
- 02UARTコンソールの操作
- 03Python REPLの利用
- 04対話型コマンドの出力監視
MCP 対応
MCPクライアントに対話型ターミナルセッション管理ツールを提供します。stdio、sse、streamable-httpのトランスポートに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP インタラクティブターミナルサーバー
概要
MCP インタラクティブターミナルサーバーを使用すると、エージェントはコマンドライン駆動のプロンプトを操作できます。これは、gdb、UART コンソール、その他の REPL ベースのツールなど、対話型ターミナルコマンドの自動化と管理に役立ちます。FastMCP パッケージを使用して構築されており、対話型ターミナルセッションを管理するツールを提供するとともに、最新の MCP 標準に準拠しています。このサーバーは、FastMCP が提供する 3 つのトランスポートオプション、stdio(デフォルト)、sse、streamable-http をサポートしており、さまざまなユースケースに対応できます。
インストール
前提条件
-
Python 3.12 以降 システムに Python 3.12 以降がインストールされていることを確認してください。
-
UV Astral パッケージマネージャー UV Astral は、依存関係を管理するオプションのパッケージマネージャーです。使用すると、必要な依存関係のみを Python に提供します。ほかの依存関係が必要なコマンドを実行する場合は、それらも読み込まれるように UV の依存関係に追加できます。下流のパッケージで追加するか、環境からすべてのパッケージが直接提供されるよう設定されている場合は UV を使用しないほうがよい場合もあります。
次のいずれかの方法で UV をインストールします。
- スタンドアロンインストーラー:
curl -LsSf https://astral.sh/uv/install.sh | sh - Pip によるインストール:
pip install uv
インストールを確認します。
uv --version - スタンドアロンインストーラー:
UV Astral への依存関係の追加
パッケージマネージャーとして UV Astral を使用している場合は、Python やその他の依存関係をその設定に任意で追加できます。UV Astral を使用した依存関係の管理方法について詳しくは、UV Astral の公式ドキュメントを参照してください。
リポジトリのクローン
リポジトリをローカルマシンにクローンします。
git clone https://github.com/danielp370-msft/mcp_interactive_terminal
cd mcp_interactive_terminal
使用方法
サーバーの実行
VS Code を使用する場合
-
プロジェクトを VS Code で開きます。
-
.vscode/mcp.jsonファイルが正しく設定されていることを確認します。次の例のいずれかを使用できます。例 1:uv を使用する(パッケージマネージャー)
{ "servers": { "interactive-terminal-server": { "type": "stdio", "command": "uv", "args": ["run", "${workspaceFolder}/interactive/server.py"] } } }例 2:python を直接使用する(現在のデフォルト)
{ "servers": { "interactive-terminal-server": { "type": "stdio", "command": "python3.13", "args": ["${workspaceFolder}/interactive/server.py"] } } }例 3:streamable-http トランスポートを使用する
{ "servers": { "interactive-terminal-server": { "type": "http", "url": "http://localhost:8070/mcp/" } } } -
VS Code の MCP インターフェースを使用してサーバーを起動します。
コマンドラインを使用する場合
注: コマンドラインでサーバーを起動する必要があるのは、
streamable-httpなどの stdio 以外のトランスポートオプションを使用する場合、または VS Code の外部で実行する場合のみです。stdio の場合、VS Code の MCP インターフェースからサーバーを自動的に起動できます。
-
Stdio トランスポート(デフォルト):
uv run python -m interactive.serverランタイム環境が提供するパッケージを使用する場合は、
uvを使わずにサーバーを実行することもできます。python -m interactive.server -
Streamable HTTP トランスポート:
uv run python -m interactive.server --transport streamable-http --port 8070または、
uvを使わない場合:python -m interactive.server --transport streamable-http --port 8070
対話型ターミナルツール
サーバーは以下のツールを提供します。
-
セッションを開始:
- 説明:シェルコマンドを実行して、新しい対話型セッションを開始します。
- パラメーター:
command(str):セッションを開始するコマンド(例:python)。args(list):コマンドに渡す引数。log_file(str、任意):セッションの出力を書き込むログファイルのパス。指定しない場合、ログは記録されません。
- 戻り値:セッション ID を含むメッセージ。
-
出力またはプロンプトを待機:
- 説明:特定の出力やプロンプトを待つか、タイムアウトまでの出力を取得します。
- パラメーター:
session_id(int):監視するセッションの ID。prompts(list):出力内で検出する文字列のリスト(例:プロンプトや特定のテキスト)。timeout(int):出力を待つ最大時間(秒)。
- 戻り値:検出された出力を示すメッセージ。一致するものが見つからない場合は、タイムアウトを示すメッセージ。
- 注:この関数は、現在の出力バッファーの取得にも使用できます。
-
コマンドを送信:
- 説明:対話型セッションにコマンドを送信します。
- パラメーター:
session_id(int):セッション ID。command(str):送信するコマンド。
- 戻り値:成功または失敗を示すメッセージ。
-
セッションを終了:
- 説明:対話型セッションを終了します。
- パラメーター:
session_id(int):終了するセッションの ID。
- 戻り値:セッションの終了状態を示すメッセージ。
-
アクティブなセッションを取得:
- 説明:アクティブな対話型セッションをすべて一覧で取得します。
- 戻り値:セッション ID とその状態を含む辞書。
セッションの開始
start_session ツールを使用して、新しいセッションを開始できます。
start_session(command: str, args: list, log_file: str = None)
command:対話型セッションを開始するコマンド(例:'python')。args:コマンドに渡す引数のリスト。log_file:セッションの出力を書き込む任意のログファイル。
例:
start_session("python", ["-i"])
これにより、Python の対話型セッションが開始されます。
テスト
サーバーの機能を検証するには、ユニットテストを実行します:
uv run python3 -m unittest
参考資料
謝辞
この製品は、Daniel Potts の協力を得てバイブコーディングされました。AI に何度も対話型テストを繰り返させた彼に、特別な感謝を捧げます。まさに品質保証(そして忍耐)のチャンピオンです。このプロジェクトでは、人間がコードやドキュメントを直接書いたことも、PR の作成を手伝ったこともありません。コードとドキュメントはすべて、GitHub Copilot(OpenAI GPT-4)の支援を受けて生成されました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。