Mac Shell MCP Server

by cfdude
Verified

local-only server

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

Integrations

  • Allows execution of macOS terminal commands with built-in security mechanisms including command whitelisting and approval workflows

  • Enables execution of commands through the ZSH shell with security controls for running terminal commands on macOS

Servidor MCP de Mac Shell

Un servidor MCP (Protocolo de Contexto de Modelo) para ejecutar comandos de terminal de macOS con shell ZSH. Este servidor proporciona una forma segura de ejecutar comandos de shell con mecanismos integrados de lista blanca y aprobación.

Características

  • Ejecutar comandos de terminal de macOS a través de MCP
  • Lista blanca de comandos con niveles de seguridad:
    • Seguro : Comandos que se pueden ejecutar sin aprobación
    • Requiere aprobación : comandos que necesitan aprobación explícita antes de su ejecución
    • Prohibido : Comandos que están bloqueados explícitamente
  • Lista blanca preconfigurada con comandos seguros comunes
  • Flujo de trabajo de aprobación para comandos potencialmente peligrosos
  • Herramientas integrales de gestión de comandos

Instalación

# Clone the repository git clone https://github.com/cfdude/mac-shell-mcp.git cd mac-shell-mcp # Install dependencies npm install # Build the project npm run build

Uso

Iniciando el servidor

npm start

O directamente:

node build/index.js

Configuración en Roo Code y Claude Desktop

Tanto Roo Code como Claude Desktop utilizan un formato de configuración similar para los servidores MCP. A continuación, se explica cómo configurar el servidor MCP de Mac Shell:

Uso de la instalación local

Configuración del código Roo

Agregue lo siguiente a su archivo de configuración de Roo Code MCP (ubicado en ~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json ):

"mac-shell": { "command": "node", "args": [ "/path/to/mac-shell-mcp/build/index.js" ], "alwaysAllow": [], "disabled": false }
Configuración del escritorio de Claude

Agregue lo siguiente a su archivo de configuración de Claude Desktop (ubicado en ~/Library/Application Support/Claude/claude_desktop_config.json ):

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

Reemplace /path/to/mac-shell-mcp con la ruta real donde clonó el repositorio.

Uso de NPX (recomendado)

Para una configuración más conveniente que no requiera mantener abierta una ventana de terminal, puede publicar el paquete en npm y usarlo con npx:

Publicación en npm
  1. Actualice el package.json con sus datos
  2. Publicar en npm:
    npm publish
Configuración del código Roo
"mac-shell": { "command": "npx", "args": [ "-y", "mac-shell-mcp" ], "alwaysAllow": [], "disabled": false }
Configuración del escritorio de Claude
"mac-shell": { "command": "npx", "args": [ "-y", "mac-shell-mcp" ], "alwaysAllow": false, "disabled": false }

Este enfoque permite que el servidor MCP sea iniciado automáticamente por el cliente MCP sin necesidad de una ventana de terminal independiente o intervención manual.

Nota :

  • Para Roo Code: Se recomienda configurar alwaysAllow con una matriz vacía [] por razones de seguridad, ya que solicitará aprobación antes de ejecutar cualquier comando. Si desea permitir comandos específicos sin solicitar aprobación, puede agregar sus nombres a la matriz, por ejemplo: "alwaysAllow": ["execute_command", "get_whitelist"] .
  • Para Claude Desktop: Se recomienda configurar alwaysAllow como false por razones de seguridad. Claude Desktop utiliza un valor booleano en lugar de una matriz, donde false significa que todos los comandos requieren aprobación y true significa que todos los comandos se permiten sin solicitud.

Importante : El parámetro alwaysAllow lo procesa el cliente MCP (Roo Code o Claude Desktop), no el propio servidor MCP de Mac Shell. El servidor funcionará correctamente con ambos formatos, ya que el cliente gestiona el proceso de aprobación antes de enviar las solicitudes al servidor.

Herramientas disponibles

El servidor expone las siguientes herramientas MCP:

execute_command

Ejecutar un comando de shell en macOS.

{ "command": "ls", "args": ["-la"] }

get_whitelist

Obtenga la lista de comandos incluidos en la lista blanca.

{}

add_to_whitelist

Añade un comando a la lista blanca.

{ "command": "python3", "securityLevel": "safe", "description": "Run Python 3 scripts" }

update_security_level

Actualizar el nivel de seguridad de un comando incluido en la lista blanca.

{ "command": "python3", "securityLevel": "requires_approval" }

remove_from_whitelist

Eliminar un comando de la lista blanca.

{ "command": "python3" }

get_pending_commands

Obtenga la lista de comandos pendientes de aprobación.

{}

approve_command

Aprobar un comando pendiente.

{ "commandId": "command-uuid-here" }

deny_command

Denegar un comando pendiente.

{ "commandId": "command-uuid-here", "reason": "This command is potentially dangerous" }

Comandos predeterminados incluidos en la lista blanca

Comandos seguros (no se requiere aprobación)

  • ls - Listar el contenido del directorio
  • pwd - Imprimir directorio de trabajo
  • echo - Imprimir texto en la salida estándar
  • cat - Concatenar e imprimir archivos
  • grep - Buscar patrones en archivos
  • find - Buscar archivos en una jerarquía de directorios
  • cd - Cambiar directorio
  • head - Salida de la primera parte de los archivos
  • tail - Muestra la última parte de los archivos
  • wc - Imprimir recuentos de nuevas líneas, palabras y bytes

Órdenes que requieren aprobación

  • mv - Mover (renombrar) archivos
  • cp - Copiar archivos y directorios
  • mkdir - Crear directorios
  • touch - Cambiar las marcas de tiempo de los archivos o crear archivos vacíos
  • chmod - Cambiar los bits del modo de archivo
  • chown - Cambiar el propietario y el grupo del archivo

Órdenes prohibidas

  • rm - Eliminar archivos o directorios
  • sudo - Ejecutar un comando como otro usuario

Consideraciones de seguridad

  • Todos los comandos se ejecutan con los permisos del usuario que ejecuta el servidor MCP
  • Los comandos que requieren aprobación se mantienen en una cola hasta que se aprueban explícitamente.
  • Los comandos prohibidos nunca se ejecutan
  • El servidor utiliza execFile de Node.js en lugar de exec para evitar la inyección de shell
  • Los argumentos se validan contra patrones permitidos cuando se especifican

Ampliación de la lista blanca

Puedes ampliar la lista blanca con la herramienta add_to_whitelist . Por ejemplo:

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

Usar como un paquete npm

Para utilizar el servidor MCP de Mac Shell con npx de forma similar a otros servidores MCP como Brave Search, puedes publicarlo en npm o usarlo directamente desde GitHub.

Configuración con npx

Agregue lo siguiente a la configuración de su MCP:

Código Roo

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

Escritorio de Claude

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

Esto descargará y ejecutará automáticamente el servidor sin necesidad de un proceso manual de clonación y compilación.

Publicación en npm

Si desea publicar su propia versión en npm:

  1. Actualice el package.json con sus datos
  2. Agregue un campo "bin" a package.json:
    "bin": { "mac-shell-mcp": "./build/index.js" }
  3. Publicar en npm:
    npm publish

Luego puedes usarlo en tu configuración de MCP:

Código Roo

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

Escritorio de Claude

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

Licencia

Este servidor MCP cuenta con la licencia MIT. Esto significa que puede usar, modificar y distribuir el software libremente, sujeto a los términos y condiciones de la licencia MIT. Para más detalles, consulte el archivo de LICENCIA en el repositorio del proyecto.

-
security - not tested
F
license - not found
-
quality - not tested

Un servidor MCP que permite la ejecución segura de comandos de terminal macOS a través de Claude o Roo Code con mecanismos de aprobación y listas blancas de seguridad integrados.

  1. Features
    1. Installation
      1. Usage
        1. Starting the Server
        2. Configuring in Roo Code and Claude Desktop
        3. Available Tools
      2. Default Whitelisted Commands
        1. Safe Commands (No Approval Required)
        2. Commands Requiring Approval
        3. Forbidden Commands
      3. Security Considerations
        1. Extending the Whitelist
          1. Using as an npm Package
            1. Configuration with npx
            2. Publishing to npm
          2. License
            ID: ykvehzxj93