Skip to main content
Glama
andresthor

Command-Line MCP Server

by andresthor

コマンドライン MCP サーバー

PyPIバージョン Pythonのバージョン ライセンス: MIT

AI アシスタントが制御されたディレクトリ アクセスとコマンド権限を使用してターミナル コマンドを実行できるようにする、安全なモデル制御プロトコル (MCP) サーバー。

概要

コマンドラインMCPは、AIアシスタントと端末の間にセキュリティレイヤーを提供します。二重のセキュリティモデルを実装しています。

  1. コマンド権限: コマンドは、読み取り(安全)、書き込み(データの変更)、システム(システム状態に影響)に分類され、承認要件が異なります。

  2. ディレクトリ権限: コマンドは、明示的にホワイトリストに登録されたディレクトリまたはセッション中に承認されたディレクトリにのみアクセスできます。

AIアシスタントは標準化されたMCPツールを使用してこのサーバーと連携し、機密ファイルへのアクセスや危険な操作を防止しながら、安全なターミナルコマンド実行を可能にします。セキュリティレベルは、ニーズに応じて、非常に制限の厳しいものからより緩やかなものまで設定できます。

Related MCP server: Lilith Shell

主な特徴

安全

ユーザビリティ

統合

ディレクトリのホワイトリスト

コマンドの分類(読み取り/書き込み/システム)

クロードデスクトップ互換性

コマンドフィルタリング

永続的なセッション権限

標準MCPプロトコル

パターンマッチング

コマンド連鎖(パイプなど)

自動承認オプション

危険なコマンドブロッキング

直感的な承認ワークフロー

複数の設定方法

サポートされているコマンド(すぐに使用可能)

読み取りコマンド

  • lspwdcatlessheadtailgrepfindwhichdudffilesortなど。

書き込みコマンド

  • cpmvrmmkdirrmdirtouchchmodchownなど。

システムコマンド

  • pstophtopwhonetstatifconfigpingなど。

セキュリティアーキテクチャ

このシステムは多層セキュリティアプローチを実装しています。

┌───────────────────────────────────────────────────────────────┐
│                   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 つの構成方法をサポートしています。

  1. 組み込みのデフォルト構成(default_config.json)

  2. JSON 構成ファイル(カスタマイズに推奨)

    cmd-line-mcp --config config.json
  3. 環境変数(特定のオーバーライド用)

    export CMD_LINE_MCP_SECURITY_WHITELISTED_DIRECTORIES="~,/tmp"
  4. .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"

クロードデスクトップ統合

設定

  1. デスクトップ版Claudeをインストールする

  2. ~/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 ツールを提供します。

道具

目的

承認が必要

execute_command

任意のコマンドタイプを実行する

はい、書き込み/システムコマンドの場合

execute_read_command

読み取り専用コマンドを実行する

ディレクトリ承認のみ

approve_directory

ディレクトリへのアクセスを許可する

N/A - 承認ツールです

approve_command_type

コマンドカテゴリの権限を付与する

N/A - 承認ツールです

list_directories

承認されたディレクトリを表示

いいえ

list_available_commands

コマンドカテゴリを表示

いいえ

get_command_help

コマンドの使用ガイドを取得する

いいえ

get_configuration

現在の設定を表示

いいえ

ツールの例

ディレクトリ管理

# 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 つのセキュリティ モードをサポートしています。

モード

説明

最適な用途

構成

厳しい

ホワイトリストに登録されたディレクトリのみ許可

最大限のセキュリティ

auto_approve_directories_in_desktop_mode: false

承認

ホワイトリストに登録されていないディレクトリは明示的な承認が必要です

インタラクティブな使用

標準クライアントのデフォルトの動作

自動承認

Claude Desktop のディレクトリを自動承認します

利便性

auto_approve_directories_in_desktop_mode: true

ホワイトリストディレクトリ構成

"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
}

ディレクトリ承認フロー

  1. コマンドはディレクトリ内で要求されます

  2. システムチェック:

    • ディレクトリはグローバルホワイトリストに登録されていますか?→許可

    • このセッションでディレクトリは承認されましたか? →許可

    • どちらでもない?→承認をリクエスト

  3. 承認後、ディレクトリはセッション全体にわたって承認済みのままになります

パス形式のサポート

  • 絶対パス: /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`

allow_command_separators: true

順序

;

mkdir dir; cd dir

allow_command_separators: true

背景

&

find . -name "*.log" &

allow_command_separators: true

チェーン内のすべてのコマンドは、サポートされているコマンドリストから選択する必要があります。セキュリティチェックはチェーン全体に適用されます。

クイック設定:

"security": {
  "allow_command_separators": true  // Set to false to disable all chaining
}

特定のセパレーターを無効にするには、それらをdangerous_patternsリストに追加します。

ライセンス

マサチューセッツ工科大学

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/andresthor/cmd-line-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server