MCP外壳执行器
一个全面的模型上下文协议(MCP)服务器,使LLM能够在具有高级安全功能和输出管理的Linux系统上执行shell命令。
特性
- 安全命令执行:执行具有超时保护和输出限制的bash命令
- 脚本支持:从字符串内容运行多行bash脚本
- 安全选项:可选命令分配和工作目录验证
- 综合产出:格式化结果,包括退出代码、stdout、stderr
- 系统信息:系统信息和当前目录的内置资源
- 错误处理:针对各种故障情况的强大错误处理
安装
先决条件
- Python 3.8或更高版本
- 基于Linux的操作系统
- MCP Python SDK
设置
- 克隆存储库:
git clone https://github.com/xyphanajay/mcp-shell-executor.git
cd mcp-shell-executor- 安装依赖项:
# Using uv (recommended)
uv add "mcp[cli]"
# Or using pip
pip install "mcp[cli]"- 安装服务器:
# 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定制
通过以下方式扩展服务器:
- 为特定命令类别添加新工具
- 实现自定义安全验证器
- 添加日志记录和监控功能
- 创建专用脚本模板
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 添加新功能的测试
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
对于问题和疑问:
- 在GitHub上打开一个问题
- 检查MCP文件:https://modelcontextprotocol.io
- 审查MCP规范:https://spec.modelcontextprotocol.io
______________________________________________________________________
免责声明:此工具执行系统命令,应负责任地使用。执行命令前务必检查命令,并为您的环境实施适当的安全措施。
