Command-Line MCP Server

by andresthor
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Supports .env file configuration for environment-specific settings of the MCP server

명령줄 MCP 서버

AI 어시스턴트가 제어된 디렉토리 액세스 및 명령 권한을 통해 터미널 명령을 실행할 수 있도록 하는 안전한 MCP(Model Control Protocol) 서버입니다.

개요

명령줄 MCP는 AI 어시스턴트와 단말기 사이에 보안 계층을 제공합니다. 다음과 같은 이중 보안 모델을 구현합니다.

  1. 명령 권한 : 명령은 읽기(안전), 쓰기(데이터 변경), 시스템(시스템 상태에 영향을 미침)으로 분류되며 승인 요구 사항이 다릅니다.
  2. 디렉토리 권한 : 명령은 세션 중에 승인된 디렉토리 또는 명시적으로 허용된 디렉토리에만 액세스할 수 있습니다.

AI 어시스턴트는 표준화된 MCP 도구를 사용하여 이 서버와 상호 작용하여 민감한 파일이나 위험한 작업에 대한 접근을 차단하는 동시에 안전한 터미널 명령 실행을 지원합니다. 필요에 따라 매우 제한적인 보안 수준부터 보다 관대한 보안 수준까지 보안 수준을 설정할 수 있습니다.

주요 특징

보안사용성완성
디렉토리 허용 목록명령어 분류(읽기/쓰기/시스템)Claude Desktop 호환성
명령 필터링지속적인 세션 권한표준 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

보안 아키텍처

시스템은 다층 보안 접근 방식을 구현합니다.

지엑스피1

모든 보안 기능은 위협 모델과 편의성 요구 사항에 따라 제한적에서 허용적까지 구성할 수 있습니다.

빠른 시작

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

Claude 데스크톱 통합

설정

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

권장되는 Claude 데스크톱 설정

최상의 환경을 위해 다음을 구성하세요.

  • 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"]

디렉토리 보안 시스템

서버는 명령 실행을 특정 디렉토리로 제한하여 중요한 파일에 대한 액세스를 차단합니다.

디렉토리 보안 모드

이 시스템은 세 가지 보안 모드를 지원합니다.

방법설명가장 적합한구성
엄격한허용 목록에 있는 디렉토리만 허용됩니다.최대 보안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 데스크톱 통합

서버는 Claude Desktop에 대한 지속적인 세션을 유지하여 요청 간에 디렉토리 승인이 유지되도록 하고 승인 루프를 방지합니다.

명령 사용자 정의

시스템은 명령 분류를 사용하여 액세스를 제어합니다.

범주설명예제 명령승인이 필요합니다
읽다안전한 작업ls, 고양이, 찾기아니요
쓰다데이터 수정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 서버는 이러한 추가 기능을 기존 명령과 병합하여 전체 명령 목록을 다시 만들지 않고도 기능을 확장할 수 있도록 해줍니다.

명령 체이닝

서버는 세 가지 명령 체이닝 방법을 지원합니다.

방법상징구성 설정
파이프```lsgrep txt`allow_command_separators: true
순서;mkdir dir; cd dirallow_command_separators: true
배경&find . -name "*.log" &allow_command_separators: true

체인에 있는 모든 명령은 지원되는 명령 목록에 속해야 합니다. 보안 검사는 체인 전체에 적용됩니다.

빠른 구성:

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

특정 구분 기호를 비활성화하려면 dangerous_patterns 목록에 추가하세요.

특허

MIT

ID: s6abb0eqxm