Super Shell Command Execution
STDIOMCP server for executing shell commands across multiple platforms with security controls.
MCP server for executing shell commands across multiple platforms with security controls.
An MCP (Model Context Protocol) server for executing shell commands across multiple platforms (Windows, macOS, Linux). This server provides a secure way to execute shell commands with built-in whitelisting and approval mechanisms.
To install Super Shell MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @cfdude/super-shell-mcp --client claude
# 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
Or directly:
node build/index.js
Both Roo Code and Claude Desktop use a similar configuration format for MCP servers. Here's how to set up the Super Shell MCP server:
The easiest way to use Super Shell MCP is with NPX, which automatically installs and runs the package from npm without requiring manual setup. The package is available on NPM at https://www.npmjs.com/package/super-shell-mcp.
"super-shell": { "command": "npx", "args": [ "-y", "super-shell-mcp" ], "alwaysAllow": [], "disabled": false }
"super-shell": { "command": "npx", "args": [ "-y", "super-shell-mcp" ], "alwaysAllow": false, "disabled": false }
If you prefer to use a local installation, add the following to your Roo Code MCP settings configuration file (located at ~/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 }
You can optionally specify a custom shell by adding a shell parameter:
"super-shell": { "command": "node", "args": [ "/path/to/super-shell-mcp/build/index.js", "--shell=/usr/bin/bash" ], "alwaysAllow": [], "disabled": false }
Windows 11 example
"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 }
Add the following to your Claude Desktop configuration file (located at ~/Library/Application Support/Claude/claude_desktop_config.json
):
"super-shell": { "command": "node", "args": [ "/path/to/super-shell-mcp/build/index.js" ], "alwaysAllow": false, "disabled": false }
For Windows users, the configuration file is typically located at %APPDATA%\Claude\claude_desktop_config.json
.
%APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json
%APPDATA%\Claude\claude_desktop_config.json
C:\\Windows\\System32\\cmd.exe
C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe
C:\\Program Files\\PowerShell\\7\\pwsh.exe
~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json
~/Library/Application Support/Claude/claude_desktop_config.json
/bin/zsh
/bin/bash
/bin/sh
~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json
~/.config/Claude/claude_desktop_config.json
/bin/bash
/bin/sh
/usr/bin/zsh
You can optionally specify a custom shell:
"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 }
Replace /path/to/super-shell-mcp
with the actual path where you cloned the repository.
Note:
- For Roo Code: Setting
alwaysAllow
to an empty array[]
is recommended for security reasons, as it will prompt for approval before executing any commands. If you want to allow specific commands without prompting, you can add their names to the array, for example:"alwaysAllow": ["execute_command", "get_whitelist"]
.- For Claude Desktop: Setting
alwaysAllow
tofalse
is recommended for security reasons. Claude Desktop uses a boolean value instead of an array, wherefalse
means all commands require approval andtrue
means all commands are allowed without prompting.Important: The
alwaysAllow
parameter is processed by the MCP client (Roo Code or Claude Desktop), not by the Super Shell MCP server itself. The server will work correctly with either format, as the client handles the approval process before sending requests to the server.
The server exposes the following MCP tools:
get_platform_info
Get information about the current platform and shell.
{}
execute_command
Execute a shell command on the current platform.
{ "command": "ls", "args": ["-la"] }
get_whitelist
Get the list of whitelisted commands.
{}
add_to_whitelist
Add a command to the whitelist.
{ "command": "python3", "securityLevel": "safe", "description": "Run Python 3 scripts" }
update_security_level
Update the security level of a whitelisted command.
{ "command": "python3", "securityLevel": "requires_approval" }
remove_from_whitelist
Remove a command from the whitelist.
{ "command": "python3" }
get_pending_commands
Get the list of commands pending approval.
{}
approve_command
Approve a pending command.
{ "commandId": "command-uuid-here" }
deny_command
Deny a pending command.
{ "commandId": "command-uuid-here", "reason": "This command is potentially dangerous" }
The server includes platform-specific command whitelists that are automatically selected based on the detected platform.
echo
- Print text to standard outputls
- List directory contentspwd
- Print working directoryecho
- Print text to standard outputcat
- Concatenate and print filesgrep
- Search for patterns in filesfind
- Find files in a directory hierarchycd
- Change directoryhead
- Output the first part of filestail
- Output the last part of fileswc
- Print newline, word, and byte countsdir
- List directory contentstype
- Display the contents of a text filefindstr
- Search for strings in fileswhere
- Locate programswhoami
- Display current userhostname
- Display computer namever
- Display operating system versioncopy
- Copy filesmove
- Move filesmkdir
- Create directoriesrmdir
- Remove directoriesrename
- Rename filesattrib
- Change file attributesmv
- Move (rename) filescp
- Copy files and directoriesmkdir
- Create directoriestouch
- Change file timestamps or create empty fileschmod
- Change file mode bitschown
- Change file owner and groupdel
- Delete fileserase
- Delete filesformat
- Format a diskrunas
- Execute a program as another userrm
- Remove files or directoriessudo
- Execute a command as another userexecFile
instead of exec
to prevent shell injectionYou can extend the whitelist by using the add_to_whitelist
tool. For example:
{ "command": "npm", "securityLevel": "requires_approval", "description": "Node.js package manager" }
Super Shell MCP is available as an npm package at https://www.npmjs.com/package/super-shell-mcp.
Using the NPX method (as shown in Option 1 of the Configuration section) offers several advantages:
If you prefer to use the latest development version directly from GitHub:
"super-shell": { "command": "npx", "args": [ "-y", "github:cfdude/super-shell-mcp" ], "alwaysAllow": [], // For Roo Code "disabled": false }
If you want to publish your own modified version to npm:
"bin": { "super-shell-mcp": "./build/index.js" }
npm publish
For optimal integration with MCP clients using NPX, this project follows these best practices:
Executable Entry Point: The main file includes a shebang line (#!/usr/bin/env node
) and is made executable during build.
Package Configuration:
"type": "module"
- Ensures ES Modules are used"bin"
field - Maps the command name to the entry point"files"
field - Specifies which files to include when publishing"prepare"
script - Ensures compilation happens on installTypeScript Configuration:
"module": "NodeNext"
- Proper ES Modules support"moduleResolution": "NodeNext"
- Consistent with ES ModulesAutomatic Installation and Execution:
npx -y
to automatically install and run the packagePublishing Process:
# Update version in package.json npm version patch # or minor/major as appropriate # Build and publish npm publish
These practices ensure the MCP server can be started automatically by the MCP client without requiring a separate terminal window, improving user experience and operational efficiency.
PowerShell Script Execution Policy
Set-ExecutionPolicy RemoteSigned
or use the -ExecutionPolicy Bypass
parameter when configuring the shellPath Separators
\
) in paths, which need to be escaped in JSON\\
) in JSON configuration files, e.g., C:\\Windows\\System32\\cmd.exe
Command Not Found
ls
, grep
, etc.dir
instead of ls
, findstr
instead of grep
)Shell Permissions
chmod +x /path/to/shell
Environment Variables
.zshrc
, .bashrc
, etc.)Shell Detection Issues
Command Execution Timeout
The server includes a comprehensive logging system that writes logs to a file for easier debugging and monitoring:
Log File Location
logs/super-shell-mcp.log
in the server's directoryLog Levels
Viewing Logs
# View the entire log cat logs/super-shell-mcp.log # Follow log updates in real-time tail -f logs/super-shell-mcp.log
Log Content
Whitelist Management
add_to_whitelist
tool to add commands specific to your environmentThis MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.