article
README
🚀 动态Shell命令控制台服务器(MCP)
这是一个模型上下文协议(MCP)服务器,它能在保障安全的情况下执行任意shell命令。借助动态审批系统,服务器可在允许运行任意命令的同时,通过用户批准和审计日志维护安全性。
🚀 快速开始
本服务器支持独立运行模式和与Claude桌面集成两种使用方式,下面为您详细介绍。
独立运行模式
- 克隆此仓库:
git clone <repository-url>
cd dynamic-shell-server
- 创建虚拟环境并激活它:
python -m venv venv
source venv/bin/activate # 在Windows系统中使用:venv\Scripts\activate
- 安装依赖项:
pip install -r requirements.txt
- 直接运行服务器:
python dynamic_shell_server.py
与Claude桌面集成
- 打开您的Claude桌面配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- 添加服务器配置:
{
"mcpServers": {
"shell": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["/absolute/path/to/dynamic_shell_server.py"]
}
}
}
- 重启Claude桌面应用
✨ 主要特性
- 🔐 动态命令审批系统
- 📝 批准命令的持久化存储
- 📊 详尽的审计日志记录
- ⏱️ 命令超时保护机制
- 🔄 命令撤销功能
💻 使用示例
基础用法
以下是使用 execute_command 工具执行shell命令的示例:
# 假设我们要执行ls命令列出当前目录下的文件
from some_module import execute_command
result = execute_command(command='ls', args=[])
print(result)
高级用法
使用 revoke_command_approval 工具撤销之前批准的某个命令的权限:
# 假设我们要撤销之前批准的ls命令
from some_module import revoke_command_approval
revoke_command_approval(command='ls')
📚 详细文档
命令审批流程
首次运行某个命令时,将会出现如下提示:
命令执行审批要求
命令: <command>
参数: <args>
此命令尚未被批准。您希望进行以下操作:
1. 允许本次执行
2. 批准并记住该命令以备将来使用
3. 拒绝执行
请选择选项(1-3):
可用工具
execute_command:执行shell命令- 参数:
command: 要执行的命令args: 可选的命令参数列表
- 参数:
revoke_command_approval:撤销之前批准的某个命令的权限- 参数:
command: 要撤销的命令
- 参数:
资源访问
commands://approved:列出所有已批准的命令及其批准日期
数据存储位置
服务器的数据存储在 ~/.config/mcp-shell-server/ 目录下:
approved_commands.json:记录所有已批准的命令及其批准时间audit.log:详细记录所有执行过的命令的历史日志
🔧 技术细节
安全特性
- 用户审批首次运行的未知命令
- 批准命令持久化存储
- 详尽的审计日志记录
- 命令超时保护(5分钟)
- 防护shell注入攻击
- 支持撤销已批准的命令
Scan to join WeChat group