mcp-shell-server

by tumf

local-only server

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

Integrations

  • Code coverage reporting integration shown by the codecov badge in the README header, displaying test coverage metrics for the project.

MCP Shell 服务器

一个实现了模型上下文协议 (MCP) 的安全 Shell 命令执行服务器。此服务器允许远程执行白名单 Shell 命令,并支持标准输入。

特征

  • 安全命令执行:只能执行白名单命令
  • 标准输入支持:通过 stdin 将输入传递给命令
  • 综合输出:返回 stdout、stderr、退出状态和执行时间
  • Shell 运算符安全:验证 Shell 运算符(;、&&、||、|)后的命令
  • 超时控制:设置命令的最大执行时间

Claude.app 中的 MCP 客户端设置

已发布版本

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

本地版本

配置

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

安装

pip install mcp-shell-server

用法

启动服务器

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

ALLOW_COMMANDS (或其别名ALLOWED_COMMANDS )环境变量指定允许执行哪些命令。命令之间可以用逗号分隔,逗号两侧可以加空格。

ALLOW_COMMANDS 或 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

请求格式

# 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 }

响应格式

成功响应:

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

错误响应:

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

安全

该服务器实施了多项安全措施:

  1. 命令白名单:只有明确允许的命令才能执行
  2. Shell 运算符验证:shell 运算符(;、&&、||、|)后的命令也会根据白名单进行验证
  3. 无 Shell 注入:命令直接执行,无需 Shell 解释

发展

设置开发环境

  1. 克隆存储库
git clone https://github.com/yourusername/mcp-shell-server.git cd mcp-shell-server
  1. 安装依赖项,包括测试要求
pip install -e ".[test]"

运行测试

pytest

API 参考

请求参数

场地类型必需的描述
命令细绳[]是的命令及其参数作为数组元素
标准输入细绳传递给命令的输入
目录细绳命令执行的工作目录
暂停整数最大执行时间(秒)

响应字段

场地类型描述
标准输出细绳命令的标准输出
标准错误细绳命令的标准错误输出
地位整数退出状态代码
执行时间漂浮执行所需的时间(以秒为单位)
错误细绳错误消息(仅在失败时出现)

要求

  • Python 3.11 或更高版本
  • mcp>=1.1.0

执照

MIT 许可证 - 详情请参阅许可证文件

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

一个实现了模型上下文协议 (MCP) 的安全 Shell 命令执行服务器。此服务器允许远程执行白名单 Shell 命令,并支持标准输入。

  1. Features
    1. MCP client setting in your Claude.app
      1. Published version
      2. Local version
    2. Usage
      1. Starting the Server
      2. Request Format
      3. Response Format
    3. Security
      1. Development
        1. Setting up Development Environment
        2. Running Tests
      2. API Reference
        1. Request Arguments
        2. Response Fields
      3. Requirements
        1. License
          ID: rt2d4pbn22