コマンドライン MCP サーバー
AI アシスタントが制御されたディレクトリ アクセスとコマンド権限を使用してターミナル コマンドを実行できるようにする、安全なモデル制御プロトコル (MCP) サーバー。
概要
コマンドラインMCPは、AIアシスタントと端末の間にセキュリティレイヤーを提供します。二重のセキュリティモデルを実装しています。
コマンド権限: コマンドは、読み取り(安全)、書き込み(データの変更)、システム(システム状態に影響)に分類され、承認要件が異なります。
ディレクトリ権限: コマンドは、明示的にホワイトリストに登録されたディレクトリまたはセッション中に承認されたディレクトリにのみアクセスできます。
AIアシスタントは標準化されたMCPツールを使用してこのサーバーと連携し、機密ファイルへのアクセスや危険な操作を防止しながら、安全なターミナルコマンド実行を可能にします。セキュリティレベルは、ニーズに応じて、非常に制限の厳しいものからより緩やかなものまで設定できます。
Related MCP server: Lilith Shell
主な特徴
安全 | ユーザビリティ | 統合 |
ディレクトリのホワイトリスト | コマンドの分類(読み取り/書き込み/システム) | クロードデスクトップ互換性 |
コマンドフィルタリング | 永続的なセッション権限 | 標準MCPプロトコル |
パターンマッチング | コマンド連鎖(パイプなど) | 自動承認オプション |
危険なコマンドブロッキング | 直感的な承認ワークフロー | 複数の設定方法 |
サポートされているコマンド(すぐに使用可能)
読み取りコマンド
ls、pwd、cat、less、head、tail、grep、find、which、du、df、file、sortなど。
書き込みコマンド
cp、mv、rm、mkdir、rmdir、touch、chmod、chownなど。
システムコマンド
ps、top、htop、who、netstat、ifconfig、pingなど。
セキュリティアーキテクチャ
このシステムは多層セキュリティアプローチを実装しています。
┌───────────────────────────────────────────────────────────────┐
│ COMMAND-LINE MCP SERVER │
├──────────────────┬────────────────────────┬───────────────────┤
│ COMMAND SECURITY │ DIRECTORY SECURITY │ SESSION SECURITY │
├──────────────────┼────────────────────────┼───────────────────┤
│ ✓ Read commands │ ✓ Directory whitelist │ ✓ Session IDs │
│ ✓ Write commands │ ✓ Runtime approvals │ ✓ Persistent │
│ ✓ System commands│ ✓ Path validation │ permissions │
│ ✓ Blocked list │ ✓ Home dir expansion │ ✓ Auto timeouts │
│ ✓ Pattern filters│ ✓ Subdirectory check │ ✓ Desktop mode │
└──────────────────┴────────────────────────┴───────────────────┘すべてのセキュリティ機能は、脅威モデルと利便性の要件に基づいて、制限付きから許可付きまで構成できます。
クイックスタート
# Install
git clone https://github.com/yourusername/cmd-line-mcp.git
cd cmd-line-mcp
python -m venv venv
source venv/bin/activate
pip install -e .
cp config.json.example config.json
# Run
cmd-line-mcp # With default config
cmd-line-mcp --config config.json # With specific config設定オプション
サーバーは、優先順位に従って 4 つの構成方法をサポートしています。
組み込みのデフォルト構成(default_config.json)
JSON 構成ファイル(カスタマイズに推奨)
cmd-line-mcp --config config.json環境変数(特定のオーバーライド用)
export CMD_LINE_MCP_SECURITY_WHITELISTED_DIRECTORIES="~,/tmp".env ファイル(環境固有の設定用)
cmd-line-mcp --config config.json --env .env
デフォルト設定はdefault_config.jsonに保存されており、パッケージに含まれています。このファイルをコピーして、独自のカスタム設定を作成できます。
コア構成設定
{
"security": {
"whitelisted_directories": ["/home", "/tmp", "~"],
"auto_approve_directories_in_desktop_mode": false,
"require_session_id": false,
"allow_command_separators": true
},
"commands": {
"read": ["ls", "cat", "grep"],
"write": ["touch", "mkdir", "rm"],
"system": ["ps", "ping"]
}
}環境変数の形式
環境変数では予測可能な命名パターンが使用されます。
CMD_LINE_MCP_<SECTION>_<SETTING>例:
# Security settings
export CMD_LINE_MCP_SECURITY_WHITELISTED_DIRECTORIES="/projects,/var/data"
export CMD_LINE_MCP_SECURITY_AUTO_APPROVE_DIRECTORIES_IN_DESKTOP_MODE=true
# Command additions (these merge with defaults)
export CMD_LINE_MCP_COMMANDS_READ="awk,jq,wc"クロードデスクトップ統合
設定
デスクトップ版Claudeをインストールする
~/Library/Application Support/Claude/claude_desktop_config.jsonで設定します:
{
"mcpServers": {
"cmd-line": {
"command": "/path/to/venv/bin/cmd-line-mcp",
"args": ["--config", "/path/to/config.json"],
"env": {
"CMD_LINE_MCP_SECURITY_REQUIRE_SESSION_ID": "false",
"CMD_LINE_MCP_SECURITY_AUTO_APPROVE_DIRECTORIES_IN_DESKTOP_MODE": "true"
}
}
}
}推奨されるクロードデスクトップ設定
最適なエクスペリエンスを得るには、以下を設定してください。
require_session_id: false- 承認ループを防ぐために必須auto_approve_directories_in_desktop_mode: true- アクセスを容易にするためのオプション一般的なディレクトリをホワイトリストに含める
設定後、Claude for Desktop を再起動します。
AIアシスタントツール
サーバーは、AI アシスタント用に次の MCP ツールを提供します。
道具 | 目的 | 承認が必要 |
| 任意のコマンドタイプを実行する | はい、書き込み/システムコマンドの場合 |
| 読み取り専用コマンドを実行する | ディレクトリ承認のみ |
| ディレクトリへのアクセスを許可する | N/A - 承認ツールです |
| コマンドカテゴリの権限を付与する | N/A - 承認ツールです |
| 承認されたディレクトリを表示 | いいえ |
| コマンドカテゴリを表示 | いいえ |
| コマンドの使用ガイドを取得する | いいえ |
| 現在の設定を表示 | いいえ |
ツールの例
ディレクトリ管理
# Check available directories
dirs = await list_directories(session_id="session123")
whitelisted = dirs["whitelisted_directories"]
approved = dirs["session_approved_directories"]
# Request permission for a directory
if "/projects/my-data" not in whitelisted and "/projects/my-data" not in approved:
result = await approve_directory(
directory="/projects/my-data",
session_id="session123"
)コマンド実行
# Read commands (read permissions enforced)
result = await execute_read_command("ls -la ~/Documents")
# Any command type (may require command type approval)
result = await execute_command(
command="mkdir -p ~/Projects/new-folder",
session_id="session123"
)構成を取得
# Check current settings
config = await get_configuration()
whitelist = config["directory_whitelisting"]["whitelisted_directories"]ディレクトリセキュリティシステム
サーバーはコマンドの実行を特定のディレクトリに制限し、機密ファイルへのアクセスを防止します。
ディレクトリセキュリティモード
システムは次の 3 つのセキュリティ モードをサポートしています。
モード | 説明 | 最適な用途 | 構成 |
厳しい | ホワイトリストに登録されたディレクトリのみ許可 | 最大限のセキュリティ |
|
承認 | ホワイトリストに登録されていないディレクトリは明示的な承認が必要です | インタラクティブな使用 | 標準クライアントのデフォルトの動作 |
自動承認 | Claude Desktop のディレクトリを自動承認します | 利便性 |
|
ホワイトリストディレクトリ構成
"security": {
"whitelisted_directories": [
"/home", // System directories
"/tmp",
"~", // User's home
"~/Documents" // Common user directories
],
"auto_approve_directories_in_desktop_mode": false // Set to true for convenience
}ディレクトリ承認フロー
コマンドはディレクトリ内で要求されます
システムチェック:
ディレクトリはグローバルホワイトリストに登録されていますか?→許可
このセッションでディレクトリは承認されましたか? →許可
どちらでもない?→承認をリクエスト
承認後、ディレクトリはセッション全体にわたって承認済みのままになります
パス形式のサポート
絶対パス:
/home/user/documentsホームディレクトリ:
~(ユーザーのホームに展開)ユーザーのサブディレクトリ:
~/Downloads
クロードデスクトップ統合
サーバーは Claude Desktop の永続的なセッションを維持し、ディレクトリ承認がリクエスト間で維持され、承認ループが防止されるようにします。
コマンドのカスタマイズ
システムはコマンド分類を使用してアクセスを制御します。
カテゴリ | 説明 | コマンド例 | 承認が必要 |
読む | 安全な操作 | ls、cat、find | いいえ |
書く | データの変更 | mkdir、rm、touch | はい |
システム | システム操作 | ps、ping、ifconfig | はい |
ブロックされました | 危険なコマンド | sudo、bash、eval | 常に拒否される |
カスタマイズ方法
// In config.json
{
"commands": {
"read": ["ls", "cat", "grep", "awk", "jq"],
"write": ["mkdir", "touch", "rm"],
"system": ["ping", "ifconfig", "kubectl"],
"blocked": ["sudo", "bash", "eval"]
}
}環境変数方式:
# Add to existing lists, not replace (comma-separated)
export CMD_LINE_MCP_COMMANDS_READ="awk,jq"
export CMD_LINE_MCP_COMMANDS_BLOCKED="npm,pip"MCP サーバーはこれらの追加機能を既存のコマンドと結合し、完全なコマンド リストを再作成せずに機能を拡張できるようにします。
コマンドチェーン
サーバーは、次の 3 つのコマンド連鎖方式をサポートしています。
方法 | シンボル | 例 | 設定 | ||
パイプ | ` | ` | `ls | grep txt` |
|
順序 |
|
|
| ||
背景 |
|
|
|
チェーン内のすべてのコマンドは、サポートされているコマンドリストから選択する必要があります。セキュリティチェックはチェーン全体に適用されます。
クイック設定:
"security": {
"allow_command_separators": true // Set to false to disable all chaining
}特定のセパレーターを無効にするには、それらをdangerous_patternsリストに追加します。
ライセンス
マサチューセッツ工科大学