Windows CLI MCP Server

Windows CLI MCP Server

镜子 (jìng zi)

MCP-Mirror

操作系统自动化
访问服务器

README

Windows CLI MCP 服务器

用于 Windows 系统上安全命令行交互的 MCP 服务器,通过 SSH 实现对 PowerShell、CMD、Git Bash shell 和远程系统的受控访问。它允许 MCP 客户端(如 Claude Desktop)在您的系统上执行操作,类似于 Open Interpreter

⚠️ 警告:此 MCP 服务器提供对您系统命令行界面和通过 SSH 连接的远程系统的直接访问。启用后,它将授予对您的文件、环境变量、命令执行功能和远程服务器管理的访问权限。

始终:

  • 审查并限制允许的路径和 SSH 连接
  • 启用目录限制
  • 配置命令阻止
  • 考虑安全影响

有关更多详细信息,请参见 配置

功能

  • 多 Shell 支持:在 PowerShell、命令提示符 (CMD) 和 Git Bash 中执行命令
  • SSH 支持:通过 SSH 在远程系统上执行命令
  • 安全控制
    • 命令和 SSH 命令阻止(完整路径,区分大小写)
    • 工作目录验证
    • 最大命令长度限制
    • 命令日志记录和历史记录跟踪
    • 智能参数验证
  • 可配置
    • 自定义安全规则
    • Shell 特定的设置
    • SSH 连接配置文件
    • 路径限制
    • 阻止的命令列表

有关服务器为 MCP 客户端提供的工具的更多详细信息,请参见 API 部分。

注意:服务器仅允许在配置的目录中、使用允许的命令以及在配置的 SSH 连接上执行操作。

与 Claude Desktop 一起使用

将其添加到您的 claude_desktop_config.json

{
  "mcpServers": {
    "windows-cli": {
      "command": "npx",
      "args": ["-y", "@simonb97/server-win-cli"]
    }
  }
}

要与特定的配置文件一起使用,请添加 --config 标志:

{
  "mcpServers": {
    "windows-cli": {
      "command": "npx",
      "args": [
        "-y",
        "@simonb97/server-win-cli",
        "--config",
        "path/to/your/config.json"
      ]
    }
  }
}

配置

服务器使用 JSON 配置文件来自定义其行为。您可以指定安全控制、shell 配置和 SSH 连接的设置。

  1. 要创建默认配置文件,请执行以下操作之一:

a)config.json.example 复制到 config.json,或者

b) 运行:

npx @simonb97/server-win-cli --init-config ./config.json
  1. 然后设置 --config 标志以指向您的配置文件,如 与 Claude Desktop 一起使用 部分所述。

配置位置

服务器在以下位置查找配置(按顺序):

  1. --config 标志指定的路径
  2. 当前目录中的 ./config.json
  3. 用户主目录中的 ~/.win-cli-mcp/config.json

如果未找到配置文件,服务器将使用默认(受限)配置:

默认配置

注意:默认配置旨在具有限制性和安全性。在 配置设置 部分中查找有关每个设置的更多详细信息。

{
  "security": {
    "maxCommandLength": 2000,
    "blockedCommands": [
      "rm",
      "del",
      "rmdir",
      "format",
      "shutdown",
      "restart",
      "reg",
      "regedit",
      "net",
      "netsh",
      "takeown",
      "icacls"
    ],
    "blockedArguments": [
      "--exec",
      "-e",
      "/c",
      "-enc",
      "-encodedcommand",
      "-command",
      "--interactive",
      "-i",
      "--login",
      "--system"
    ],
    "allowedPaths": ["User's home directory", "Current working directory"],
    "restrictWorkingDirectory": true,
    "logCommands": true,
    "maxHistorySize": 1000,
    "commandTimeout": 30,
    "enableInjectionProtection": true
  },
  "shells": {
    "powershell": {
      "enabled": true,
      "command": "powershell.exe",
      "args": ["-NoProfile", "-NonInteractive", "-Command"],
      "blockedOperators": ["&", "|", ";", "`"]
    },
    "cmd": {
      "enabled": true,
      "command": "cmd.exe",
      "args": ["/c"],
      "blockedOperators": ["&", "|", ";", "`"]
    },
    "gitbash": {
      "enabled": true,
      "command": "C:\\Program Files\\Git\\bin\\bash.exe",
      "args": ["-c"],
      "blockedOperators": ["&", "|", ";", "`"]
    }
  },
  "ssh": {
    "enabled": false,
    "defaultTimeout": 30,
    "maxConcurrentSessions": 5,
    "keepaliveInterval": 10000,
    "keepaliveCountMax": 3,
    "readyTimeout": 20000,
    "connections": {}
  }
}

配置设置

配置文件分为三个主要部分:securityshellsssh

安全设置

{
  "security": {
    // 任何命令允许的最大长度
    "maxCommandLength": 1000,

    // 要阻止的命令 - 阻止直接使用和完整路径
    // 示例:"rm" 阻止 "rm" 和 "C:\\Windows\\System32\\rm.exe"
    // 不区分大小写:"del" 阻止 "DEL.EXE"、"del.cmd" 等。
    "blockedCommands": [
      "rm", // 删除文件
      "del", // 删除文件
      "rmdir", // 删除目录
      "format", // 格式化磁盘
      "shutdown", // 关闭系统
      "restart", // 重启系统
      "reg", // 注册表编辑器
      "regedit", // 注册表编辑器
      "net", // 网络命令
      "netsh", // 网络命令
      "takeown", // 获取文件所有权
      "icacls" // 更改文件权限
    ],

    // 与任何命令一起使用时将被阻止的参数
    // 注意:独立检查每个参数 - "cd warm_dir" 不会因为 "rm" 在 blockedCommands 中而被阻止
    "blockedArguments": [
      "--exec", // 执行标志
      "-e", // 简短执行标志
      "/c", // 某些 shell 中的命令执行
      "-enc", // PowerShell 编码命令
      "-encodedcommand", // PowerShell 编码命令
      "-command", // 直接 PowerShell 命令执行
      "--interactive", // 可能绕过限制的交互模式
      "-i", // 交互的简短形式
      "--login", // 登录 shell 可能具有不同的权限
      "--system" // 系统级操作
    ],

    // 可以执行命令的目录列表
    "allowedPaths": ["C:\\Users\\YourUsername", "C:\\Projects"],

    // 如果为 true,则命令只能在 allowedPaths 中运行
    "restrictWorkingDirectory": true,

    // 如果为 true,则保存命令历史记录
    "logCommands": true,

    // 要保留在历史记录中的最大命令数
    "maxHistorySize": 1000,

    // 命令执行的超时时间(以秒为单位)(默认值:30)
    "commandTimeout": 30,

    // 启用或禁用针对命令注入的保护(涵盖 ;, &, |, \`)
    "enableInjectionProtection": true
  }
}

Shell 配置

{
  "shells": {
    "powershell": {
      // 启用/禁用此 shell
      "enabled": true,
      // shell 可执行文件的路径
      "command": "powershell.exe",
      // shell 的默认参数
      "args": ["-NoProfile", "-NonInteractive", "-Command"],
      // 可选:指定要阻止的命令运算符
      "blockedOperators": ["&", "|", ";", "`"]  // 阻止所有命令链接
    },
    "cmd": {
      "enabled": true,
      "command": "cmd.exe",
      "args": ["/c"],
      "blockedOperators": ["&", "|", ";", "`"]  // 阻止所有命令链接
    },
    "gitbash": {
      "enabled": true,
      "command": "C:\\Program Files\\Git\\bin\\bash.exe",
      "args": ["-c"],
      "blockedOperators": ["&", "|", ";", "`"]  // 阻止所有命令链接
    }
  }
}

SSH 配置

{
  "ssh": {
    // 启用/禁用 SSH 功能
    "enabled": false,

    // SSH 命令的默认超时时间(以秒为单位)
    "defaultTimeout": 30,

    // 最大并发 SSH 会话数
    "maxConcurrentSessions": 5,

    // 发送 keepalive 数据包的间隔(以毫秒为单位)
    "keepaliveInterval": 10000,

    // 断开连接之前的最大失败 keepalive 尝试次数
    "keepaliveCountMax": 3,

    // 建立 SSH 连接的超时时间(以毫秒为单位)
    "readyTimeout": 20000,

    // SSH 连接配置文件
    "connections": {
      // 注意:这些示例未在默认配置中设置!
      // 示例:本地 Raspberry Pi
      "raspberry-pi": {
        "host": "raspberrypi.local", // 主机名或 IP 地址
        "port": 22, // SSH 端口
        "username": "pi", // SSH 用户名
        "password": "raspberry", // 密码验证(如果不使用密钥)
        "keepaliveInterval": 10000, // 覆盖全局 keepaliveInterval
        "keepaliveCountMax": 3, // 覆盖全局 keepaliveCountMax
        "readyTimeout": 20000 // 覆盖全局 readyTimeout
      },
      // 示例:使用密钥验证的远程服务器
      "dev-server": {
        "host": "dev.example.com",
        "port": 22,
        "username": "admin",
        "privateKeyPath": "C:\\Users\\YourUsername\\.ssh\\id_rsa", // 私钥的路径
        "keepaliveInterval": 10000,
        "keepaliveCountMax": 3,
        "readyTimeout": 20000
      }
    }
  }
}

API

工具

  • execute_command

    • 在指定的 shell 中执行命令
    • 输入:
      • shell (string): 要使用的 shell ("powershell", "cmd", 或 "gitbash")
      • command (string): 要执行的命令
      • workingDir (可选 string): 工作目录
    • 返回命令输出作为文本,如果执行失败,则返回错误消息
  • get_command_history

    • 获取已执行命令的历史记录
    • 输入:limit (可选 number)
    • 返回带有时间戳的命令历史记录和输出
  • ssh_execute

    • 通过 SSH 在远程系统上执行命令
    • 输入:
      • connectionId (string): 要使用的 SSH 连接的 ID
      • command (string): 要执行的命令
    • 返回命令输出作为文本,如果执行失败,则返回错误消息
  • ssh_disconnect

    • 断开与 SSH 服务器的连接
    • 输入:
      • connectionId (string): 要断开连接的 SSH 连接的 ID
    • 返回确认消息

安全注意事项

  • 命令基于可执行文件名和完整路径被阻止
  • 不区分大小写的阻止:"DEL.EXE"、"del.cmd" 等。
  • 智能路径解析可防止使用备用路径绕过阻止
  • 分析命令内容以避免误报(例如,即使 "rm" 被阻止,也允许 "warm_dir")
  • 阻止潜在危险的命令参数
  • 可以启用或禁用命令注入保护
  • 根据允许的路径验证工作目录
  • 默认情况下限制命令长度
  • 正确终止 shell 进程
  • 在执行之前验证所有输入
  • 环境变量和个人文件可能在允许的路径内访问
  • 考虑限制对敏感目录和环境信息的访问

许可证

该项目已获得 MIT 许可证的许可 - 有关详细信息,请参见 LICENSE 文件。

推荐服务器

Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
Beamlit MCP Server

Beamlit MCP Server

一个 MCP 服务器实现,它支持 Beamlit CLI 和 AI 模型之间的无缝集成,并使用模型上下文协议标准。

官方
TypeScript
ThingsPanel MCP

ThingsPanel MCP

一个集成服务器,将人工智能模型与 ThingsPanel 物联网平台连接起来,使人工智能助手能够通过自然语言与物联网设备交互,以进行设备控制、数据检索和管理操作。

官方
Python
systemd-coredump MCP Server

systemd-coredump MCP Server

启用支持 MCP 的应用程序,通过与 systemd-coredump 功能集成,来访问、管理和分析系统核心转储。

本地
JavaScript
Terminal Controller for MCP

Terminal Controller for MCP

一个 MCP 服务器,它通过一个标准化的接口,使 LLM 能够安全地执行终端命令、进行目录导航和进行文件系统操作。

本地
Python
mac-apps-launcher

mac-apps-launcher

一个 MCP 服务器,用于在 MacOS 上列出和启动应用程序。 (Yī gè MCP fúwùqì, yòng yú zài MacOS shàng lièchū hé qǐdòng yìngyòng chéngxù.)

本地
JavaScript
applescript-mcp

applescript-mcp

使LLM应用程序能够通过AppleScript与macOS交互。

本地
TypeScript
Google Tasks MCP Server

Google Tasks MCP Server

与 Google Tasks 集成,以允许列出、读取、搜索、创建、更新和删除任务。

本地
TypeScript
MCP 3D Printer Server

MCP 3D Printer Server

通过 MCP 服务器实现与 3D 打印机管理系统的交互,支持 STL 文件操作、切片以及对 OctoPrint、Klipper、Duet 等打印机的控制。

本地
TypeScript