Shell命令执行服务

一个基于MCP协议的Linux Shell命令执行服务,提供安全防护和输出管理功能,适用于需要在受控环境中执行系统命令的场景。

  • by xyphanajay
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 xyphanajay/mcp-shell-executor

使用说明

MCP外壳执行器

一个全面的模型上下文协议(MCP)服务器,使LLM能够在具有高级安全功能和输出管理的Linux系统上执行shell命令。

特性

  • 安全命令执行:执行具有超时保护和输出限制的bash命令
  • 脚本支持:从字符串内容运行多行bash脚本
  • 安全选项:可选命令分配和工作目录验证
  • 综合产出:格式化结果,包括退出代码、stdout、stderr
  • 系统信息:系统信息和当前目录的内置资源
  • 错误处理:针对各种故障情况的强大错误处理

安装

先决条件

  • Python 3.8或更高版本
  • 基于Linux的操作系统
  • MCP Python SDK

设置

  1. 克隆存储库:
git clone https://github.com/xyphanajay/mcp-shell-executor.git
cd mcp-shell-executor
  1. 安装依赖项:
# Using uv (recommended)
uv add "mcp[cli]"

# Or using pip
pip install "mcp[cli]"
  1. 安装服务器:
# Install in Claude Desktop
mcp install server.py --name "Shell Executor"

# Or test in development mode
mcp dev server.py

用法

工具

run_bash_command

执行一个bash命令:

run_bash_command(
    command="ls -la",
    working_directory="/tmp",  # Optional
    timeout=30                 # Optional (seconds)
)

run_bash_script

执行一个多行bash脚本:

run_bash_script(
    script_content="""#!/bin/bash
    echo "System Information:"
    uname -a
    date
    uptime
    """,
    working_directory="/home/user",  # Optional
    timeout=60                       # Optional (seconds)
)

资源

  • system://info -获取详细的系统信息
  • pwd://current -获取当前工作目录

鼓励

  • bash_helper -获取全面的使用示例和文档

配置

您可以通过在中修改这些常量来自定义服务器行为 server.py:

MAX_OUTPUT_LENGTH = 10000    # Maximum characters in output
TIMEOUT_SECONDS = 30         # Default command timeout
ALLOWED_COMMANDS = None      # List of allowed commands (None = allow all)

安全配置

为了增强安全性,请设置 ALLOWED_COMMANDS 要限制可用命令,请执行以下操作:

ALLOWED_COMMANDS = [
    "ls", "pwd", "whoami", "date", "uptime",
    "df", "free", "ps", "top", "htop"
]

例子

基本命令

# List directory contents
run_bash_command("ls -la")

# Check disk usage
run_bash_command("df -h")

# View system processes
run_bash_command("ps aux")

高级脚本

# System monitoring script
run_bash_script("""
#!/bin/bash
echo "=== System Monitor ==="
echo "Date: $(date)"
echo "Uptime: $(uptime)"
echo "Disk Usage:"
df -h
echo "Memory Usage:"
free -h
echo "Load Average:"
cat /proc/loadavg
""")

工作目录管理

# Execute command in specific directory
run_bash_command("pwd && ls -la", working_directory="/var/log")

安全考虑

⚠️ 重要安全注意事项:

  • 命令的执行权限与服务器进程相同
  • 考虑在容器化环境中运行以供生产使用
  • 使用权限有限的专用用户帐户
  • 集 ALLOWED_COMMANDS 限制可用命令
  • 监控可疑活动的命令执行情况
  • 对破坏性命令要小心

输出格式

所有命令执行都返回结构化输出:

Command: ls -la
Exit Code: 0
Working Directory: /home/user

STDOUT:
total 12
drwxr-xr-x 3 user user 4096 May 24 10:30 .
drwxr-xr-x 3 user user 4096 May 24 10:29 ..
-rw-r--r-- 1 user user  220 May 24 10:29 .bash_logout

STDERR:
(none)

错误处理

服务器处理各种错误情况:

  • 命令超时:超过超时限制的命令
  • 工作目录无效:目录不存在
  • 权限错误:执行命令的权限不足
  • 未找到命令:命令无效或不存在
  • 输出截断:大输出被截断并发出警告

发展

测试

# Run in development mode
mcp dev server.py

# Test with MCP Inspector
mcp dev server.py --inspector

定制

通过以下方式扩展服务器:

  1. 为特定命令类别添加新工具
  2. 实现自定义安全验证器
  3. 添加日志记录和监控功能
  4. 创建专用脚本模板

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 添加新功能的测试
  4. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

支持

对于问题和疑问:

  • 在GitHub上打开一个问题
  • 检查MCP文件:https://modelcontextprotocol.io
  • 审查MCP规范:https://spec.modelcontextprotocol.io

免责声明:此工具执行系统命令,应负责任地使用。执行命令前务必检查命令,并为您的环境实施适当的安全措施。