mcpField
T
terminal-mcp

terminal-mcp

ローカル
github.com/mkpvishnu開発ツール1210 週間前に更新

terminal-mcp について

terminal-mcpは、永続的な対話型ターミナルセッションを必要とするAIエージェント向けのMCPサーバーです。PTYを介してSSH、REPL、データベースCLI、TUIアプリ、長時間実行プロセスを扱い、セッション操作とコマンドの安全確認を提供します。

主な機能

  1. 01永続的なPTYセッション
  2. 02SSH、REPL、データベースCLIでの対話操作
  3. 03TUIの画面スナップショットと差分
  4. 04パターン指定による出力待機
  5. 05危険なコマンドの確認ゲート

活用シーン

  1. 01SSHセッションで複数のコマンドを実行
  2. 02Python REPLで対話的に作業
  3. 03データベースCLIでの確認とクエリ
  4. 04ビルドの監視やTUIアプリの操作

MCP 対応

セッションの作成、対話、読み取り、サイズ変更、一覧表示、終了と、単発コマンドの実行に使う9種類のMCPツールを公開します。MCPクライアントはこれらのツールで永続的なターミナルセッションを操作できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"mkpvishnu-terminal": {
"command": "uvx",
"args": [
"terminal-mcp"
],
"env": {
"TERMINAL_MCP_MAX_SESSIONS": "<TERMINAL_MCP_MAX_SESSIONS>",
"TERMINAL_MCP_IDLE_TIMEOUT": "<TERMINAL_MCP_IDLE_TIMEOUT>"
}
}
}
}
起動コマンドuvx terminal-mcp
設定が必要な環境変数
TERMINAL_MCP_MAX_SESSIONSMaximum concurrent sessions
TERMINAL_MCP_IDLE_TIMEOUTSeconds before auto-close (default 1800)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiterminal-mcp0.3.1

ツール

7

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
colsintegerいいえターミナルの幅(列数)
rowsintegerいいえターミナルの高さ(行数)
labelstringいいえセッションの人間が読みやすいラベル
commandstringはい実行する Shell コマンド(例:'bash'、'python3'、'ssh user@host')
idle_timeoutintegerいいえアイドル状態のセッションを自動終了するまでの秒数
enable_snapshotbooleanいいえスナップショット読み取り用の pyte 画面バッファーを有効にします
scrollback_linesintegerいいえ保持するスクロールバック履歴の行数(要 enable_snapshot)

詳細

terminal-mcp のバナー

AI に本物のターミナルを。永続セッション。対話型プログラム。制限なし。

PyPI Python 3.10+ License: MIT CI CodeQL

VS Code にインストール VS Code Insiders にインストール Cursor にインストール Claude Desktop にインストール

terminal-mcp のデモ


問題点

あらゆる AI コーディングツールが、同じ壁に突き当たります。本物のターミナルにアクセスできないのです。

Claude Code の Bash ツール、GitHub Copilot、Codex は、いずれもコマンドを独立したサブプロセスで実行します。コマンドごとに新しいプロセスが開始され、状態は引き継がれません。そのため、次のことができません。

  • SSH セッション - リモートサーバーに接続し、複数のコマンドを実行できません
  • REPL - Python、Node、Ruby のインタープリターを対話的に使えません
  • データベース CLI - psql、mysql、redis-cli の接続を維持できません
  • TUI アプリ - 矢印キーで htop、vim、fzf を操作できません
  • 長時間実行プロセス - ビルドの監視、ログの確認、開発サーバーの実行ができません

解決策

terminal-mcp は AI エージェントに本物のターミナルを提供します。ツール呼び出しをまたいで維持される永続的な PTY セッションを利用できます。コマンドの送信、出力の読み取り、キー入力、TUI の操作を、人間がターミナルを使うのとまったく同じように行えます。

uvx terminal-mcp

コマンドは 1 つだけ。Claude Code、Claude Desktop、VS Code、Cursor、Windsurf で動作します。


クイックスタート

1. インストール(30 秒)
# No install needed - run directly
uvx terminal-mcp

# Or install globally
pip install terminal-mcp
2. AI クライアントに接続する
Claude Code

~/.claude.json またはプロジェクトの .mcp.json に追加します。

{
  "mcpServers": {
    "terminal": {
      "command": "uvx",
      "args": ["terminal-mcp"]
    }
  }
}
Claude Desktop

claude_desktop_config.json に追加します。

{
  "mcpServers": {
    "terminal": {
      "command": "uvx",
      "args": ["terminal-mcp"]
    }
  }
}
VS Code / Cursor

上のワンクリックインストールバッジをクリックするか、.vscode/mcp.json に追加します。

{
  "servers": {
    "terminal-mcp": {
      "command": "uvx",
      "args": ["terminal-mcp"]
    }
  }
}
Windsurf

~/.codeium/windsurf/mcp_config.json に追加します。

{
  "mcpServers": {
    "terminal": {
      "command": "uvx",
      "args": ["terminal-mcp"]
    }
  }
}
3. 動作を確認する
session_exec  exec="echo hello from terminal-mcp"

何ができますか?

リモートサーバーに SSH 接続する
session_create   command="ssh [email protected]"   label="prod"
session_interact session_id="a1b2c3d4"  input="df -h"  wait_for="\$"
session_interact session_id="a1b2c3d4"  input="docker ps"  wait_for="\$"
session_close    session_id="a1b2c3d4"
対話型 REPL を実行する
session_create   command="python3"  label="python"
session_interact session_id="e5f6g7h8"  input="import pandas as pd"  wait_for=">>>"
session_interact session_id="e5f6g7h8"  input="df = pd.read_csv('data.csv')"  wait_for=">>>"
session_interact session_id="e5f6g7h8"  input="df.describe()"  wait_for=">>>"
session_close    session_id="e5f6g7h8"
データベースにクエリを実行する
session_create   command="psql -U admin mydb"  label="db"
session_interact session_id="x1y2z3w4"  input="SELECT count(*) FROM users;"  wait_for="row"
session_interact session_id="x1y2z3w4"  input="\dt"  wait_for="#"
session_close    session_id="x1y2z3w4"
TUI アプリを操作する
session_create   command="htop"  label="monitor"
session_read     session_id="a1b2c3d4"
# Auto-detects TUI, returns screen snapshot

session_send     session_id="a1b2c3d4"  key="F6"
session_read     session_id="a1b2c3d4"  mode="diff"
# Returns only changed lines - saves tokens

session_send     session_id="a1b2c3d4"  key="F10"
session_close    session_id="a1b2c3d4"
長時間実行されるビルドを監視する
session_create   command="bash"  label="build"
session_send     session_id="a1b2c3d4"  input="npm run build"
session_wait_for session_id="a1b2c3d4"  pattern="Build complete|ERROR"  timeout=120
単発コマンドを実行する
session_exec  exec="git log --oneline -10"
session_exec  exec="docker compose ps"  timeout=10

主な機能

機能内容
セッションの永続化ツール呼び出しをまたいで維持される実際の PTY セッション
1 回の呼び出しで送信+読み取りsession_interact により、LLM とのラウンドトリップを半減できます
パターンベースの読み取り正規表現に一致するまで wait_for が待機するため、タイムアウトを推測する必要がありません
TUI の自動検出htop、vim などを検出し、画面スナップショットモードに自動で切り替えます
出力差分モード変更された画面の行だけを返し、トークンを最小限に抑えます
特殊キー矢印キー、Tab、F1〜F12、Home/End、Page Up/Down
制御文字Ctrl-C、Ctrl-D、Ctrl-Z、Ctrl-L、telnet エスケープ
危険なコマンドのゲートrm -rf、DROP TABLE、curl|sh をブロックし、確認を必須にします
OSC 133 シェル統合コマンドの境界と終了コードを自動検出します
スマートな切り詰めコンテキストのオーバーフローを防ぐ 4 つの方法
シークレット入力ログに記録せずにパスワードを送信します
動的リサイズSIGWINCH により、実行中にターミナルのサイズを変更できます
アイドル時のクリーンアップアイドル状態のセッションを自動的に閉じます
クロスプラットフォームLinux、macOS、Windows に対応

ツールリファレンス

terminal-mcp は 9 個の MCP ツールを公開します。詳しくはdocs/tools.mdをご覧ください。

ツール目的
session_create永続的なターミナルセッションを起動します
session_sendテキスト、キー、または制御文字を送信します
session_read出力を読み取ります(stream、snapshot、auto、diff モード)
session_interact1 回の呼び出しで送信と読み取りを行います
session_wait_for出力内の正規表現パターンを待ちます
session_exec単発のコマンドを実行します
session_closeセッションを正常に終了します
session_resizeターミナルのサイズを変更します
session_listアクティブなセッションを一覧表示します

アーキテクチャ

flowchart LR
    Client[AI Client] -->|MCP JSON-RPC| Server[terminal-mcp]
    Server --> SM[Session Manager]
    SM --> S1[PTY 1: bash]
    SM --> S2[PTY 2: python3]
    SM --> S3[PTY 3: ssh user@host]
    S1 & S2 & S3 -.->|PTY output| Reader[Reader Thread]
    Reader -.->|buffer| Server

各セッションは、pexpect.spawn(Windows では PopenSpawn)を介して実際の PTY を使用します。アーキテクチャの詳細は、docs/architecture.mdをご覧ください。


設定

すべての設定は TERMINAL_MCP_* 環境変数で指定できます。設定の詳細はdocs/configuration.mdをご覧ください。

設定環境変数デフォルト
セッションの最大数TERMINAL_MCP_MAX_SESSIONS10
アイドルタイムアウトTERMINAL_MCP_IDLE_TIMEOUT1800(30 分)
安全ゲートTERMINAL_MCP_SAFETY_GATEon
バッファー上限TERMINAL_MCP_MAX_BUFFER_BYTES1000000(1MB)
切り詰めTERMINAL_MCP_TRUNCATION_MODEtail

カスタム設定の例:

{
  "mcpServers": {
    "terminal": {
      "command": "uvx",
      "args": ["terminal-mcp"],
      "env": {
        "TERMINAL_MCP_MAX_SESSIONS": "20",
        "TERMINAL_MCP_IDLE_TIMEOUT": "3600",
        "TERMINAL_MCP_TRUNCATION_MODE": "head_tail"
      }
    }
  }
}

ドキュメント

ドキュメント説明
ツールリファレンス9 個すべての MCP ツールの API 詳細
アーキテクチャterminal-mcp の内部動作
設定すべての設定と環境変数
安全性とセキュリティ危険なコマンドの検出と安全ゲート
ユースケースと例実際の使用例とパターン
変更履歴バージョン履歴とリリースノート
コントリビューションコントリビューションの方法

Supported Clients

ClientStatusInstall
Claude Code (CLI)Supported~/.claude.json or .mcp.json
Claude DesktopSupportedOne-click install
VS Code (Copilot Chat)SupportedOne-click install or .vscode/mcp.json
CursorSupportedOne-click install or Settings
WindsurfSupported~/.codeium/windsurf/mcp_config.json

Running Tests

pip install -e ".[dev]"
pytest tests/ -v

Contributing

Contributions welcome! See docs/contributing.md for guidelines.

License

MIT

コメント

MCP は初めてですか?

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

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