命令行安全执行服务器

一个安全的模型上下文协议(MCP)服务器实现,用于执行受控的命令行操作,具有全面的安全功能。

  • by mikeysrecipes
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mikeysrecipes/cli-mcp-server

使用说明

Hosted by Modl, any commits or changes made by the Modl team is to ensure compatibility

CLI MCP服务器


用于执行受控命令行操作的安全模型上下文协议(MCP)服务器实现 全面的安全功能。


目录

  1. 概述
  2. 特性
  3. 配置
  4. 可用工具
  5. 使用Claude Desktop
  6. 安全功能
  7. 错误处理
  8. 发展
  9. 许可证

概述

此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运算符(&&、

注:设置 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",
        "<path/to/the/repo>/cli-mcp-server",
        "run",
        "cli-mcp-server"
      ],
      "env": {
        "ALLOWED_DIR": "</your/desired/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": "</your/desired/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协议库

建筑与出版

准备分发包裹:

  1. 同步依赖关系并更新锁文件:

    uv sync
    
  2. 构建包分发:

    uv build
    

    这将在 dist/ 目录。

  3. 发布到PyPI:

    uv publish --token {{YOUR_PYPI_API_TOKEN}}
    

调试

由于MCP服务器在stdio上运行,调试可能具有挑战性。为了达到最佳调试效果 经验,我们强烈建议使用 MCP检查员.

您可以通过以下方式启动MCP检查器 npm 随着 此命令:

npx @modelcontextprotocol/inspector uv --directory {{your source code local directory}}/cli-mcp-server run cli-mcp-server

启动后,检查器将显示一个URL,您可以在浏览器中访问该URL以开始调试。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。


有关更多信息或支持,请在项目存储库上打开一个问题。