Super Shell MCP Server
슈퍼쉘 MCP 서버
여러 플랫폼(Windows, macOS, Linux)에서 셸 명령을 실행하기 위한 MCP(Model Context Protocol) 서버입니다. 이 서버는 기본 제공 허용 목록 및 승인 메커니즘을 통해 셸 명령을 안전하게 실행할 수 있는 방법을 제공합니다.
특징
Windows, macOS 및 Linux에서 MCP를 통해 셸 명령 실행
자동 플랫폼 감지 및 쉘 선택
여러 셸 지원:
Windows : cmd.exe, PowerShell
macOS : zsh, bash, sh
리눅스 : bash, sh, zsh
보안 수준에 따른 명령 허용 목록:
안전 : 승인 없이 실행할 수 있는 명령
승인 필요 : 실행 전 명시적 승인이 필요한 명령
금지됨 : 명시적으로 차단된 명령
플랫폼별 명령 허용 목록
잠재적으로 위험한 명령에 대한 비차단 승인 워크플로
파일 기반 로그를 갖춘 포괄적인 로깅 시스템
포괄적인 명령 관리 도구
진단을 위한 플랫폼 정보 도구
Related MCP server: Mac Shell MCP Server
설치
Smithery를 통해 설치
Smithery를 통해 Claude Desktop용 Super Shell MCP Server를 자동으로 설치하려면:
지엑스피1
수동 설치
# Clone the repository
git clone https://github.com/cfdude/super-shell-mcp.git
cd super-shell-mcp
# Install dependencies
npm install
# Build the project
npm run build용법
서버 시작
npm start또는 직접:
node build/index.jsRoo Code 및 Claude Desktop에서 구성
Roo Code와 Claude Desktop은 모두 MCP 서버에 대해 유사한 구성 형식을 사용합니다. Super Shell MCP 서버를 설정하는 방법은 다음과 같습니다.
옵션 1: NPX 사용(권장)
Super Shell MCP를 사용하는 가장 쉬운 방법은 NPX를 사용하는 것입니다. NPX는 수동 설정 없이 npm에서 패키지를 자동으로 설치하고 실행합니다. 이 패키지는 NPM (https://www.npmjs.com/package/super-shell-mcp )에서 다운로드할 수 있습니다.
NPX를 사용한 Roo 코드 구성
"super-shell": {
"command": "npx",
"args": [
"-y",
"super-shell-mcp"
],
"alwaysAllow": [],
"disabled": false
}NPX를 사용한 Claude Desktop 구성
"super-shell": {
"command": "npx",
"args": [
"-y",
"super-shell-mcp"
],
"alwaysAllow": false,
"disabled": false
}옵션 2: 로컬 설치 사용
로컬 설치를 사용하려면 다음을 Roo Code MCP 설정 구성 파일( ~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json 에 위치)에 추가하세요.
"super-shell": {
"command": "node",
"args": [
"/path/to/super-shell-mcp/build/index.js"
],
"alwaysAllow": [],
"disabled": false
}선택적으로 셸 매개변수를 추가하여 사용자 정의 셸을 지정할 수 있습니다.
"super-shell": {
"command": "node",
"args": [
"/path/to/super-shell-mcp/build/index.js",
"--shell=/usr/bin/bash"
],
"alwaysAllow": [],
"disabled": false
}Windows 11 예제
"super-shell": {
"command": "C:\\Program Files\\nodejs\\node.exe",
"args": [
"C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npx-cli.js",
"-y",
"super-shell-mcp",
"C:\\Users\\username"
],
"alwaysAllow": [],
"disabled": false
}클로드 데스크톱 구성
~/Library/Application Support/Claude/claude_desktop_config.json 에 있는 Claude Desktop 구성 파일에 다음을 추가합니다.
"super-shell": {
"command": "node",
"args": [
"/path/to/super-shell-mcp/build/index.js"
],
"alwaysAllow": false,
"disabled": false
}Windows 사용자의 경우 구성 파일은 일반적으로 %APPDATA%\Claude\claude_desktop_config.json 에 있습니다.
플랫폼별 구성
윈도우
기본 셸: cmd.exe(또는 사용 가능한 경우 PowerShell)
구성 경로:
Roo 코드:
%APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json클로드 데스크톱:
%APPDATA%\Claude\claude_desktop_config.json
셸 경로 예:
cmd.exe:
C:\\Windows\\System32\\cmd.exePowerShell:
C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exePowerShell Core:
C:\\Program Files\\PowerShell\\7\\pwsh.exe
맥OS
기본 셸: /bin/zsh
구성 경로:
Roo 코드:
~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.jsonClaude 데스크톱:
~/Library/Application Support/Claude/claude_desktop_config.json
셸 경로 예:
zsh:
/bin/zsh배시:
/bin/bashsh:
/bin/sh
리눅스
기본 셸: /bin/bash(또는 $SHELL 환경 변수)
구성 경로:
Roo 코드:
~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.jsonClaude 데스크톱:
~/.config/Claude/claude_desktop_config.json
셸 경로 예:
배시:
/bin/bashsh:
/bin/shzsh:
/usr/bin/zsh
선택적으로 사용자 정의 셸을 지정할 수 있습니다.
"super-shell": {
"command": "node",
"args": [
"/path/to/super-shell-mcp/build/index.js",
"--shell=C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
],
"alwaysAllow": false,
"disabled": false
}/path/to/super-shell-mcp 저장소를 복제한 실제 경로로 바꾸세요.
메모 :
Roo 코드의 경우: 보안상의 이유로
alwaysAllow빈 배열[]로 설정하는 것이 좋습니다. 명령을 실행하기 전에 승인을 요청하기 때문입니다. 특정 명령을 승인 없이 허용하려면 배열에 해당 명령 이름을 추가할 수 있습니다. 예:"alwaysAllow": ["execute_command", "get_whitelist"].Claude Desktop의 경우: 보안상의 이유로
alwaysAllow를false로 설정하는 것이 좋습니다. Claude Desktop은 배열 대신 부울 값을 사용하는데,false모든 명령에 승인이 필요함을 의미하고,true모든 명령이 확인 없이 허용됨을 의미합니다.중요 :
alwaysAllow매개변수는 Super Shell MCP 서버 자체가 아닌 MCP 클라이언트(Roo Code 또는 Claude Desktop)에서 처리됩니다. 클라이언트가 서버로 요청을 보내기 전에 승인 절차를 처리하므로 서버는 두 형식 중 어떤 형식이든 정상적으로 작동합니다.
사용 가능한 도구
서버는 다음과 같은 MCP 도구를 제공합니다.
get_platform_info
현재 플랫폼과 셸에 대한 정보를 얻습니다.
{}execute_command
현재 플랫폼에서 셸 명령을 실행합니다.
{
"command": "ls",
"args": ["-la"]
}get_whitelist
허용된 명령 목록을 가져옵니다.
{}add_to_whitelist
허용 목록에 명령을 추가합니다.
{
"command": "python3",
"securityLevel": "safe",
"description": "Run Python 3 scripts"
}update_security_level
허용 목록에 있는 명령의 보안 수준을 업데이트합니다.
{
"command": "python3",
"securityLevel": "requires_approval"
}remove_from_whitelist
허용 목록에서 명령을 제거합니다.
{
"command": "python3"
}get_pending_commands
승인 대기 중인 명령 목록을 가져옵니다.
{}approve_command
보류 중인 명령을 승인합니다.
{
"commandId": "command-uuid-here"
}deny_command
보류 중인 명령을 거부합니다.
{
"commandId": "command-uuid-here",
"reason": "This command is potentially dangerous"
}기본적으로 허용된 명령
서버에는 감지된 플랫폼을 기반으로 자동으로 선택되는 플랫폼별 명령 허용 목록이 포함되어 있습니다.
일반 안전 명령(모든 플랫폼)
echo- 표준 출력에 텍스트 인쇄
Unix 계열의 안전한 명령어(macOS/Linux)
ls- 디렉토리 내용 나열pwd- 작업 디렉토리 인쇄echo- 표준 출력에 텍스트 인쇄cat- 파일 연결 및 인쇄grep- 파일에서 패턴 검색find- 디렉토리 계층 구조에서 파일 찾기cd- 디렉토리 변경head- 파일의 첫 번째 부분 출력tail- 파일의 마지막 부분 출력wc- 줄 바꿈, 단어, 바이트 수를 출력합니다.
Windows 전용 안전 명령
dir- 디렉토리 내용 나열type- 텍스트 파일의 내용을 표시합니다.findstr- 파일에서 문자열 검색where- 프로그램 찾기whoami- 현재 사용자 표시hostname- 컴퓨터 이름 표시ver- 운영 체제 버전 표시
승인이 필요한 명령
승인이 필요한 Windows 명령
copy- 파일 복사move- 파일 이동mkdir- 디렉토리 생성rmdir- 디렉토리 제거rename- 파일 이름 바꾸기attrib- 파일 속성 변경
승인이 필요한 Unix 명령어
mv- 파일 이동(이름 바꾸기)cp- 파일 및 디렉토리 복사mkdir- 디렉토리 생성touch- 파일 타임스탬프를 변경하거나 빈 파일을 만듭니다.chmod- 파일 모드 비트 변경chown- 파일 소유자 및 그룹 변경
금지된 명령
Windows 금지 명령
del- 파일 삭제erase- 파일 삭제format- 디스크 포맷runas- 다른 사용자로 프로그램 실행
유닉스 금지 명령어
rm- 파일 또는 디렉토리 제거sudo- 다른 사용자로 명령 실행
보안 고려 사항
모든 명령은 MCP 서버를 실행하는 사용자의 권한으로 실행됩니다.
승인이 필요한 명령은 명시적으로 승인될 때까지 대기열에 보관됩니다.
금지된 명령은 실행되지 않습니다.
서버는 쉘 주입을 방지하기 위해
exec대신 Node.js의execFile사용합니다.인수는 지정된 경우 허용된 패턴에 대해 검증됩니다.
화이트리스트 확장
add_to_whitelist 도구를 사용하여 허용 목록을 확장할 수 있습니다. 예:
{
"command": "npm",
"securityLevel": "requires_approval",
"description": "Node.js package manager"
}NPM 패키지 정보
Super Shell MCP는 https://www.npmjs.com/package/super-shell-mcp 에서 npm 패키지로 제공됩니다.
NPX 사용의 이점
NPX 방법을 사용하면(구성 섹션의 옵션 1에 표시된 대로) 다음과 같은 여러 가지 이점이 있습니다.
수동 설정 없음 : 저장소 복제, 종속성 설치 또는 프로젝트 빌드가 필요하지 않습니다.
자동 업데이트 : 항상 최신 게시 버전을 사용합니다.
크로스 플랫폼 호환성 : Windows, macOS 및 Linux에서 동일한 방식으로 작동합니다.
단순화된 구성 : 절대 경로가 없는 더 짧은 구성
유지 관리 감소 : 관리하거나 업데이트할 로컬 파일이 없습니다.
GitHub에서 사용
GitHub에서 최신 개발 버전을 직접 사용하려면:
"super-shell": {
"command": "npx",
"args": [
"-y",
"github:cfdude/super-shell-mcp"
],
"alwaysAllow": [], // For Roo Code
"disabled": false
}자신의 버전 게시하기
npm에 수정된 버전을 게시하려면 다음을 수행하세요.
package.json을 귀하의 세부 정보로 업데이트하세요.
"bin" 필드가 올바르게 구성되었는지 확인하세요.
"bin": { "super-shell-mcp": "./build/index.js" }npm에 게시:
npm publish
NPX 모범 사례
NPX를 사용하여 MCP 클라이언트와 최적의 통합을 위해 이 프로젝트는 다음과 같은 모범 사례를 따릅니다.
실행 파일 진입점 : 메인 파일에는 shebang 라인(
#!/usr/bin/env node)이 포함되어 있으며 빌드하는 동안 실행 가능하게 됩니다.패키지 구성 :
"type": "module"- ES 모듈이 사용되도록 보장합니다."bin"필드 - 명령 이름을 진입점에 매핑합니다."files"필드 - 게시할 때 포함할 파일을 지정합니다."prepare"스크립트 - 설치 시 컴파일이 수행되도록 보장합니다.
TypeScript 구성 :
"module": "NodeNext"- 적절한 ES 모듈 지원"moduleResolution": "NodeNext"- ES 모듈과 일치
자동 설치 및 실행 :
MCP 클라이언트 구성은
npx -y사용하여 패키지를 자동으로 설치하고 실행합니다.프로세스가 백그라운드에서 실행되므로 터미널 창이 닫히지 않습니다.
출판 과정 :
# Update version in package.json npm version patch # or minor/major as appropriate # Build and publish npm publish
이러한 방식을 사용하면 별도의 터미널 창이 없어도 MCP 클라이언트가 MCP 서버를 자동으로 시작할 수 있으므로 사용자 경험과 운영 효율성이 향상됩니다.
문제 해결
크로스 플랫폼 문제
Windows 관련 문제
PowerShell 스크립트 실행 정책
문제 : PowerShell이 "이 시스템에서는 스크립트 실행이 비활성화되어 있습니다" 오류로 인해 스크립트 실행을 차단할 수 있습니다.
해결 방법 : PowerShell을 관리자 권한으로 실행하고
Set-ExecutionPolicy RemoteSigned실행하거나 셸을 구성할 때-ExecutionPolicy Bypass매개변수를 사용합니다.
경로 구분 기호
문제 : Windows는 경로에 백슬래시(
\)를 사용하는데, JSON에서는 이를 이스케이프해야 합니다.해결 방법 : JSON 구성 파일에서 이중 백슬래시(
\\)를 사용합니다(예:C:\\Windows\\System32\\cmd.exe
명령을 찾을 수 없습니다
문제 : Windows에는
ls,grep등의 Unix 명령어가 없습니다.해결 방법 : Windows와 동일한 명령(
ls대신dir,grep대신findstr)을 사용하세요.
macOS/Linux 관련 문제
셸 권한
문제 : 명령 실행 시 권한이 거부됨
해결 방법 :
chmod +x /path/to/shell사용하여 셸에 적절한 권한이 있는지 확인하세요.
환경 변수
문제 : MCP 서버에서 환경 변수를 사용할 수 없음
해결 방법 : 셸의 프로필 파일(
.zshrc,.bashrc등)에 환경 변수를 설정합니다.
일반적인 문제 해결
셸 감지 문제
문제 : 서버가 올바른 셸을 감지하지 못함
해결 방법 : 구성에서 셸 경로를 명시적으로 지정하세요.
명령 실행 시간 초과
문제 : 명령 실행 시간이 너무 길어지고 시간 초과가 발생합니다.
해결 방법 : 명령 서비스 생성자에서 시간 초과 값을 늘리세요
로깅 시스템
서버에는 디버깅과 모니터링을 더 쉽게 하기 위해 로그를 파일에 기록하는 포괄적인 로깅 시스템이 포함되어 있습니다.
로그 파일 위치
기본값: 서버 디렉토리의
logs/super-shell-mcp.log로그 디렉토리는 Git(.gitkeep 파일)에 의해 자동으로 생성되고 추적됩니다.
로그 파일 자체는 .gitignore를 통해 Git에서 제외됩니다.
서버 작업, 명령 실행 및 승인 워크플로에 대한 자세한 정보가 포함되어 있습니다.
로그 수준
INFO : 일반 운영 정보
DEBUG : 자세한 디버깅 정보
ERROR : 오류 조건 및 예외
로그 보기
로그를 확인하려면 표준 파일 보기 명령을 사용하세요.
# View the entire log cat logs/super-shell-mcp.log # Follow log updates in real-time tail -f logs/super-shell-mcp.log
로그 내용
서버 시작 및 구성
명령 실행 요청 및 결과
승인 워크플로 이벤트(보류, 승인, 거부)
오류 조건 및 문제 해결 정보
화이트리스트 관리
문제 : 허용 목록에 사용자 지정 명령을 추가해야 함
해결 방법 :
add_to_whitelist도구를 사용하여 사용자 환경에 맞는 명령을 추가하세요.
특허
이 MCP 서버는 MIT 라이선스에 따라 라이선스가 부여됩니다. 즉, MIT 라이선스의 약관에 따라 소프트웨어를 자유롭게 사용, 수정 및 배포할 수 있습니다. 자세한 내용은 프로젝트 저장소의 LICENSE 파일을 참조하세요.
Available Tools
9 toolsadd_to_whitelistC
Add a command to the whitelist
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The command to whitelist | |
| securityLevel | Yes | Security level for the command | |
| description | No | Description of the command |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool adds to a whitelist, implying a write operation, but doesn't cover critical aspects like permissions required, whether it overwrites existing entries, error conditions, or side effects. This leaves significant gaps for an agent to understand the tool's behavior.
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, direct sentence that efficiently conveys the core action without any wasted words. It is appropriately sized and front-loaded, making it easy 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 tool's complexity (a write operation with security implications), lack of annotations, and no output schema, the description is insufficient. It doesn't explain what happens after adding (e.g., success response, error handling), how it integrates with the security system, or prerequisites, leaving the agent with incomplete context.
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 input schema has 100% description coverage, with clear documentation for all three parameters, including an enum for 'securityLevel'. The description adds no additional parameter information beyond what's in the schema, so it meets the baseline score of 3 where the schema does the 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 clearly states the action ('Add') and resource ('command to the whitelist'), making the purpose understandable. However, it doesn't distinguish this tool from sibling tools like 'update_security_level' or 'approve_command', which might have overlapping functionality in a security context.
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. For example, it doesn't clarify if this is for initial whitelisting versus updating existing entries, or how it relates to siblings like 'update_security_level' or 'remove_from_whitelist'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_commandC
Approve a pending command
| Name | Required | Description | Default |
|---|---|---|---|
| commandId | Yes | ID of the command to approve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a mutation ('Approve') but doesn't specify permissions required, whether the action is reversible, or what happens after approval (e.g., does it trigger execution?). This leaves critical behavioral traits unclear for a tool that likely changes system state.
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 wasted words. It is appropriately sized and front-loaded, making it easy 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?
For a mutation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral outcomes, error conditions, or integration with sibling tools (e.g., how approval relates to 'execute_command'), leaving gaps in understanding the tool's role in the broader context.
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 single parameter 'commandId' well-documented in the schema. The description adds no additional meaning about the parameter beyond what the schema provides, such as format examples or sourcing guidance, so it meets the baseline for high schema coverage.
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 action ('Approve') and the target resource ('a pending command'), making the purpose immediately understandable. However, it doesn't distinguish this tool from its sibling 'deny_command' beyond the opposite action, missing explicit differentiation that would warrant a score of 5.
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 like 'deny_command' or 'execute_command', nor does it mention prerequisites such as needing a pending command from 'get_pending_commands'. This lack of contextual direction leaves the agent without usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deny_commandC
Deny a pending command
| Name | Required | Description | Default |
|---|---|---|---|
| commandId | Yes | ID of the command to deny | |
| reason | No | Reason for denial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Deny' implies a mutation that changes command status, but the description doesn't disclose behavioral traits like required permissions, whether denial is reversible, what happens to the denied command, or any side effects. This is a significant gap for a mutation tool with zero annotation coverage.
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 with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place.
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 a command denial operation (a mutation with potential security implications), no annotations, no output schema, and sibling tools like 'approve_command', the description is incomplete. It lacks context on prerequisites, consequences, alternatives, or return values, leaving significant gaps for an AI agent to use it correctly.
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%, so the schema already documents both parameters (commandId and reason) adequately. The description doesn't add any meaning beyond what the schema provides, such as explaining what constitutes a valid reason or how the commandId is obtained. Baseline 3 is appropriate when schema does the 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 'Deny a pending command' clearly states the action (deny) and target resource (pending command). It's specific and unambiguous, though it doesn't explicitly differentiate from sibling tools like 'approve_command' or 'execute_command' beyond the verb choice.
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 prerequisites (e.g., needing a pending command ID), when denial is appropriate, or how it differs from 'approve_command' or other command-handling tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_commandC
Execute a shell command on the current platform
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The command to execute | |
| args | No | Command arguments |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action but lacks critical details such as security implications, permission requirements, whether it's destructive, rate limits, or output format. This is a significant gap for a tool that executes shell commands, which can have high-risk behaviors.
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 function without unnecessary words. It's front-loaded and appropriately sized for its purpose, making it easy 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 executing shell commands (potentially high-risk with no annotations) and lack of output schema, the description is incomplete. It fails to address security, permissions, or return values, leaving the agent with insufficient context for safe and 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 input schema has 100% description coverage, with clear documentation for 'command' and 'args'. The description doesn't add any parameter-specific details beyond what the schema provides, such as examples or constraints, so it meets the baseline for high schema coverage without extra value.
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 action ('Execute') and resource ('a shell command on the current platform'), making the purpose understandable. However, it doesn't distinguish this tool from its siblings like 'approve_command' or 'deny_command', which appear to be related to command management but have different functions.
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. Given siblings like 'approve_command' and 'deny_command', it's unclear if 'execute_command' requires approval, operates independently, or has specific prerequisites, leaving the agent without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pending_commandsB
Get the list of commands pending approval
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool retrieves pending commands but doesn't mention whether this requires special permissions, how results are formatted, if there are rate limits, or what happens if no commands are pending. For a security/approval-related tool, this is a significant gap.
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 communicates the core purpose without any wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential information.
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 zero-parameter tool with no output schema, the description provides the minimum viable information about what it does. However, given the security/approval context and sibling tools that suggest this is part of a command management system, more information about permissions, return format, or typical usage patterns would be helpful.
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 zero parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't mention parameters since none exist, which is correct. Baseline for zero parameters is 4.
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 action ('Get') and resource ('list of commands pending approval'), making the purpose immediately understandable. It doesn't specifically differentiate from siblings like 'execute_command' or 'approve_command', but the verb+resource combination is unambiguous in context.
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?
No guidance is provided about when to use this tool versus alternatives like 'execute_command' or 'approve_command'. The description only states what it does, not when it should be used in relation to the sibling tools that manage command approval workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_platform_infoB
Get information about the current platform and shell
| 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 states the tool retrieves information, implying a read-only operation, but doesn't specify what information is returned (e.g., OS version, shell type, environment details), whether it requires permissions, or if there are rate limits. This leaves significant gaps for a tool with zero annotation coverage.
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 unnecessary words. It is front-loaded with the core action ('Get information'), making it easy to parse, and every part of the sentence contributes to understanding the tool's function.
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 lack of annotations and output schema, the description is incomplete for a tool that retrieves system information. It doesn't explain what specific data is returned (e.g., platform details, shell version) or the format of the output, which is critical for an agent to use the tool effectively. This leaves too much ambiguity for practical 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, and the schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately doesn't mention any. A baseline of 4 is applied as per the rules for tools with no parameters.
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 with a specific verb ('Get') and resource ('information about the current platform and shell'), making it immediately understandable. However, it doesn't explicitly differentiate this tool from its siblings (like 'execute_command' or 'get_pending_commands'), which focus on command execution and management rather than platform metadata.
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 prerequisites, context (e.g., use for system diagnostics or compatibility checks), or exclusions, leaving the agent to infer usage based on the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_whitelistB
Get the list of whitelisted commands
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what the tool does without behavioral details. It doesn't disclose whether this is a read-only operation, if it requires authentication, rate limits, or what format the returned list has. This is inadequate for a tool with zero annotation coverage.
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 with no wasted words. It's perfectly front-loaded and appropriately sized for a simple retrieval tool.
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 no annotations and no output schema, the description is incomplete for a tool that likely returns structured data. It doesn't explain what 'whitelisted commands' entails, the return format, or any behavioral context, leaving significant gaps for an agent to use it correctly.
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 zero parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter semantics, but that's appropriate here, warranting a baseline score above minimum viable.
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 verb ('Get') and resource ('list of whitelisted commands'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_pending_commands' or 'get_platform_info' beyond the resource name, which prevents a perfect score.
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 like 'get_pending_commands' or 'add_to_whitelist'. There's no mention of prerequisites, context, or exclusions, leaving usage entirely implicit from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_whitelistC
Remove a command from the whitelist
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The command to remove from whitelist |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool removes a command from a whitelist, implying a mutation operation, but doesn't describe side effects (e.g., whether this affects pending commands or security levels), permissions required, or error conditions. This leaves significant gaps in understanding how the tool behaves beyond its basic function.
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, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it highly efficient and easy to parse.
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 tool's mutation nature (removing from a whitelist), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like what happens after removal, error handling, or integration with sibling tools (e.g., 'get_whitelist'), leaving the agent with insufficient context for safe and 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 input schema has 100% description coverage, with the single parameter 'command' documented as 'The command to remove from whitelist'. The description doesn't add any meaning beyond this, such as format examples or constraints, but the schema provides adequate baseline information, justifying a score of 3.
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 action ('remove') and target resource ('a command from the whitelist'), making the purpose immediately understandable. It doesn't explicitly differentiate from siblings like 'deny_command' or 'update_security_level', which might have overlapping security functions, but the verb+resource combination is specific enough for basic understanding.
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 like 'deny_command' or 'update_security_level', nor does it mention prerequisites (e.g., whether the command must already be in the whitelist). It simply states what the tool does without contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_security_levelC
Update the security level of a whitelisted command
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The command to update | |
| securityLevel | Yes | New security level for the command |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an update operation but doesn't clarify whether this requires admin permissions, if changes are reversible, what happens to existing security settings, or potential side effects. For a security-related mutation tool, this lack of transparency is a significant gap.
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 unnecessary words. It's appropriately sized and front-loaded, 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 a security-level update tool with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like permissions, side effects, or return values, nor does it help differentiate from sibling tools. The agent would lack sufficient context to use this tool effectively.
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 schema description coverage is 100%, with both parameters clearly documented in the schema. The description doesn't add any meaningful parameter semantics beyond what the schema already provides (e.g., it doesn't explain what 'whitelisted command' means or provide examples). The baseline score of 3 reflects adequate but unenhanced parameter documentation.
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 action ('Update') and the target resource ('security level of a whitelisted command'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'approve_command' or 'deny_command', which might have overlapping functionality in a security context.
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 like 'add_to_whitelist' or 'remove_from_whitelist'. It doesn't mention prerequisites (e.g., whether the command must already be whitelisted) or contextual constraints, leaving the agent with insufficient usage direction.
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. Dates show when Glama detected each change.
9 tool updates
- First observed
add_to_whitelist - First observed
approve_command - First observed
deny_command - First observed
execute_command - First observed
get_pending_commands - First observed
get_platform_info - First observed
get_whitelist - First observed
remove_from_whitelist - First observed
update_security_level
TDQS
Each tool has a clearly distinct purpose with no ambiguity. For example, add_to_whitelist and remove_from_whitelist handle whitelist modifications, while approve_command and deny_command manage pending commands, and execute_command performs command execution. The descriptions reinforce these distinct roles, making misselection unlikely.
All tool names follow a consistent verb_noun pattern using snake_case, such as add_to_whitelist, get_pending_commands, and update_security_level. This predictability aids agent understanding and navigation without any deviations or mixed conventions.
With 9 tools, the count is well-scoped for a shell security management server. Each tool serves a clear purpose in the workflow, from command execution and approval to whitelist and platform management, avoiding bloat or thin coverage.
The tool set provides complete coverage for shell command security management, including CRUD operations for the whitelist (add, get, remove, update), a full lifecycle for pending commands (get, approve, deny), and core utilities like execute_command and get_platform_info. No obvious gaps exist for the domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
The MCP server that vets MCP servers: identity, risk grade and per-tool risk before you install.
Related MCP Servers
- AlicenseBqualityFmaintenanceA Model Context Protocol server that provides secure command-line access to Windows systems, allowing MCP clients like Claude Desktop to safely execute commands in PowerShell, CMD, and Git Bash shells with configurable security controls.91,215269MIT
- AlicenseAqualityBmaintenanceAn MCP server that allows secure execution of macOS terminal commands through Claude or Roo Code with built-in security whitelisting and approval mechanisms.81524MIT
- AlicenseBqualityAmaintenanceA secure MCP server for shell operations, terminal management, and process control, enabling AI assistants to safely execute commands and manage interactive sessions.132046MIT
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol (MCP) server that enables secure execution of shell commands with a dynamic approval system, audit logging, and command revocation.41Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/cfdude/super-shell-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server