cli-mcp-server
CLI MCP 서버
포괄적인 보안 기능을 갖춘 제어된 명령줄 작업을 실행하기 위한 안전한 MCP(Model Context Protocol) 서버 구현입니다.
목차
개요
이 MCP 서버는 명령 허용 목록, 경로 검증, 실행 제어 등 강력한 보안 조치를 통해 안전한 명령줄 실행을 지원합니다. 보안을 유지하면서 LLM 애플리케이션에 대한 제어된 CLI 액세스를 제공하는 데 적합합니다.
Related MCP server: Windows CLI MCP Server
특징
🔒 엄격한 검증을 통한 안전한 명령 실행
⚙️ '모두' 옵션을 사용하여 구성 가능한 명령 및 플래그 허용 목록
🛡️ 경로 탐색 방지 및 검증
🚫 쉘 오퍼레이터 주입 보호
⏱️ 실행 시간 초과 및 길이 제한
📝 자세한 오류 보고
🔄 비동기 작업 지원
🎯 작업 디렉토리 제한 및 유효성 검사
구성
환경 변수를 사용하여 서버를 구성합니다.
변하기 쉬운 | 설명 | 기본 |
| 명령 실행을 위한 기본 디렉토리(필수) | 없음 (필수) |
| 허용된 명령의 쉼표로 구분된 목록 또는 '모두' |
|
| 허용된 플래그의 쉼표로 구분된 목록 또는 '모두' |
|
| 최대 명령 문자열 길이 |
|
| 명령 실행 시간 초과(초) |
|
| 쉘 연산자 허용(&&, |
참고: ALLOWED_COMMANDS 또는 ALLOWED_FLAGS 'all'로 설정하면 각각 모든 명령이나 플래그가 허용됩니다.
설치
Smithery 를 통해 Claude Desktop용 CLI MCP 서버를 자동으로 설치하려면:
지엑스피1
사용 가능한 도구
실행 명령
허용된 디렉토리 내에서 허용된 CLI 명령을 실행합니다.
입력 스키마:
{
"command": {
"type": "string",
"description": "Single command to execute (e.g., 'ls -l' or 'cat file.txt')"
}
}보안 참고 사항:
셸 연산자(&&, |, >, >>)는 기본적으로 지원되지 않지만
ALLOW_SHELL_OPERATORS=true로 활성화할 수 있습니다.ALLOWED_COMMANDS='all'이 아닌 이상 명령은 허용 목록에 추가되어야 합니다.
ALLOWED_FLAGS='all'이 아닌 이상 플래그는 허용 목록에 추가되어야 합니다.
모든 경로는 ALLOWED_DIR 내에 있는지 검증됩니다.
보안 규칙 표시
다음을 포함하여 현재 보안 구성 및 제한 사항을 표시합니다.
작업 디렉토리
허용된 명령
허용된 플래그
보안 제한(최대 명령 길이 및 시간 초과)
Claude Desktop과 함께 사용
~/Library/Application\ Support/Claude/claude_desktop_config.json 에 다음을 추가합니다.
개발/미공개 서버 구성
{
"mcpServers": {
"cli-mcp-server": {
"command": "uv",
"args": [
"--directory",
"<path/to/the/repo>/cli-mcp-server",
"run",
"cli-mcp-server"
],
"env": {
"ALLOWED_DIR": "</your/desired/dir>",
"ALLOWED_COMMANDS": "ls,cat,pwd,echo",
"ALLOWED_FLAGS": "-l,-a,--help,--version",
"MAX_COMMAND_LENGTH": "1024",
"COMMAND_TIMEOUT": "30",
"ALLOW_SHELL_OPERATORS": "false"
}
}
}
}게시된 서버 구성
{
"mcpServers": {
"cli-mcp-server": {
"command": "uvx",
"args": [
"cli-mcp-server"
],
"env": {
"ALLOWED_DIR": "</your/desired/dir>",
"ALLOWED_COMMANDS": "ls,cat,pwd,echo",
"ALLOWED_FLAGS": "-l,-a,--help,--version",
"MAX_COMMAND_LENGTH": "1024",
"COMMAND_TIMEOUT": "30",
"ALLOW_SHELL_OPERATORS": "false"
}
}
}
}작동하지 않거나 UI에 표시되지 않는 경우
uv clean사용하여 캐시를 지우세요.
보안 기능
✅ '모두' 옵션을 사용하여 허용 목록 시행 명령
✅ '모두' 옵션을 사용하여 플래그 검증
✅ 경로 탐색 방지 및 정규화
✅ 셸 운영자 차단(
ALLOW_SHELL_OPERATORS=true통한 옵트인 지원 포함)✅ 명령 길이 제한
✅ 실행 시간 초과
✅ 작업 디렉토리 제한 사항
✅ 심볼릭 링크 확인 및 검증
오류 처리
서버는 다음에 대한 자세한 오류 메시지를 제공합니다.
보안 위반(CommandSecurityError)
명령 시간 초과(CommandTimeoutError)
잘못된 명령 형식
경로 보안 위반
실행 실패(CommandExecutionError)
일반 명령 오류(CommandError)
개발
필수 조건
파이썬 3.10+
MCP 프로토콜 라이브러리
건축 및 출판
배포를 위해 패키지를 준비하려면:
종속성 동기화 및 잠금 파일 업데이트:
uv sync패키지 배포 빌드:
uv build이렇게 하면
dist/디렉토리에 소스와 휠 배포판이 생성됩니다.PyPI에 게시:
uv publish --token {{YOUR_PYPI_API_TOKEN}}
디버깅
MCP 서버는 stdio를 통해 실행되므로 디버깅이 어려울 수 있습니다. 최상의 디버깅 환경을 위해서는 MCP Inspector 사용을 강력히 권장합니다.
다음 명령을 사용하여 npm 통해 MCP Inspector를 시작할 수 있습니다.
npx @modelcontextprotocol/inspector uv --directory {{your source code local directory}}/cli-mcp-server run cli-mcp-serverInspector를 실행하면 브라우저에서 접근하여 디버깅을 시작할 수 있는 URL이 표시됩니다.
특허
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.
더 많은 정보나 지원이 필요하면 프로젝트 저장소에서 이슈를 열어주세요.
Available Tools
2 toolsrun_commandA
Allows command (CLI) execution in the directory: /app
Available commands: pwd, ls, cat Available flags: -l, --help, -a
Shell operators (&&, ||, |, >, >>, <, <<, ;) are not supported. Set ALLOW_SHELL_OPERATORS=true to enable.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Single command to execute (example: 'ls -l' or 'cat file.txt') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing: execution directory constraint (/app), available commands (pwd, ls, cat), available flags (-l, --help, -a), shell operator restrictions, and how to enable operators. It doesn't mention security implications, permission requirements, or output format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences with zero waste - each provides essential information: purpose, available commands/flags, restrictions, and how to lift restrictions. The structure is front-loaded with the core purpose first, followed by operational details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter command execution tool with no annotations and no output schema, the description provides substantial context: execution environment, command/flag constraints, and operator restrictions. It doesn't describe return values or error behavior, but given the tool's relative simplicity, this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the parameter 'command' well-documented in the schema. The description adds context about what constitutes valid commands (specific examples and restrictions), but doesn't provide additional parameter-specific semantics beyond what the schema already covers. Baseline 3 is appropriate when schema does heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Allows command (CLI) execution in the directory: /app' - a specific verb ('execute') with clear resource ('command/CLI') and location constraint ('/app'). It distinguishes from the only sibling tool 'show_security_rules' which appears unrelated to command execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about what commands and flags are available, and when shell operators are/aren't supported. However, it doesn't explicitly state when to use this tool versus alternatives (though the sibling tool appears unrelated) or provide exclusion guidance beyond the shell operator limitation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_security_rulesB
Show what commands and operations are allowed in this environment.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only operation ('show'), but doesn't specify if it requires authentication, returns structured data, has rate limits, or details output format. For a tool with zero annotation coverage, this is a significant gap in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any fluff. It's front-loaded and wastes no words, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of security rules and lack of annotations or output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., list, structured data), how to interpret 'allowed,' or any prerequisites. This leaves the agent with insufficient context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description doesn't add parameter details, which is appropriate here, but it could hint at implicit context like environment scope. Baseline is 4 for zero parameters, as no compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Show what commands and operations are allowed in this environment.' It specifies the verb 'show' and the resource 'commands and operations' with their context 'in this environment.' However, it doesn't explicitly differentiate from its sibling 'run_command,' which likely executes commands rather than showing allowed ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling tool 'run_command' or any context for usage, such as checking permissions before execution or troubleshooting. This leaves the agent without explicit direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.0.0- First observed
run_command - First observed
show_security_rules
TDQS
Scored across 2 tools
The two tools have completely distinct purposes: run_command executes CLI commands with specific constraints, while show_security_rules displays allowed operations and permissions. There is no overlap or ambiguity between these functions.
Both tools follow a clear verb_noun pattern (run_command, show_security_rules), which is consistent and readable. The minor deviation is that 'run' and 'show' are different verbs, but this is appropriate given their distinct actions.
With only 2 tools, the server feels thin for a CLI server that presumably handles command execution and environment management. A typical CLI server would benefit from more tools (e.g., for file operations, process management, or configuration), making this count insufficient for the apparent scope.
The tool surface is severely incomplete for a CLI server. It lacks basic operations like file creation, deletion, editing, process monitoring, or environment configuration. The run_command tool is limited to a few commands, and there are no tools for managing the CLI environment beyond showing security rules, creating significant gaps for agent workflows.
Maintenance
Related MCP Connectors
Scoped agent execution. Server-side credentials, policy, budgets and verifiable receipts.
Security gateway for AI agents: policy, approval, and audited execution, no secrets shared.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Remote MCP for Android CLI agent build gate, structured receipts, audit logs, and reviewer-ready evi
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables safe execution of system shell commands with real-time streaming output and rich metadata capture. Provides configurable command execution with timeout controls, environment management, and extensible plugin architecture for monitoring command lifecycles.4-
- AlicenseAqualityBmaintenanceEnables secure command-line interactions on Windows systems with support for PowerShell, CMD, Git Bash, and WSL shells, providing controlled file access, command execution, and configurable security restrictions.643 npm4MIT
- AlicenseNot gradedqualityCmaintenanceProvides a secure environment for executing shell commands with restricted directory access and timeout enforcement. It includes tools for running commands, managing execution history, and isolating environment variables.24 npmMIT
- FlicenseNot gradedqualityDmaintenanceA security-focused tool that implements least-privilege credential injection for Claude Code by intercepting Bash and MCP tool calls to swap in minimum-privilege tokens. It enables secure execution of CLI commands and MCP operations by matching tool arguments against declarative YAML policies to prevent unauthorized access.-