Dynamic Shell Server

Dynamic Shell Server

🚀 动态Shell命令控制台服务器(MCP)

这是一个模型上下文协议(MCP)服务器,它能在保障安全的情况下执行任意shell命令。借助动态审批系统,服务器可在允许运行任意命令的同时,通过用户批准和审计日志维护安全性。

🚀 快速开始

本服务器支持独立运行模式和与Claude桌面集成两种使用方式,下面为您详细介绍。

独立运行模式

  1. 克隆此仓库:
git clone 
cd dynamic-shell-server
  1. 创建虚拟环境并激活它:
python -m venv venv
source venv/bin/activate  # 在Windows系统中使用:venv\Scripts\activate
  1. 安装依赖项:
pip install -r requirements.txt
  1. 直接运行服务器:
python dynamic_shell_server.py

与Claude桌面集成

  1. 打开您的Claude桌面配置文件:
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. 添加服务器配置:
{
"mcpServers": {
"shell": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["/absolute/path/to/dynamic_shell_server.py"]
}
}
}
  1. 重启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')

📚 详细文档

命令审批流程

首次运行某个命令时,将会出现如下提示:

命令执行审批要求

命令: 
参数: 

此命令尚未被批准。您希望进行以下操作:
1. 允许本次执行
2. 批准并记住该命令以备将来使用
3. 拒绝执行

请选择选项(1-3):

可用工具

  1. execute_command:执行shell命令
    • 参数:
      • command: 要执行的命令
      • args: 可选的命令参数列表
  2. revoke_command_approval:撤销之前批准的某个命令的权限
    • 参数:
      • command: 要撤销的命令

资源访问

  1. commands://approved:列出所有已批准的命令及其批准日期

数据存储位置

服务器的数据存储在 ~/.config/mcp-shell-server/ 目录下:

  • approved_commands.json:记录所有已批准的命令及其批准时间
  • audit.log:详细记录所有执行过的命令的历史日志

🔧 技术细节

安全特性

  • 用户审批首次运行的未知命令
  • 批准命令持久化存储
  • 详尽的审计日志记录
  • 命令超时保护(5分钟)
  • 防护shell注入攻击
  • 支持撤销已批准的命令
  • 0 关注
  • 0 收藏,11 浏览
  • system 提出于 2025-09-30 04:33

相似服务问题