Skip to main content
Glama
MCP Shell Server

MCP Shell Server

by fastmcp-me

Add to Cursor Add to VS Code Add to Claude Add to ChatGPT Add to Codex Add to Gemini

MCP Shell Server

codecov

A secure shell command execution server implementing the Model Context Protocol (MCP). This server allows remote execution of whitelisted shell commands with support for stdin input.

Features

  • Secure Command Execution: Only whitelisted commands can be executed

  • Standard Input Support: Pass input to commands via stdin

  • Comprehensive Output: Returns stdout, stderr, exit status, and execution time

  • Shell Operator Safety: Validates commands after shell operators (; , &&, ||, |)

  • Timeout Control: Set maximum execution time for commands

Related MCP server: Shell-MCP

MCP client setting in your Claude.app

Published version

code ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "shell": {
      "command": "uvx",
      "args": [
        "mcp-shell-server"
      ],
      "env": {
        "ALLOW_COMMANDS": "ls,cat,pwd,grep,wc,touch,find"
      }
    },
  }
}

Local version

Configuration

code ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "shell": {
      "command": "uv",
      "args": [
        "--directory",
        ".",
        "run",
        "mcp-shell-server"
      ],
      "env": {
        "ALLOW_COMMANDS": "ls,cat,pwd,grep,wc,touch,find"
      }
    },
  }
}

Installation

Installing via Smithery

To install Shell Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install mcp-shell-server --client claude

Manual Installation

Installing via Smithery

To install Shell Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install mcp-shell-server --client claude

Manual Installation

pip install mcp-shell-server

Installing via Smithery

To install Shell Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install mcp-shell-server --client claude

Usage

Starting the Server

ALLOW_COMMANDS="ls,cat,echo" uvx mcp-shell-server
# Or using the alias
ALLOWED_COMMANDS="ls,cat,echo" uvx mcp-shell-server

The ALLOW_COMMANDS (or its alias ALLOWED_COMMANDS ) environment variable specifies which commands are allowed to be executed. Commands can be separated by commas with optional spaces around them.

Valid formats for ALLOW_COMMANDS or ALLOWED_COMMANDS:

ALLOW_COMMANDS="ls,cat,echo"          # Basic format
ALLOWED_COMMANDS="ls ,echo, cat"      # With spaces (using alias)
ALLOW_COMMANDS="ls,  cat  , echo"     # Multiple spaces

Request Format

# Basic command execution
{
    "command": ["ls", "-l", "/tmp"]
}

# Command with stdin input
{
    "command": ["cat"],
    "stdin": "Hello, World!"
}

# Command with timeout
{
    "command": ["long-running-process"],
    "timeout": 30  # Maximum execution time in seconds
}

# Command with working directory and timeout
{
    "command": ["grep", "-r", "pattern"],
    "directory": "/path/to/search",
    "timeout": 60
}

Response Format

Successful response:

{
    "stdout": "command output",
    "stderr": "",
    "status": 0,
    "execution_time": 0.123
}

Error response:

{
    "error": "Command not allowed: rm",
    "status": 1,
    "stdout": "",
    "stderr": "Command not allowed: rm",
    "execution_time": 0
}

Security

The server implements several security measures:

  1. Command Whitelisting: Only explicitly allowed commands can be executed

  2. Shell Operator Validation: Commands after shell operators (;, &&, ||, |) are also validated against the whitelist

  3. No Shell Injection: Commands are executed directly without shell interpretation

Development

Setting up Development Environment

  1. Clone the repository

git clone https://github.com/yourusername/mcp-shell-server.git
cd mcp-shell-server
  1. Install dependencies including test requirements

pip install -e ".[test]"

Running Tests

pytest

API Reference

Request Arguments

Field

Type

Required

Description

command

string[]

Yes

Command and its arguments as array elements

stdin

string

No

Input to be passed to the command

directory

string

No

Working directory for command execution

timeout

integer

No

Maximum execution time in seconds

Response Fields

Field

Type

Description

stdout

string

Standard output from the command

stderr

string

Standard error output from the command

status

integer

Exit status code

execution_time

float

Time taken to execute (in seconds)

error

string

Error message (only present if failed)

Requirements

  • Python 3.11 or higher

  • mcp>=1.1.0

License

MIT License - See LICENSE file for details

Available Tools

1 tool
shell_executeC

Execute a shell command Allowed commands: echo, cat, ls Allowed patterns:

Inputs: command (required), directory (required), stdin, timeout.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3/5.0

    Scored across 1 tool

    Disambiguation5/5

    There is only one tool, so there is no possibility of confusion. The tool's purpose is clearly defined as executing shell commands with specific allowed commands.

    Naming Consistency5/5

    With a single tool, naming consistency is trivially maintained. The name 'shell_execute' follows a predictable pattern and clearly conveys its function.

    Tool Count3/5

    The single tool is borderline for a server named 'MCP Shell Server'. While the restricted command set makes it coherent, a full shell server would typically require more tools to handle different operations.

    Completeness2/5

    The tool only supports echo, cat, and ls, which is a very limited subset of shell capabilities. Missing common operations like file manipulation, process control, or piping leaves significant gaps for a tool claiming to be a shell server.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      A
      maintenance
      A secure shell command execution server implementing the Model Context Protocol (MCP). This server allows remote execution of whitelisted shell commands with support for stdin input.
      1
      201
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      A secure MCP server for executing whitelisted shell commands with resource and timeout controls, designed for integration with Claude and other MCP-compatible LLMs.
      20
      389 npm
      7
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables secure execution of shell commands via MCP with multiple security layers including command whitelisting and directory restrictions.
      586 npm
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Provides a secure MCP interface to execute commands inside Docker Compose service containers, with real-time output capture and configurable timeouts.
      1
      306 npm
      MIT