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": {}
  }
}

配置设置

配置文件分为三个主要部分:security、shells 和 ssh。

安全设置

{
  "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 文件。

推荐服务器

@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

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

精选
本地
JavaScript
Claude Code MCP

Claude Code MCP

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

精选
本地
JavaScript
ThingsPanel MCP

ThingsPanel MCP

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

官方
Python
Beamlit MCP Server

Beamlit MCP Server

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

官方
TypeScript
Windows CLI MCP Server

Windows CLI MCP Server

一个模型上下文协议(Model Context Protocol,MCP)服务器,提供对 Windows 系统的安全命令行访问。它允许像 Claude Desktop 这样的 MCP 客户端安全地在 PowerShell、CMD 和 Git Bash shell 中执行命令,并具有可配置的安全控制。

本地
JavaScript
Things MCP Server

Things MCP Server

通过 Claude Desktop 实现与 Things 应用的交互,允许使用自然语言命令来创建任务、分析项目和管理优先级。

本地
Python
mcp-wcgw

mcp-wcgw

紧密结合的 Shell 和文件编辑功能提供了强大的编码体验。 你可以使用不同的模式:架构师和代码编写者,分别用于计划和实施阶段。 你可以让它调用任何命令行指令,例如编译、类型检查、代码检查、GitHub CLI、Python。

本地
Python
MCP SAP GUI Server

MCP SAP GUI Server

使用模型上下文协议自动执行与 SAP GUI 的交互,从而可以通过点击、键入、滚动和事务管理等工具精确控制 SAP 事务。

本地
Python
MCP Client Configuration Server

MCP Client Configuration Server

一个工具,用于管理和同步不同 AI 助手客户端(Cline、Roo Code、WindSurf、Claude)的 MCP 服务器配置,并自动化从客户端配置文件中检索、列出、添加和删除服务器配置的过程。 Alternatively, a more concise translation: 用于管理和同步不同 AI 助手客户端(Cline、Roo Code、WindSurf、Claude)MCP 服务器配置的工具,可自动执行从客户端配置文件中检索、列出、添加和删除服务器配置的操作。

本地
JavaScript
Coder Toolbox MCP Server

Coder Toolbox MCP Server

一个实用工具包,通过提供无缝的 Java 代码分析、操作和测试工作流程工具,增强 Claude 的代码交互能力。

本地
TypeScript