local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Allows execution of whitelisted shell commands with comprehensive security features including command and flag whitelisting, path validation, and protection against injection attacks.
CLI MCP 服务器
安全的模型上下文协议 (MCP) 服务器实现,用于执行具有全面安全功能的受控命令行操作。
目录
概述
此 MCP 服务器支持安全的命令行执行,并具备强大的安全措施,包括命令白名单、路径验证和执行控制。非常适合在保证安全性的同时,为 LLM 应用程序提供受控的 CLI 访问。
特征
- 🔒 通过严格验证来确保命令执行的安全
- ⚙️ 可配置命令和标志白名单,带有“全部”选项
- 🛡️ 路径遍历预防和验证
- 🚫 Shell 运算符注入保护
- ⏱️ 执行超时和长度限制
- 📝 详细的错误报告
- 🔄 异步操作支持
- 🎯 工作目录限制和验证
配置
使用环境变量配置服务器:
多变的 | 描述 | 默认 |
---|---|---|
ALLOWED_DIR | 命令执行的基本目录(必需) | 无(必填) |
ALLOWED_COMMANDS | 允许的命令的逗号分隔列表或“全部” | ls,cat,pwd |
ALLOWED_FLAGS | 允许标志的逗号分隔列表或“全部” | -l,-a,--help |
MAX_COMMAND_LENGTH | 最大命令字符串长度 | 1024 |
COMMAND_TIMEOUT | 命令执行超时(秒) | 30 |
ALLOW_SHELL_OPERATORS | 允许 shell 运算符(&&、 |
注意:将ALLOWED_COMMANDS
或ALLOWED_FLAGS
设置为“all”将分别允许任何命令或标志。
安装
要通过Smithery自动为 Claude Desktop 安装 CLI MCP 服务器:
可用工具
运行命令
在允许的目录内执行白名单中的 CLI 命令。
输入模式:
安全说明:
- Shell 运算符(&&、|、>、>>)默认不受支持,但可以通过
ALLOW_SHELL_OPERATORS=true
启用 - 除非 ALLOWED_COMMANDS='all',否则命令必须列入白名单
- 除非 ALLOWED_FLAGS='all',否则必须将标志列入白名单
- 所有路径均经过验证,位于 ALLOWED_DIR 范围内
显示安全规则
显示当前的安全配置和限制,包括:
- 工作目录
- 允许的命令
- 允许的标志
- 安全限制(最大命令长度和超时)
与 Claude Desktop 一起使用
添加到您的~/Library/Application\ Support/Claude/claude_desktop_config.json
:
开发/未发布的服务器配置
已发布的服务器配置
如果它不起作用或不显示在 UI 中,请通过
uv clean
清除缓存。
安全功能
- ✅ 使用“全部”选项执行白名单命令
- ✅ 使用“全部”选项标记验证
- ✅ 路径遍历预防和规范化
- ✅ Shell 操作员阻止(通过
ALLOW_SHELL_OPERATORS=true
选择加入支持) - ✅ 命令长度限制
- ✅ 执行超时
- ✅ 工作目录限制
- ✅ 符号链接解析和验证
错误处理
服务器提供以下详细的错误消息:
- 安全违规(CommandSecurityError)
- 命令超时(CommandTimeoutError)
- 无效的命令格式
- 路径安全违规
- 执行失败(CommandExecutionError)
- 常规命令错误(CommandError)
发展
先决条件
- Python 3.10+
- MCP 协议库
构建和发布
准备分发包:
- 同步依赖项并更新锁文件:Copy
- 构建软件包分发版:Copy
这将在
dist/
目录中创建源和轮子分布。 - 发布到 PyPI:Copy
调试
由于 MCP 服务器通过 stdio 运行,调试起来可能比较困难。为了获得最佳调试体验,我们强烈建议使用MCP Inspector 。
您可以使用以下命令通过npm
启动 MCP Inspector:
启动后,检查器将显示一个 URL,您可以在浏览器中访问该 URL 以开始调试。
执照
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。
如需更多信息或支持,请在项目存储库上打开一个问题。