Mcp Ssh Wingman について
Mcp Ssh Wingman は、tmux で管理する Unix シェルセッションを AI アシスタントが参照できる MCP サーバーです。読み取り専用のため、コマンドやキー入力は送信できません。
主な機能
- 01現在のターミナル内容の読み取り
- 02tmux のスクロールバック履歴の読み取り
- 03端末サイズとメタデータの取得
- 04MCP リソースとして端末状態を公開
活用シーン
- 01長時間実行プロセスの監視
- 02端末アプリケーションの動作確認
- 03過去の端末出力を使ったデバッグ
- 04端末状態に基づく支援
MCP 対応
現在の内容、スクロールバック、セッションメタデータを読むツールとリソースを MCP クライアントに公開します。コマンドの実行や端末への入力は行いません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP SSH Wingman
tmuxを介してUnixシェルのプロンプトに読み取り専用でアクセスできる、Model Context Protocol(MCP)サーバーです。これにより、ClaudeなどのAIアシスタントはコマンドを実行せずに、ターミナル環境を安全に確認できます。
機能
- 🔒 読み取り専用アクセス - コマンドを実行するリスクなく、ターミナルの内容を確認できます
- 🖥️ tmuxとの連携 - tmuxのセッション管理を活用し、信頼性の高いターミナルアクセスを実現します
- 📜 スクロールバック履歴 - 過去のターミナル出力にアクセスできます
- 📊 ターミナルのメタデータ - サイズ、現在のパス、セッション情報を取得できます
- 🔌 MCPプロトコル - AIアシスタントとの連携に使える標準プロトコルです
よくある質問
GNU screenに対応する予定はありますか?
当面の予定はありません。screenはペアプログラミングやデバッグに使用できますが、読み取り専用モードを強制する仕組みがありません。
読み取り専用の安全対策が、このMCPとSSH機能を備えた他のMCPとの主な違いであるため、統合するにはscreenが読み取り専用セッションに対応する必要があります。
zellijに対応する予定はありますか?
将来的には対応する可能性があります。zellijでtmuxと同様の読み取り専用機能を実現するには、まずhttps://github.com/zellij-org/zellij/issues/4348 が実装される必要があります。
前提条件
- tmux(ターミナルセッションの管理用)
- (任意)Go 1.21以降(ソースからビルドする場合のみ必要)
インストール
Homebrew(macOS/Linux)
brew tap conallob/tap
brew install mcp-ssh-wingman
ビルド済みバイナリ
リリースページからビルド済みバイナリをダウンロードしてください。
対応プラットフォーム:
- macOS(arm64/amd64)
- Linux(arm64/amd64)
- FreeBSD(arm64/amd64)
ソースからビルド
ビルド手順についてはDEVELOPMENT.mdを参照してください。
使い方
サーバーの実行
# Start with default tmux session name (mcp-wingman)
mcp-ssh-wingman
# Use a custom tmux session name
mcp-ssh-wingman --session my-session
# Show version
mcp-ssh-wingman --version
Claude Desktopとの連携
サーバーをClaude Desktopの設定ファイルに追加してください。
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"ssh-wingman": {
"command": "/usr/local/bin/mcp-ssh-wingman",
"args": ["--session", "mcp-wingman"]
}
}
}
設定を更新した後、Claude Desktopを再起動してください。
Gemini CLIとの連携
このセクションをGeminiの設定ファイル(~/.gemini/settings.json)に追加してください。
{
"mcpServers": {
"ssh-wingman": {
"command": "/usr/local/bin/mcp-ssh-wingman",
"args": ["--session", "mcp-wingman"]
}
}
}
gemini CLIを実行し、MCPサーバーが認識されることを確認してください。
> /mcp list
Configured MCP servers:
🟢 ssh-wingman - Ready (3 tools)
Tools:
- get_terminal_info
- read_scrollback
- read_terminal
プロンプトでテストしてください。
> using ssh-wingman MCP Server, what do you see in my session?
╭────────────────────────────────────────────────────────────────────────────────────────╮
│ ? read_terminal (ssh-wingman MCP Server) {} ← │
│ │
│ MCP Server: ssh-wingman │
│ Tool: read_terminal │
│ │
│ Allow execution of MCP tool "read_terminal" from server "ssh-wingma… │
│ │
│ ● 1. Yes, allow once │
│ 2. Yes, always allow tool "read_terminal" from server "ssh-wingma… │
│ 3. Yes, always allow all tools from server "ssh-wingman" │
│ 4. No, suggest changes (esc) │
│ │
╰────────────────────────────────────────────────────────────────────────────────────────╯
⠏ Waiting for user confirmation...
ここでは、オプション3を選択してもよいでしょう。
利用可能なツール
サーバーは次のMCPツールを公開します。
read_terminal
tmuxセッションから現在のターミナルの内容を読み取ります。
例:
{
"name": "read_terminal"
}
read_scrollback
tmuxセッションのスクロールバック履歴を読み取ります。
パラメーター:
lines(数値):スクロールバックバッファから取得する行数
例:
{
"name": "read_scrollback",
"arguments": {
"lines": 100
}
}
get_terminal_info
ターミナルに関する情報(サイズ、現在のパスなど)を取得します。
例:
{
"name": "get_terminal_info"
}
利用可能なリソース
terminal://current
テキストリソースとしての現在のターミナルの内容です。
terminal://info
ターミナルのメタデータと情報です。
仕組み
サーバーは tmux セッションを作成するか接続し、tmux に組み込まれているコマンドを使用して、ターミナルの内容を安全に読み取ります。
- セッション管理:デタッチされた tmux セッションを作成/接続します
- コンテンツの取得:
tmux capture-paneを使用して、表示中の内容を読み取ります - 読み取り専用:セッションにキー入力やコマンドを送信することはありません
- MCP プロトコル:標準の MCP ツールとリソースを介して、ターミナルの内容を公開します
この方法により、AI アシスタントは誤ってコマンドを実行したりターミナルの状態を変更したりするリスクなく、ターミナルの動作を監視できます。
ユースケース
- 長時間実行されるプロセスやビルドの出力を監視する
- ターミナルベースのアプリケーションの動作を確認する
- ターミナルの履歴を確認して問題をデバッグする
- 現在のターミナルの状態に基づき、状況に応じた支援を提供する
セキュリティに関する考慮事項
MCP SSH Wingman はセキュリティを考慮して設計されています。
- 読み取り専用:サーバーがターミナルに入力を送信することはありません
- ローカルアクセス:ローカルの tmux セッションのみで動作します
- コマンド実行なし:シェルコマンドを実行できません
- セッションの分離:各セッションは独立しており、tmux によってサンドボックス化されています
トラブルシューティング
サーバーが起動しない
- tmux がインストールされていることを確認します:
tmux -V - バイナリに実行権限があることを確認します:
chmod +x /usr/local/bin/mcp-ssh-wingman
Claude Desktop が接続できない
- 設定ファイルに記載されているバイナリへのパスを確認します
- Claude Desktop のログでエラーメッセージを確認します
- まずコマンドラインからバイナリが正常に実行されることを確認します
ターミナルの内容を確認できない
- tmux セッションが存在することを確認します:
tmux list-sessions - セッション名が設定で指定した名前と一致していることを確認します
- tmux セッションにアクティブなペインがあることを確認します
コントリビューション
コントリビューションを歓迎します。お気軽にイシューやプルリクエストを送信してください。
開発ガイドラインについては、DEVELOPMENT.md を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。