返回市场
命令行MCP

命令行MCP

作者:andresthor6 星标更新:2025-09-15

项目介绍

命令行MCP服务器

PyPI 版本 Python 版本 许可证:MIT

一个安全的模型控制协议(MCP)服务器,允许AI助手执行终端命令,并具有受控目录访问权限和命令权限。

概述

命令行MCP在AI助手和您的终端之间提供了一层安全防护。它实现了双重安全模型:

  1. 命令权限:命令被分类为读取(安全)、写入(更改数据)或系统(影响系统状态),并有不同的审批要求。
  2. 目录权限:命令只能访问显式列入白名单的目录或会话期间批准的目录。

AI助手通过标准化的MCP工具与该服务器交互,从而实现安全的终端命令执行,同时防止访问敏感文件或危险操作。您可以根据需要将安全性配置为高度限制到更宽松的级别。

主要特性

安全性易用性集成
目录白名单命令分类(读/写/系统)Claude Desktop兼容性
命令过滤持久会话权限标准MCP协议
模式匹配命令链(管道等)自动批准选项
危险命令阻止直观的审批工作流多种配置方法

支持的命令(开箱即用)

读取命令

  • ls, pwd, cat, less, head, tail, grep, find, which, du, df, file, sort等。

写入命令

  • cp, mv, rm, mkdir, rmdir, touch, chmod, chown等。

系统命令

  • ps, top, htop, who, netstat, ifconfig, ping等。

安全架构

系统实施了多层安全方法:

┌───────────────────────────────────────────────────────────────┐
│                   命令行MCP服务器                             │
├──────────────────┬────────────────────────┬───────────────────┤
│ 命令安全         │ 目录安全               │ 会话安全          │
├──────────────────┼────────────────────────┼───────────────────┤
│ ✓ 读取命令       │ ✓ 目录白名单           │ ✓ 会话ID          │
│ ✓ 写入命令       │ ✓ 运行时批准           │ ✓ 持久            │
│ ✓ 系统命令       │ ✓ 路径验证             │   权限            │
│ ✓ 阻止列表       │ ✓ 扩展主目录           │ ✓ 自动超时        │
│ ✓ 模式过滤器     │ ✓ 子目录检查           │ ✓ 桌面模式        │
└──────────────────┴────────────────────────┴───────────────────┘

所有安全功能都可以根据威胁模型和便利需求从严格到宽松进行配置。

快速开始

# 安装
git clone https://github.com/yourusername/cmd-line-mcp.git
cd cmd-line-mcp
python -m venv venv
source venv/bin/activate
pip install -e .
cp config.json.example config.json

# 运行
cmd-line-m
cmd-line-mcp --config config.json  # 使用特定配置

配置选项

服务器支持四种配置方法,按优先级顺序排列:

  1. 内置默认配置(default_config.json)
  2. JSON配置文件(推荐用于自定义)
    cmd-line-mcp --config config.json
    
  3. 环境变量(用于特定覆盖)
    export CMD_LINE_MCP_SECURITY_WHITELISTED_DIRECTORIES="~,/tmp"
    
  4. .env文件(用于环境特定设置)
    cmd-line-mcp --config config.json --env .env
    

默认配置存储在default_config.json中,并随包一起提供。您可以复制此文件以创建自己的自定义配置。

核心配置设置

{
  "security": {
    "whitelisted_directories": ["/home", "/tmp", "~"],
    "auto_approve_directories_in_desktop_mode": false, 
    "require_session_id": false,
    "allow_command_separators": true
  },
  "commands": {
    "read": ["ls", "cat", "grep"], 
    "write": ["touch", "mkdir", "rm"],
    "system": ["ps", "ping"]
  }
}

环境变量格式

环境变量使用可预测的命名模式:

CMD_LINE_MCP_<SECTION>_<SETTING>

示例:

# 安全设置
export CMD_LINE_MCP_SECURITY_WHITELISTED_DIRECTORIES="/projects,/var/data"
export CMD_LINE_MCP_SECURITY_AUTO_APPROVE_DIRECTORIES_IN_DESKTOP_MODE=true

# 命令添加(这些与默认值合并)
export CMD_LINE_MCP_COMMANDS_READ="awk,jq,wc"

Claude Desktop集成

设置

  1. 安装Claude for Desktop
  2. ~/Library/Application Support/Claude/claude_desktop_config.json中配置:
{
  "mcpServers": {
    "cmd-line": {
      "command": "/path/to/venv/bin/cmd-line-mcp",
      "args": ["--config", "/path/to/config.json"],
      "env": {
        "CMD_LINE_MCP_SECURITY_REQUIRE_SESSION_ID": "false",
        "CMD_LINE_MCP_SECURITY_AUTO_APPROVE_DIRECTORIES_IN_DESKTOP_MODE": "true"
      }
    }
  }
}

推荐Claude Desktop设置

为了获得最佳体验,请配置:

  • require_session_id: false - 必须防止审批循环
  • auto_approve_directories_in_desktop_mode: true - 可选,方便访问
  • 在白名单中包括常见目录

配置后,重启Claude for Desktop。

AI助手工具

服务器为AI助手提供了以下MCP工具:

工具目的是否需要审批
execute_command执行任何类型的命令是,对于写入/系统命令
execute_read_command执行只读命令目录审批即可
approve_directory授予目录访问权限不适用 - 它是审批工具
approve_command_type授予命令类别的权限不适用 - 它是审批工具
list_directories显示授权目录
list_available_commands显示命令类别
get_command_help获取命令使用指南
get_configuration查看当前设置

工具示例

目录管理

# 检查可用目录
dirs = await list_directories(session_id="session123")
whitelisted = dirs["whitelisted_directories"]
approved = dirs["session_approved_directories"]

# 请求目录权限
if "/projects/my-data" not in whitelisted and "/projects/my-data" not in approved:
    result = await approve_directory(
        directory="/projects/my-data", 
        session_id="session123"
    )

命令执行

# 读取命令(强制执行读取权限)
result = await execute_read_command("ls -la ~/Documents")

# 任何类型的命令(可能需要命令类型审批)
result = await execute_command(
    command="mkdir -p ~/Projects/new-folder", 
    session_id="session123"
)

获取配置

# 检查当前设置
config = await get_configuration()
whitelist = config["directory_whitelisting"]["whitelisted_directories"]

目录安全系统

服务器限制命令执行到特定目录,防止访问敏感文件。

目录安全模式

系统支持三种安全模式:

模式描述最适合配置
严格只允许白名单目录最大安全性auto_approve_directories_in_desktop_mode: false
审批非白名单目录需要明确批准互动使用标准客户端的默认行为
自动批准自动批准Claude Desktop的目录方便auto_approve_directories_in_desktop_mode: true

白名单目录配置

"security": {
  "whitelisted_directories": [
    "/home",                  // 系统目录
    "/tmp",
    "~",                      // 用户家目录
    "~/Documents"             // 常见用户目录
  ],
  "auto_approve_directories_in_desktop_mode": false  // 设置为true以方便
}

目录审批流程

  1. 在某个目录请求命令
  2. 系统检查:
    • 目录是否在全局白名单中?→ 允许
    • 该目录是否已在会话中被批准?→ 允许
    • 都不是?→ 请求批准
  3. 批准后,目录在整个会话期间保持批准状态

路径格式支持

  • 绝对路径:/home/user/documents
  • 主目录:~(扩展为用户的主目录)
  • 用户子目录:~/Downloads

Claude Desktop集成

服务器为Claude Desktop维护持久会话,确保目录审批在请求之间持续存在,防止审批循环。

命令定制

系统使用命令分类来控制访问:

类别描述示例命令是否需要审批
读取安全操作ls, cat, find
写入数据修改mkdir, rm, touch
系统系统操作ps, ping, ifconfig
阻止危险命令sudo, bash, eval总是拒绝

定制方法

// 在config.json中
{
  "commands": {
    "read": ["ls", "cat", "grep", "awk", "jq"],
    "write": ["mkdir", "touch", "rm"],
    "system": ["ping", "ifconfig", "kubectl"],
    "blocked": ["sudo", "bash", "eval"]
  }
}

环境变量方法:

# 添加到现有列表,而不是替换(逗号分隔)
export CMD_LINE_MCP_COMMANDS_READ="awk,jq"
export CMD_LINE_MCP_COMMANDS_BLOCKED="npm,pip"

MCP服务器将这些添加与现有命令合并,让您可以在不重新创建完整命令列表的情况下扩展功能。

命令链

服务器支持三种命令链方法:

方法符号示例配置设置
管道|ls | grep txtallow_command_separators: true
序列;mkdir dir; cd dirallow_command_separators: true
后台&find . -name "*.log" &allow_command_separators: true

链中的所有命令都必须来自支持的命令列表。整个链的安全检查都会应用。

快速配置:

"security": {
  "allow_command_separators": true  // 设置为false以禁用所有链
}

要禁用特定分隔符,请将其添加到dangerous_patterns列表中。

许可证

MIT