Linux Command MCP (Model Context Protocol) について
Linux Command MCP は、Linux コマンドをリモートで実行するための MCP サーバーおよびクライアントです。Claude Desktop などのクライアントから診断コマンドを実行したいユーザーを想定しており、制御された実行を重視しています。
主な機能
- 01Linux コマンドのリモート実行
- 02コマンドラインクライアントを同梱
- 03インタラクティブスクリプト向けの stdin 対応
- 04PM2 によるプロセス管理
活用シーン
- 01Claude Desktop からカーネルバージョンやディスク使用量を確認
- 02リモートホストで読み取り専用の診断コマンドを実行
MCP 対応
Linux コマンドを実行する MCP サーバーを提供し、Claude Desktop の MCP サーバー設定に追加できます。コマンドラインクライアントも含まれます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Linux Command MCP(Model Context Protocol)
概要
Linux Command MCP は、Model Context Protocol(MCP)を使用して構築されたリモートコマンド実行システムで、安全かつ標準化された方法で Linux コマンドを実行できます。
Claude Desktop MCP サーバーの設定
設定について
MCP サーバーは claude_desktop_config.json ファイルで設定します。通常、このファイルは ~/.config/Claude/claude_desktop_config.json にあります。
設定の構造
"mcpServers": {
"server-name": {
"command": "node|npx|uvx",
"args": ["server-specific-arguments"],
"env": {
"OPTIONAL_ENVIRONMENT_VARIABLES": "value"
}
}
}
Linux Command MCP サーバーの設定
"linux-command": {
"command": "node",
"args": [
"/full/path/to/linux-command-mcp/server/dist/index.js"
]
}
設定の説明
"command":実行コマンド(node、npx、uvx)を指定します"args":サーバーの実行可能ファイルへのフルパスindex.jsへのパスが絶対パスであることを確認してください
重要な設定のヒント
- 常にフルパス(絶対パス)を使用してください
- ファイルのアクセス権を確認してください
- 指定したファイルが実行可能であることを確認してください
前提条件
- Node.js(v18.x 以降)
- npm
- PM2(プロセス管理用)
インストール
- リポジトリをクローンします
git clone <repository-url>
cd linux-command-mcp
- サーバーの依存関係をインストールします
cd server
npm install
npm run build
- クライアントの依存関係をインストールします
cd ../client
npm install
npm run build
使用方法
サーバーの起動
- サーバーディレクトリに移動します
cd server
- PM2 で起動します
npm run pm2:start
クライアントの使用
使用可能なコマンド:
- exec - Linux コマンドを実行します
- list [directory] - ディレクトリの内容を一覧表示します
- help - このヘルプを表示します
- exit - クライアントを終了します
コマンドを直接実行します:
# In the client directory
npm start
exec "ls -l"
exec "list /home"
exec "uname -a"
対話型コマンドと Stdin のサポート
✨ 新機能:Linux Command MCP サーバーが stdin 経由で対話型スクリプトをサポートするようになりました!
stdin パラメーターの使用
stdin パラメーターを使用して、対話型スクリプトに入力を渡せるようになりました:
// Example: Run an interactive Python game
await callTool('execute-command', {
command: 'python3 /path/to/interactive_script.py',
stdin: '15\n2\n1\n2\n1\n' // Automated responses
});
仕組み:
stdinパラメーターは実行前にスクリプトへ入力を送信します- 入力は1行ずつ送信されます(改行には
\nを使用します) - スクリプトは自動応答を受け取り、最後まで実行されます
- すべての出力が取得され、返されます
対話型スクリプトの例
入力を受け付ける Python ゲーム:
# Game expects: number of sticks, then player moves
stdin: "15\n2\n1\n2\n1\n"
セットアップウィザード:
# Wizard expects: username, email, confirm
stdin: "johndoe\[email protected]\ny\n"
複数選択式のプロンプト:
# Script shows options 1-5, user selects option 3
stdin: "3\n"
Sudo コマンド
重要な注意:Linux Command MCP サーバーは、パスワード入力を求める sudo コマンドを引き続き実行できません。
sudo コマンドの場合:
- 適切な権限でコマンドを手動で実行します
- または、特定のコマンドに対してパスワードなしの sudo を設定します
- または、sudo を使わない対話型スクリプトには stdin パラメーターを使用します
トラブルシューティング
- PM2 が実行中であることを確認します:
pm2 list - サーバーのログを確認します:
pm2 logs linux-command-mcp-server - サーバーとクライアントのビルドを確認します
Claude Desktop での Linux コマンドの使用
やり取りの例
Claude に Linux コマンドの実行を依頼する際の、安全で一般的な例を以下に示します。
-
システム情報の確認
- 「Linux カーネルのバージョンを表示してもらえますか?」
$ uname -r -
ディレクトリの内容を一覧表示
- 「ホームディレクトリの内容を表示してください」
$ ls ~ -
利用可能なディスク容量の確認
- 「このシステムのディスク使用量はどのくらいですか?」
$ df -h -
システムの稼働時間の確認
- 「このシステムはどのくらいの時間稼働していますか?」
$ uptime -
ネットワークインターフェースの確認
- 「利用可能なネットワークインターフェースを教えてください」
$ ip addr -
システムメモリ情報
- 「メモリ使用量を表示してもらえますか?」
$ free -h
重要な使用ガイドライン
- プライバシー:機密情報が明らかにならないコマンドのみ実行してください
- 安全性:システム設定を変更するコマンドは避けてください
- 範囲:情報取得や診断を目的としたコマンドに限定してください
避けるべきこと
❌ 次のようなコマンドは実行しないでください:
- 個人のファイル名やパスを明らかにする
- 機密性の高いシステム設定情報を含む
- システム設定を変更する
- sudo または root 権限を必要とする
会話の例
ユーザー:「Linux カーネルのバージョンを確認してもらえますか?」
Claude:もちろんです!Linux カーネルのバージョンを表示するコマンドを実行します。
$ uname -r
5.15.0-91-generic
このカーネルは Ubuntu 22.04.3 LTS 上で動作しています。
セキュリティに関する考慮事項
- 信頼できるネットワークでのみ実行してください
- サーバーへのアクセスを制限してください
- コマンドの実行には注意してください
セキュリティとベストプラクティス
- 要求する情報には常に注意してください
- システムレベルの機密性のない情報を提供するコマンドを使用してください
- 迷った場合は、コマンドの目的をClaudeに確認してください
コントリビューション
以下の方法でLinux Command MCPを改善、拡張できます:
- 安全で汎用的なコマンド例を追加する
- ドキュメントを強化する
- コマンド実行の改善を提案する
ライセンス
MITライセンス
お問い合わせ
-
ブロックチェーン:0xkiran.eth
- Ethereum:0x67F367edb83d8fdF48E7E7Cfcb35183e746c292c
- Bitcoin:bc1q688np092y8raxag5e6573chrcgck5756yv476v
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。