Dynamic Shell Server について
Dynamic Shell Server は、動的な承認システムのもとでシェルコマンドを実行する MCP サーバーです。ユーザーの承認と監査ログを残しながら、AI アシスタントにコマンドを実行させたい開発者に向いています。承認済みのコマンドは永続的に保存され、取り消しもできます。
主な機能
- 01初回実行時のユーザー承認
- 02承認済みコマンドの永続保存
- 03コマンド実行の監査ログ
- 045分間のタイムアウト保護
- 05コマンド承認の取り消し
活用シーン
- 01プロジェクトディレクトリで AI アシスタントに npm install を実行させる
- 02サーバー経由で実行されたコマンドの履歴を確認する
- 03不要になったコマンドの承認を取り消す
MCP 対応
このプロジェクトは MCP サーバーであり、execute_command と revoke_command_approval のツール、および承認済みコマンドを一覧する commands://approved リソースを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Dynamic Shell Command MCP サーバー
ユーザー承認と監査ログによってセキュリティを維持しながら、シェルコマンドを安全に実行できる Model Context Protocol(MCP)サーバーです。このサーバーでは、任意のコマンドを実行できます。
特長
- 🔐 動的なコマンド承認システム
- 📝 承認済みコマンドの永続的な保存
- 📊 包括的な監査ログ
- ⏱️ コマンドのタイムアウト保護
- 🔄 コマンドの承認取り消し機能
インストール
- このリポジトリをクローンします:
git clone <repository-url>
cd dynamic-shell-server
- 仮想環境を作成して有効化します:
python -m venv venv
source venv/bin/activate # On Windows use: venv\Scripts\activate
- 依存関係をインストールします:
pip install -r requirements.txt
使用方法
スタンドアロンモード
サーバーを直接実行します:
python dynamic_shell_server.py
Claude Desktop との連携
-
Claude Desktop の設定ファイルを開きます:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
サーバーの設定を追加します:
{
"mcpServers": {
"shell": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["/absolute/path/to/dynamic_shell_server.py"]
}
}
}
- Claude Desktop を再起動します
コマンド承認プロセス
コマンドを初めて実行すると、次のように確認を求められます:
Command Approval Required
Command: <command>
Arguments: <args>
This command has not been previously approved. Do you want to:
1. Allow this command once
2. Allow this command and remember for future use
3. Deny execution
Please choose an option (1-3):
利用可能なツール
-
execute_command:シェルコマンドを実行します- パラメーター:
command:実行するコマンドargs:コマンド引数のオプションリスト
- パラメーター:
-
revoke_command_approval:以前に承認したコマンドの承認を取り消します- パラメーター:
command:承認を取り消すコマンド
- パラメーター:
利用可能なリソース
commands://approved:承認済みコマンドとその承認日を一覧表示します
データの保存
サーバーはデータを ~/.config/mcp-shell-server/ に保存します:
approved_commands.json:承認済みコマンドとその承認日の一覧audit.log:すべてのコマンドの詳細な実行履歴
セキュリティ機能
- コマンドを初めて実行する際にユーザーの承認が必要
- 承認済みコマンドの永続的な保存
- 包括的な監査ログ
- コマンドのタイムアウトは5分
- シェルを実行しない(インジェクション攻撃を防止)
- コマンドの承認取り消し機能
使用例
Claude Desktop 経由:
Human: Run 'npm install' in my project directory
Assistant: I'll help you run that command. Since this is the first time running 'npm install', you'll need to approve it.
[Command approval prompt appears]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。