MCP Shell流服务器
概述
MCP Shell Stream Server是一个基于Python的服务器,允许您以编程方式运行、监视和控制长期存在的Shell命令。它支持Windows和Unix系统,通过模型上下文协议(MCP)提供实时输出流、会话管理和远程命令执行。
🛡️ 安全增强版本: 此实现包括全面的安全过滤,以防止危险操作,同时保持管理功能。
特性
- 🔧 命令执行: 在隔离会话中启动长时间运行的shell命令
- 📡 实时流媒体: 实时流命令输出
- 📊 会话管理: 检查运行进程的状态和返回代码
- ⛔ 过程控制: 安全终止进程
- 🌐 跨平台: 支持Windows、Linux、macOS
- 🛡️ 安全筛选: 内置防止危险系统操作的保护
- 📝 审核日志记录: 用于命令批准/阻止的安全事件日志记录
- 🔍 命令测试: 不执行针对安全过滤器的测试命令
安全功能
🟢 安全操作(允许)
- 用户目录、D:\\drive、临时文件夹中的文件操作
- 网络诊断(ping、tracert、nslookup、DNS更改)
- 系统信息收集(主机名、whoami、systeminfo)
- 安全注册表读取(HKCU、非关键HKLM区域)
- 开发工具和用户应用程序
- 系统重启和关闭命令
- 非系统驱动器(E:、F:、USB驱动器)上的磁盘操作
- 受控磁盘部件操作
🔴 阻止操作(自动阻止)
- 系统文件: 访问C:\\Windows、C:\\程序文件、注册表配置单元
- 受保护的驱动器: C:和D:驱动器上的格式化操作
- 启动配置: bcdedit、bootrec、bcdboot修改
- 关键流程: 强制终止winlogon、csrss、lsass等。
- 关键服务: 停止基本Windows服务
- 危险磁盘部件: 清理、选择磁盘0、格式化操作
- 系统修改: 系统文件的文件属性/所有权更改
🟡 有条件允许
- 设置命令格式: 允许在E:、F:和其他非系统驱动器上使用
- 磁盘部件: 允许安全操作,阻止危险模式
- 注册表操作: 关键路径上的写入/删除被阻止
安装
先决条件
- Python 3.10或更新版本
- 管理员权限(用于提升的操作)
设置
- 克隆存储库或将项目文件复制到您的计算机上。
- (可选)创建并激活虚拟环境:
python -m venv .venv
.\.venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt或者,如果使用 pyproject.toml:
pip install .用法
启动服务器
以管理员权限运行MCP服务器以获得完整功能:
# Run as Administrator
python cmd_mcp.py示例命令
系统信息
# Get comprehensive system info
mcp_shell_stream.start(command="hostname & whoami & systeminfo")
# Check DNS configuration
mcp_shell_stream.start(command="netsh interface ip show dns")
# View network interfaces
mcp_shell_stream.start(command="netsh interface show interface")安全行政操作
# Change DNS to Google DNS
mcp_shell_stream.start(command='netsh interface ip set dns "Ethernet" static 8.8.8.8')
# Restart computer
mcp_shell_stream.start(command="Restart-Computer", shell="powershell")
# Rename computer (requires restart)
mcp_shell_stream.start(command='Rename-Computer -NewName "NEW-PC" -Force', shell="powershell")磁盘操作(非系统驱动器)
# Format external drive (E: allowed, C:/D: blocked)
mcp_shell_stream.start(command="format E: /fs:NTFS /q")
# Safe diskpart operations
mcp_shell_stream.start(command="diskpart") # Opens diskpart console安全性测试
# Test if a command would be blocked (without executing)
mcp_shell_stream.test_security(test_command="format C:")
# Returns: would_be_allowed: False, reason: "BLOCKED: Format command targeting protected drive C:"
mcp_shell_stream.test_security(test_command="format E:")
# Returns: would_be_allowed: True, reason: "Command appears safe"安全配置
受保护的驱动器
以下驱动器受到保护,无法进行格式化操作:
- C -系统驱动
- D -主数据驱动器
关键服务(无法停止)
- winlogon、csrss、lsass(身份验证)
- 服务,rpcss(核心Windows服务)
- dhcp、dnscache(网络)
- 事件日志、密码svc(系统/安全)
危险命令模式(已阻止)
- 启动配置更改(bcdedit、bootrec)
- Windows目录中的系统文件操作
- 关键流程终止
- 危险的磁盘部件操作(清洁,选择磁盘0)
api参考
可用工具
start(command, shell=None, cwd=None)
执行带有自动安全过滤的命令。
- 退货: 会话信息或安全违规错误
- 安全: 所有命令都经过预先筛选以确保安全
read(session_id, offset=0, max_bytes=65536)
读取正在运行的命令会话的输出。
- 退货: 输出块和延续元数据
status(session_id)
获取命令会话的当前状态。
- 退货: 运行状态、返回代码、时间戳
stop(session_id)
终止正在运行的命令会话。
- 退货: 终止状态和记录信息
test_security(test_command)
在不执行的情况下,根据安全过滤器测试命令。
- 退货: 安全评估和推理
配置文件
Claude桌面集成
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"shell-stream": {
"command": "C:\\Users\\[username]\\.local\\bin\\uv.EXE",
"args": [
"run",
"--with",
"mcp[cli]",
"mcp",
"run",
"D:\\path\\to\\MCP_CMD\\cmd_mcp.py"
]
}
}
}安全日志
服务器在以下位置维护安全日志:
- 窗户:
%TEMP%\\mcp-shell-security.log - 格式:
[timestamp] ACTION: command - reason
日志条目示例:
[2025-09-08 15:30:45] APPROVED: hostname - Command appears safe
[2025-09-08 15:31:02] BLOCKED: format C: - BLOCKED: Format command targeting protected drive C:
[2025-09-08 15:31:15] APPROVED: Restart-Computer - Command appears safe版本历史记录
v2.0.0(2025年9月8日)-安全增强
- ✅ 增加了全面的安全过滤系统
- ✅ 保护系统驱动器(C:、D:)免受格式化操作
- ✅ 允许在外部驱动器上进行有条件的磁盘操作
- ✅ 已实现智能磁盘部件过滤
- ✅ 添加了安全测试工具(
test_security) - ✅ 通过详细的命令分析增强审计日志记录
- ✅ 记录所有安全限制并附上解释
- ✅ 删除了重新启动/关闭命令块(现在允许)
- ✅ 为格式化命令添加了特定于驱动器的保护
v1.0.0(原始)
- 基本shell命令执行
- 与跨平台支持
- 会话管理
- 实时输出流
警告和安全通知
- 🔒 管理员权限: 完整功能需要以管理员身份运行
- 🛡️ 安全筛选: 命令会自动过滤以确保安全
- 📝 审计跟踪: 所有操作均已记录,以供安全审查
- ⚠️ 职责: 执行前始终验证命令
- 🚫 系统保护: 保护关键系统区域免受修改
- 💾 数据安全: 保护主驱动器(C:、D:)不进行格式化
故障排除
常见问题
命令被安全阻止:
- 使用
test_security("your_command")了解原因 - 检查命令是否影响受保护的驱动器或系统文件
- 考虑阻塞操作的替代方法
拒绝权限:
- 确保以管理员身份运行
- 检查UAC设置
- 验证用户是否具有必要的权限
网络操作失败:
- 检查接口名称
netsh interface show interface - 验证DNS服务器地址
- 确保网络适配器已启用
贡献
欢迎投稿!请确保任何修改都符合安全标准,并包括对危险操作的适当过滤。
许可证
MIT许可证
作者
原件: 但卡利根\ 安全增强版本: 增强了全面的安全功能(2025年9月)
______________________________________________________________________
*此MCP服务器提供强大的系统管理功能,内置安全措施,可防止意外系统损坏,同时保持管理功能。*
