Skip to main content
Glama
cfdude

Mac Shell MCP Server

by cfdude

Mac Shell MCP 서버

ZSH 셸을 사용하여 macOS 터미널 명령을 실행하기 위한 MCP(Model Context Protocol) 서버입니다. 이 서버는 내장된 허용 목록 및 승인 메커니즘을 통해 셸 명령을 안전하게 실행할 수 있는 방법을 제공합니다.

특징

  • MCP를 통해 macOS 터미널 명령 실행

  • 보안 수준에 따른 명령 허용 목록:

    • 안전 : 승인 없이 실행할 수 있는 명령

    • 승인 필요 : 실행 전 명시적 승인이 필요한 명령

    • 금지됨 : 명시적으로 차단된 명령

  • 일반적인 안전 명령이 포함된 사전 구성된 허용 목록

  • 잠재적으로 위험한 명령에 대한 승인 워크플로

  • 포괄적인 명령 관리 도구

Related MCP server: Terminal MCP Server

설치

지엑스피1

용법

서버 시작

npm start

또는 직접:

node build/index.js

Roo Code 및 Claude Desktop에서 구성

Roo Code와 Claude Desktop은 모두 MCP 서버에 대해 유사한 구성 형식을 사용합니다. Mac Shell MCP 서버를 설정하는 방법은 다음과 같습니다.

로컬 설치 사용

Roo 코드 구성

~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json 에 있는 Roo Code MCP 설정 구성 파일에 다음을 추가합니다.

"mac-shell": {
  "command": "node",
  "args": [
    "/path/to/mac-shell-mcp/build/index.js"
  ],
  "alwaysAllow": [],
  "disabled": false
}
클로드 데스크톱 구성

~/Library/Application Support/Claude/claude_desktop_config.json 에 있는 Claude Desktop 구성 파일에 다음을 추가합니다.

"mac-shell": {
  "command": "node",
  "args": [
    "/path/to/mac-shell-mcp/build/index.js"
  ],
  "alwaysAllow": false,
  "disabled": false
}

/path/to/mac-shell-mcp 저장소를 복제한 실제 경로로 바꾸세요.

NPX 사용(권장)

터미널 창을 열어둘 필요 없이 더욱 편리하게 설정하려면 패키지를 npm에 게시하고 npx와 함께 사용할 수 있습니다.

npm에 게시하기
  1. package.json을 귀하의 세부 정보로 업데이트하세요.

  2. npm에 게시:

    npm publish
Roo 코드 구성
"mac-shell": {
  "command": "npx",
  "args": [
    "-y",
    "mac-shell-mcp"
  ],
  "alwaysAllow": [],
  "disabled": false
}
클로드 데스크톱 구성
"mac-shell": {
  "command": "npx",
  "args": [
    "-y",
    "mac-shell-mcp"
  ],
  "alwaysAllow": false,
  "disabled": false
}

이 접근 방식을 사용하면 별도의 터미널 창이나 수동 개입 없이 MCP 클라이언트가 MCP 서버를 자동으로 시작할 수 있습니다.

메모 :

  • Roo 코드의 경우: 보안상의 이유로 alwaysAllow 빈 배열 [] 로 설정하는 것이 좋습니다. 명령을 실행하기 전에 승인을 요청하기 때문입니다. 특정 명령을 승인 없이 허용하려면 배열에 해당 명령 이름을 추가할 수 있습니다. 예: "alwaysAllow": ["execute_command", "get_whitelist"] .

  • Claude Desktop의 경우: 보안상의 이유로 alwaysAllow 를 false 로 설정하는 것이 좋습니다. Claude Desktop은 배열 대신 부울 값을 사용하는데, false 모든 명령에 승인이 필요함을 의미하고, true 모든 명령이 확인 없이 허용됨을 의미합니다.

중요 : alwaysAllow 매개변수는 Mac Shell MCP 서버가 아닌 MCP 클라이언트(Roo Code 또는 Claude Desktop)에서 처리됩니다. 클라이언트가 서버로 요청을 보내기 전에 승인 절차를 처리하므로 서버는 두 형식 중 어떤 형식이든 정상적으로 작동합니다.

사용 가능한 도구

서버는 다음과 같은 MCP 도구를 제공합니다.

execute_command

macOS에서 셸 명령을 실행합니다.

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

기본적으로 허용된 명령

안전 명령(승인 필요 없음)

  • ls - 디렉토리 내용 나열

  • pwd - 작업 디렉토리 인쇄

  • echo - 표준 출력에 텍스트 인쇄

  • cat - 파일 연결 및 인쇄

  • grep - 파일에서 패턴 검색

  • find - 디렉토리 계층 구조에서 파일 찾기

  • cd - 디렉토리 변경

  • head - 파일의 첫 번째 부분 출력

  • tail - 파일의 마지막 부분 출력

  • wc - 줄 바꿈, 단어, 바이트 수를 출력합니다.

승인이 필요한 명령

  • mv - 파일 이동(이름 바꾸기)

  • cp - 파일 및 디렉토리 복사

  • mkdir - 디렉토리 생성

  • touch - 파일 타임스탬프를 변경하거나 빈 파일을 만듭니다.

  • chmod - 파일 모드 비트 변경

  • chown - 파일 소유자 및 그룹 변경

금지된 명령

  • rm - 파일 또는 디렉토리 제거

  • sudo - 다른 사용자로 명령 실행

보안 고려 사항

  • 모든 명령은 MCP 서버를 실행하는 사용자의 권한으로 실행됩니다.

  • 승인이 필요한 명령은 명시적으로 승인될 때까지 대기열에 보관됩니다.

  • 금지된 명령은 실행되지 않습니다.

  • 서버는 쉘 주입을 방지하기 위해 exec 대신 Node.js의 execFile 사용합니다.

  • 인수는 지정된 경우 허용된 패턴에 대해 검증됩니다.

화이트리스트 확장

add_to_whitelist 도구를 사용하여 허용 목록을 확장할 수 있습니다. 예:

{
  "command": "npm",
  "securityLevel": "requires_approval",
  "description": "Node.js package manager"
}

npm 패키지로 사용

Brave Search와 같은 다른 MCP 서버와 마찬가지로 npx 와 함께 Mac Shell MCP 서버를 사용하려면 npm에 게시하거나 GitHub에서 직접 사용할 수 있습니다.

npx로 구성

MCP 설정 구성에 다음을 추가하세요.

루 코드

"mac-shell": {
  "command": "npx",
  "args": [
    "-y",
    "github:cfdude/mac-shell-mcp"
  ],
  "alwaysAllow": [],
  "disabled": false
}

클로드 데스크탑

"mac-shell": {
  "command": "npx",
  "args": [
    "-y",
    "github:cfdude/mac-shell-mcp"
  ],
  "alwaysAllow": false,
  "disabled": false
}

이렇게 하면 수동 복제 및 빌드 프로세스가 필요 없이 서버가 자동으로 다운로드되어 실행됩니다.

npm에 게시하기

npm에 자신의 버전을 게시하려면 다음을 수행합니다.

  1. package.json을 귀하의 세부 정보로 업데이트하세요

  2. package.json에 "bin" 필드를 추가합니다.

    "bin": {
      "mac-shell-mcp": "./build/index.js"
    }
  3. npm에 게시:

    npm publish

그런 다음 MCP 구성에서 사용할 수 있습니다.

루 코드

"mac-shell": {
  "command": "npx",
  "args": [
    "-y",
    "mac-shell-mcp"
  ],
  "alwaysAllow": [],
  "disabled": false
}

클로드 데스크탑

"mac-shell": {
  "command": "npx",
  "args": [
    "-y",
    "mac-shell-mcp"
  ],
  "alwaysAllow": false,
  "disabled": false
}

특허

이 MCP 서버는 MIT 라이선스에 따라 라이선스가 부여됩니다. 즉, MIT 라이선스의 약관에 따라 소프트웨어를 자유롭게 사용, 수정 및 배포할 수 있습니다. 자세한 내용은 프로젝트 저장소의 LICENSE 파일을 참조하세요.

Available Tools

8 tools
add_to_whitelistC

Add a command to the whitelist

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesThe command to whitelist
securityLevelYesSecurity level for the command
descriptionNoDescription of the command

TDQS

C2.9/5.0
Behavior2/5

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 ('Add') but doesn't explain what happens upon invocation—e.g., whether it's a mutation, requires permissions, has side effects like notifications, or returns confirmation. This leaves significant gaps for a tool that modifies a security list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste—it directly states the tool's purpose without unnecessary words. It's 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.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of modifying a security whitelist, no annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like mutation effects, error conditions, or return values, which are crucial for safe tool invocation in this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 all three parameters (command, securityLevel, description) with details like enum values for securityLevel. The description adds no additional meaning beyond the schema, resulting in the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'update_security_level' or 'remove_from_whitelist', 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.

Usage Guidelines2/5

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 'update_security_level' or 'approve_command'. The description lacks context about prerequisites, such as whether the command must be pending or already exist, leaving usage unclear.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
commandIdYesID of the command to approve

TDQS

C2.9/5.0
Behavior2/5

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. 'Approve' implies a mutation that changes state, but the description doesn't clarify what happens after approval (e.g., does it trigger execution, log the action, or require additional steps?), potential side effects, permission requirements, or error conditions. This leaves significant gaps for a tool that likely involves security-sensitive operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no wasted words. It front-loads the core action and resource efficiently, making it easy to parse and understand at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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, and the tool's likely role in a security/command workflow (inferred from sibling tools), the description is insufficient. It doesn't explain the outcome of approval, how it interacts with other tools (e.g., 'execute_command'), or any system constraints, leaving the agent with incomplete 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.

Parameters3/5

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' clearly documented in the schema. The description adds no additional parameter semantics beyond implying that 'commandId' refers to a pending command, which is already inferred from the tool's purpose. This 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.

Purpose4/5

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'), which is specific and unambiguous. However, it doesn't differentiate this tool from its sibling 'deny_command' beyond the opposite action, nor does it explain what 'approve' entails in this context versus simply executing or modifying the command.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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'. It doesn't specify prerequisites (e.g., that the command must be in a pending state) or contextual cues for selection, leaving the agent to infer usage 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.

deny_commandC

Deny a pending command

ParametersJSON Schema
NameRequiredDescriptionDefault
commandIdYesID of the command to deny
reasonNoReason for denial

TDQS

C2.9/5.0
Behavior2/5

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 action ('deny') but doesn't explain what 'deny' entails—whether it's reversible, if it requires specific permissions, what the outcome is, or if there are side effects. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and target, making it easy to parse quickly. Every word earns its place by conveying essential information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain the tool's behavior, outcomes, or error conditions. The agent lacks context on what 'deny' means operationally, making it difficult to use correctly without additional information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 both parameters ('commandId' and 'reason'). The description doesn't add any meaning beyond what the schema provides, such as format examples or constraints. Since schema coverage is high, the baseline score of 3 is appropriate, as the schema handles parameter semantics adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('deny') and the target ('a pending command'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'approve_command' or explain what 'deny' means in this context beyond the basic action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 'approve_command' or 'execute_command'. It doesn't mention prerequisites (e.g., needing a pending command ID) or context about what happens after denial. The agent must infer usage 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.

execute_commandC

Execute a shell command on macOS

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesThe command to execute
argsNoCommand arguments

TDQS

C2.9/5.0
Behavior2/5

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 what the tool does but doesn't describe critical behavioral aspects: whether execution is immediate or requires approval, what permissions are needed, whether commands run with elevated privileges, what happens on failure, or what output format to expect. For a potentially dangerous shell execution tool, this is inadequate transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core functionality without unnecessary words. It's appropriately sized for a tool with two parameters and gets straight to the point. Every word earns its place, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of shell command execution (potentially destructive, security-sensitive) and the absence of both annotations and output schema, the description is insufficiently complete. It doesn't address safety considerations, error handling, output format, or how this interacts with the security-focused sibling tools. For a tool that could modify system state, more contextual information is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters ('command' and 'args') clearly documented in the schema. The description doesn't add any parameter-specific information beyond what the schema already provides. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even without additional param details in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Execute') and target ('a shell command on macOS'), making the purpose immediately understandable. It distinguishes from siblings by focusing on command execution rather than security management or querying. However, it doesn't specify whether this executes immediately or requires approval, which could be more precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 'approve_command' or 'deny_command'. The description doesn't mention prerequisites, security implications, or whether this bypasses approval workflows. With siblings focused on security controls, this omission leaves significant ambiguity about appropriate usage contexts.

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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 this is a read operation ('Get'), implying it's non-destructive, but doesn't cover other aspects like permissions needed, rate limits, response format, or whether it returns all pending commands or a filtered subset. The description is minimal and lacks 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It's front-loaded with the core purpose and efficiently communicates the tool's function without unnecessary elaboration, 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.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no annotations, no output schema, and a simple input schema with no parameters, the description is minimal. While it states the purpose, it lacks context about what 'pending approval' means, how commands are structured, or what the return value looks like. For a tool in a security/command approval context, more completeness would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here. A baseline score of 4 is given since the schema fully covers the absence of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 explicitly distinguish from sibling tools like 'approve_command' or 'deny_command', but the verb 'Get' implies a read operation rather than an action on the commands themselves.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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_whitelist' or 'execute_command'. It doesn't mention prerequisites, context for pending commands, or any exclusions, leaving the agent to infer usage 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.

get_whitelistB

Get the list of whitelisted commands

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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 'Get the list' which implies a read-only operation, but doesn't specify whether this requires authentication, returns paginated results, includes metadata, or has rate limits. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It's front-loaded with the core purpose ('Get the list of whitelisted commands') and doesn't include unnecessary elaboration. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and no output schema, the description is minimally adequate but lacks context about the return format (e.g., structure of the whitelist, data types) and behavioral traits. It meets the basic requirement for a simple read operation but doesn't provide enough information for confident use without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 absence of inputs. The description doesn't need to add parameter details, and it appropriately doesn't mention any. Baseline 4 is correct for zero-parameter tools where the schema already covers everything.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('list of whitelisted commands'), making the purpose immediately understandable. It doesn't explicitly differentiate from siblings like 'get_pending_commands' or 'add_to_whitelist', but the verb+resource combination is specific enough to infer basic distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, timing, or contrast with sibling tools like 'get_pending_commands' (which might retrieve unapproved commands) or 'add_to_whitelist' (which modifies the list). Usage is implied by the name but not explicitly stated.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesThe command to remove from whitelist

TDQS

C2.9/5.0
Behavior2/5

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 performs a removal action, implying mutation, but doesn't describe permissions needed, whether the change is reversible, error conditions, or what happens if the command isn't in the whitelist. This leaves significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core function without any wasted words. It's appropriately sized for a simple tool with one parameter and gets straight to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 doesn't explain what happens after removal (e.g., confirmation message, error responses), doesn't mention security implications, and provides no context about the whitelist system it operates within.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 the single 'command' parameter adequately. The description doesn't add any additional meaning about parameter format, constraints, or examples beyond what the schema provides, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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. However, it doesn't differentiate from sibling tools like 'deny_command' or 'update_security_level' which might have overlapping security functions, preventing 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'deny_command' or 'update_security_level'. The description only states what it does, not when it's appropriate or what prerequisites might exist (e.g., whether the command must already be whitelisted).

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

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesThe command to update
securityLevelYesNew security level for the command

TDQS

C2.9/5.0
Behavior2/5

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. While 'Update' implies a mutation, it doesn't specify required permissions, whether changes are reversible, error conditions (e.g., if command isn't whitelisted), or side effects. This leaves significant gaps for a security-related mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with zero wasted words. It front-loads the core action and target efficiently, making it easy to parse while conveying essential purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 critical context: what 'security level' means operationally, how changes affect command execution, error handling, or response format. Given the security-sensitive nature and sibling tools, more completeness is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no additional parameter context beyond implying 'command' refers to a whitelisted one. This meets the baseline for high schema coverage but doesn't enhance understanding of parameter usage or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 ('security level of a whitelisted command'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from siblings like 'add_to_whitelist' or 'remove_from_whitelist', which also modify command permissions but in different ways.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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., the command must already be whitelisted), contrast with 'approve_command'/'deny_command' for pending requests, or explain when changing security levels is appropriate versus adding/removing from the whitelist.

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.

  1. 8 tool updates
    • First observedadd_to_whitelist
    • First observedapprove_command
    • First observeddeny_command
    • First observedexecute_command
    • First observedget_pending_commands
    • First observedget_whitelist
    • First observedremove_from_whitelist
    • First observedupdate_security_level

TDQS

A3.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity. The tools cover separate aspects of command management: whitelist operations (add/remove/get), approval workflow (approve/deny/get_pending), execution (execute_command), and security configuration (update_security_level). There is no overlap in functionality.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case throughout. The naming is predictable and readable, using clear action verbs like 'add_to', 'remove_from', 'get', 'execute', 'approve', 'deny', and 'update' paired with appropriate nouns.

Tool Count5/5

With 8 tools, this server is well-scoped for its macOS shell security management purpose. Each tool earns its place by covering essential operations for command whitelisting, approval workflows, execution, and security configuration without being excessive or insufficient.

Completeness5/5

The tool set provides complete coverage for the macOS shell security domain. It includes full CRUD operations for the whitelist (add, remove, get), comprehensive approval workflow management (approve, deny, get_pending), command execution, and security level updates, leaving no obvious gaps for agents to work with.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    A 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.
    9
    1,208 npm
    267
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    An MCP server that enables secure execution of shell commands across Windows, macOS, and Linux with built-in whitelisting and approval mechanisms for enhanced security.
    9
    71 npm
    21
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An enhanced MCP server that grants AI assistants the ability to execute terminal commands on a user's system with improved security controls, designed for use in controlled environments.
    2
    MIT