返回市场
客户端MCP服务器

客户端MCP服务器

作者:MladenSU155 星标更新:2025-07-05

项目介绍

CLI MCP 服务器


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

License Python Version MCP Protocol smithery badge Python Tests

<a href="https://glama.ai/mcp/servers/q89277vzl1"><img width="380" height="200" src="https://gips0.baidu.com/it/u=2686029386,3011951680&fm=3081&app=3081&f=PNG?w=760&h=400" /></a>


目录

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

概述

此MCP服务器通过严格的验证措施实现了安全的命令行执行,包括命令白名单、路径验证和执行控制。非常适合为LLM应用程序提供受控的CLI访问同时保持安全性。

特性

  • 🔒 严格验证的安全命令执行
  • ⚙️ 可配置的命令和标志白名单,支持'all'选项
  • 🛡️ 防止路径遍历并进行验证
  • 🚫 壳操作符注入保护
  • ⏱️ 执行超时和长度限制
  • 📝 详细的错误报告
  • 🔄 异步操作支持
  • 🎯 工作目录限制和验证

配置

使用环境变量配置服务器:

变量描述默认值
ALLOWED_DIR命令执行的基本目录(必需)None (必需)
ALLOWED_COMMANDS允许的命令的逗号分隔列表或'all'ls,cat,pwd
ALLOWED_FLAGS允许的标志的逗号分隔列表或'all'-l,-a,--help
MAX_COMMAND_LENGTH最大命令字符串长度1024
COMMAND_TIMEOUT命令执行超时(秒)30
ALLOW_SHELL_OPERATORS是否允许壳操作符(&&, ||, |, >等)false

注意:将ALLOWED_COMMANDSALLOWED_FLAGS设置为'all'将允许任何命令或标志。

安装

通过Smithery自动安装CLI MCP Server到Claude Desktop:

npx @smithery/cli install cli-mcp-server --client claude

可用工具

run_command

在允许的目录内执行白名单中的CLI命令。

输入模式:

{
  "command": {
    "type": "string",
    "description": "要执行的单个命令(例如,'ls -l' 或 'cat file.txt')"
  }
}

安全注意事项:

  • 默认情况下不支持壳操作符(&&, |, >, >>),但可以通过ALLOW_SHELL_OPERATORS=true启用
  • 命令必须在白名单中,除非ALLOWED_COMMANDS='all'
  • 标志必须在白名单中,除非ALLOWED_FLAGS='all'
  • 所有路径都需验证是否在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清除缓存。

安全特性

  • ✅ 命令白名单强制执行,支持'all'选项
  • ✅ 标志验证,支持'all'选项
  • ✅ 防止路径遍历并进行规范化
  • ✅ 壳操作符阻断(可通过ALLOW_SHELL_OPERATORS=true启用)
  • ✅ 命令长度限制
  • ✅ 执行超时
  • ✅ 工作目录限制
  • ✅ 符号链接解析和验证

错误处理

服务器提供了详细的错误消息,包括:

  • 安全违规(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服务器通过标准I/O运行,调试可能会很困难。我们强烈建议使用MCP Inspector以获得最佳调试体验。

你可以通过以下命令使用npm启动MCP Inspector:

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

启动后,Inspector会显示一个可以在浏览器中访问的URL以开始调试。

许可

本项目根据MIT许可证授权 - 详情见LICENSE文件。


如需更多信息或支持,请在项目仓库中打开问题。