内容
# 利利斯 Shell
实验性 MCP 服务器,暴露本地 shell 命令执行给 AI 助手。
## 当前状态
本仓库应被视为原型,而不是安全的 shell 服务器。
当前实现暴露了一个 MCP 工具,`execute_command`,它通过 `subprocess.run(..., shell=True)` 运行调用者提供的命令字符串。它有一个固定的五分钟超时时间,捕获 stdout 和 stderr,并接受一个可选的工作目录。目前,它没有实现本 README 中前面描述的安全控制。
推荐的配置文件操作:存档或取消固定此仓库,直到安全模型被重建和测试。
## 安全警告
不要在包含凭证、生产数据、私有源代码、SSH 密钥、云令牌或其他敏感材料的宿主、帐户或目录上运行此程序。
当前代码的已知缺陷:
- 没有命令允许列表或拒绝列表强制执行
- 没有严格、宽容或锁定模式
- 没有工作目录边界强制执行
- 没有环境过滤
- 没有输出净化
- 没有审计日志
- 没有通过配置选择 shell
- 没有流式输出
- 没有 Windows 特定的执行路径
- `shell=True` 与不受信任的工具输入一起使用
这些缺陷使该项目不适合生产使用,甚至在普通的开发者工作站中也存在风险。
## 今日有效内容
MCP 服务器注册了一个工具:
- `execute_command`
- 输入:`command` 字符串
- 可选输入:`directory` 字符串,默认为 `~`
- 行为:在请求的目录中执行命令,并返回退出代码、stdout 和 stderr
## 已取消范围
前面的 README 声称支持命令允许列表、危险命令检测、可配置模式、输出净化、审计日志、工作目录限制、跨平台 shell 选择和流式输出。这些功能在当前的源代码树中不存在。
## 重新发布前的最小补丁计划
在将此作为面向安全的 MCP 服务器发布之前:
1. 用基于 argv 的执行替换 `shell=True` 字符串执行。
2. 默认添加严格模式,需要显式的命令允许列表。
3. 在每个命令之前规范化和强制执行配置的工作区根目录。
4. 为命令解析、阻止命令、路径遍历、符号链接逃逸、超时行为和输出限制构建测试。
5. 从返回的输出中编辑公共机密模式。
6. 添加有界输出处理,以防止大命令耗尽内存或淹没 MCP 响应。
7. 添加具有时间戳、cwd、退出代码和阻止原因的可审计命令日志。
8. 确切记录支持哪些 shell、平台和威胁边界。
## 开发
```bash
pip install -e ".[dev]"
pytest
```
## License
MIT