CLI MCP服务器
______________________________________________________________________
用于执行受控命令行操作的安全模型上下文协议(MCP)服务器实现 全面的安全功能。
](https://smithery.ai/protocol/cli-mcp-server) 
______________________________________________________________________
目录
______________________________________________________________________
概述
此MCP服务器支持安全的命令行执行,具有强大的安全措施,包括命令白名单、路径 验证和执行控制。非常适合在保持安全性的同时提供对LLM应用程序的受控CLI访问。
特性
- 🔒 通过严格验证确保命令执行的安全性
- ⚙️ 可配置的命令和标记白名单,带有“全部”选项
- 🛡️ 路径遍历预防和验证
- 🚫 外壳操作员注射保护
- ⏱️ 执行超时和长度限制
- 📝 详细的错误报告
- 🔄 异步操作支持
- 🎯 工作目录限制和验证
配置
使用环境变量配置服务器:
| 变量 | 描述 | 默认值 | |||
|---|---|---|---|---|---|
ALLOWED_DIR | 命令执行的基本目录(必需) | 无(必需) | |||
ALLOWED_COMMANDS | 逗号分隔的允许命令列表或“全部” | ls,cat,pwd | |||
ALLOWED_FLAGS | 逗号分隔的允许标志列表或“全部” | -l,-a,--help | |||
MAX_COMMAND_LENGTH | 最大命令字符串长度 | 1024 | |||
COMMAND_TIMEOUT | 命令执行超时(秒) | 30 | |||
ALLOW_SHELL_OPERATORS | 允许shell运算符(&&、 | 、 | 、>等) | false |
注:设置 ALLOWED_COMMANDS 或 ALLOWED_FLAGS “all”将分别允许任何命令或标志。
安装
通过以下方式自动安装Claude Desktop的CLI MCP服务器 史密瑟里:
npx @smithery/cli install cli-mcp-server --client claude可用工具
运行命令
在允许的目录中执行白名单CLI命令。
输入架构:
{
"command": {
"type": "string",
"description": "Single command to execute (e.g., 'ls -l' or 'cat file.txt')"
}
}安全说明:
- 默认情况下不支持Shell运算符(&&、|、>、>>),但可以通过启用
ALLOW_SHELL_OPERATORS=true - 除非ALLOWED_Commands='all',否则命令必须列入白名单
- 标志必须列入白名单,除非ALLOWED_Flags=“全部”
- 所有路径都被验证为在ALLOWED_DIR范围内
show_security_rules
显示当前安全配置和限制,包括:
- 工作目录
- 允许的命令
- 允许的标志
- 安全限制(最大命令长度和超时)
使用Claude Desktop
添加到您的 ~/Library/Application\ Support/Claude/claude_desktop_config.json:
开发/未发布的服务器配置
{
"mcpServers": {
"cli-mcp-server": {
"command": "uv",
"args": [
"--directory",
"
/cli-mcp-server",
"run",
"cli-mcp-server"
],
"env": {
"ALLOWED_DIR": "",
"ALLOWED_COMMANDS": "ls,cat,pwd,echo",
"ALLOWED_FLAGS": "-l,-a,--help,--version",
"MAX_COMMAND_LENGTH": "1024",
"COMMAND_TIMEOUT": "30",
"ALLOW_SHELL_OPERATORS": "false"
}
}
}
}已发布的服务器配置
{
"mcpServers": {
"cli-mcp-server": {
"command": "uvx",
"args": [
"cli-mcp-server"
],
"env": {
"ALLOWED_DIR": "",
"ALLOWED_COMMANDS": "ls,cat,pwd,echo",
"ALLOWED_FLAGS": "-l,-a,--help,--version",
"MAX_COMMAND_LENGTH": "1024",
"COMMAND_TIMEOUT": "30",
"ALLOW_SHELL_OPERATORS": "false"
}
}
}
}如果它不起作用或在UI中显示,请通过清除缓存 uv clean.安全功能
- ✅ 使用“全部”选项执行白名单命令
- ✅ 使用“全部”选项进行标记验证
- ✅ 路径遍历预防和规范化
- ✅ 外壳操作员屏蔽(通过以下方式提供选择加入支持
ALLOW_SHELL_OPERATORS=true) - ✅ 命令长度限制
- ✅ 执行超时
- ✅ 工作目录限制
- ✅ Symlink解析和验证
错误处理
服务器为以下对象提供详细的错误消息:
- 安全违规(CommandSecurityError)
- 命令超时(CommandTimeoutError)
- 命令格式无效
- 路径安全违规
- 执行失败(CommandExecutionError)
- 常规命令错误(CommandError)
发展
先决条件
- Python 3.10+
- MCP协议库
建筑与出版
准备分发包裹:
- 同步依赖关系并更新锁文件:
uv sync- 构建包分发:
uv build> 这将在 dist/ 目录。
- 发布到PyPI:
uv publish --token {{YOUR_PYPI_API_TOKEN}}调试
由于MCP服务器在stdio上运行,调试可能具有挑战性。为了达到最佳调试效果 经验,我们强烈建议使用 MCP检查员.
您可以通过以下方式启动MCP检查器 随着 此命令:
npx @modelcontextprotocol/inspector uv --directory {{your source code local directory}}/cli-mcp-server run cli-mcp-server启动后,检查器将显示一个URL,您可以在浏览器中访问该URL以开始调试。
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
______________________________________________________________________
有关更多信息或支持,请在项目存储库上打开一个问题。
