mcpField
M
MCP Interactive Terminal Server

MCP Interactive Terminal Server

ローカル
github.com/danielp370-msft開発ツール170 週間前に更新

MCP Interactive Terminal Server について

MCP Interactive Terminal Serverは、gdbやREPLなど入力待ちのコマンドラインプログラムをエージェントから操作できます。プロセスの起動、コマンド送信、出力確認をツールで管理します。

主な機能

  1. 01対話型コマンドセッションの起動
  2. 02実行中プロセスへのコマンド送信
  3. 03出力やプロンプト文字列の待機
  4. 04アクティブなセッションの確認
  5. 05セッション出力のログ保存(任意)

活用シーン

  1. 01gdbデバッグセッションの自動化
  2. 02UARTコンソールの操作
  3. 03Python REPLの利用
  4. 04対話型コマンドの出力監視

MCP 対応

MCPクライアントに対話型ターミナルセッション管理ツールを提供します。stdio、sse、streamable-httpのトランスポートに対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP インタラクティブターミナルサーバー

概要

MCP インタラクティブターミナルサーバーを使用すると、エージェントはコマンドライン駆動のプロンプトを操作できます。これは、gdb、UART コンソール、その他の REPL ベースのツールなど、対話型ターミナルコマンドの自動化と管理に役立ちます。FastMCP パッケージを使用して構築されており、対話型ターミナルセッションを管理するツールを提供するとともに、最新の MCP 標準に準拠しています。このサーバーは、FastMCP が提供する 3 つのトランスポートオプション、stdio(デフォルト)、sse、streamable-http をサポートしており、さまざまなユースケースに対応できます。

インストール

前提条件
  1. Python 3.12 以降 システムに Python 3.12 以降がインストールされていることを確認してください。

  2. 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 を使用する場合
  1. プロジェクトを VS Code で開きます。

  2. .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/"
        }
      }
    }
    
  3. 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
    
対話型ターミナルツール

サーバーは以下のツールを提供します。

  1. セッションを開始:

    • 説明:シェルコマンドを実行して、新しい対話型セッションを開始します。
    • パラメーター:
      • command(str):セッションを開始するコマンド(例:python)。
      • args(list):コマンドに渡す引数。
      • log_file(str、任意):セッションの出力を書き込むログファイルのパス。指定しない場合、ログは記録されません。
    • 戻り値:セッション ID を含むメッセージ。
  2. 出力またはプロンプトを待機:

    • 説明:特定の出力やプロンプトを待つか、タイムアウトまでの出力を取得します。
    • パラメーター:
      • session_id(int):監視するセッションの ID。
      • prompts(list):出力内で検出する文字列のリスト(例:プロンプトや特定のテキスト)。
      • timeout(int):出力を待つ最大時間(秒)。
    • 戻り値:検出された出力を示すメッセージ。一致するものが見つからない場合は、タイムアウトを示すメッセージ。
    • 注:この関数は、現在の出力バッファーの取得にも使用できます。
  3. コマンドを送信:

    • 説明:対話型セッションにコマンドを送信します。
    • パラメーター:
      • session_id(int):セッション ID。
      • command(str):送信するコマンド。
    • 戻り値:成功または失敗を示すメッセージ。
  4. セッションを終了:

    • 説明:対話型セッションを終了します。
    • パラメーター:
      • session_id(int):終了するセッションの ID。
    • 戻り値:セッションの終了状態を示すメッセージ。
  5. アクティブなセッションを取得:

    • 説明:アクティブな対話型セッションをすべて一覧で取得します。
    • 戻り値:セッション 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)の支援を受けて生成されました。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。