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 连接的设置。
- 要创建默认配置文件,请执行以下操作之一:
a) 将 config.json.example
复制到 config.json
,或者
b) 运行:
npx @simonb97/server-win-cli --init-config ./config.json
- 然后设置
--config
标志以指向您的配置文件,如 与 Claude Desktop 一起使用 部分所述。
配置位置
服务器在以下位置查找配置(按顺序):
--config
标志指定的路径- 当前目录中的 ./config.json
- 用户主目录中的 ~/.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 连接的 IDcommand
(string): 要执行的命令
- 返回命令输出作为文本,如果执行失败,则返回错误消息
-
ssh_disconnect
- 断开与 SSH 服务器的连接
- 输入:
connectionId
(string): 要断开连接的 SSH 连接的 ID
- 返回确认消息
安全注意事项
- 命令基于可执行文件名和完整路径被阻止
- 不区分大小写的阻止:"DEL.EXE"、"del.cmd" 等。
- 智能路径解析可防止使用备用路径绕过阻止
- 分析命令内容以避免误报(例如,即使 "rm" 被阻止,也允许 "warm_dir")
- 阻止潜在危险的命令参数
- 可以启用或禁用命令注入保护
- 根据允许的路径验证工作目录
- 默认情况下限制命令长度
- 正确终止 shell 进程
- 在执行之前验证所有输入
- 环境变量和个人文件可能在允许的路径内访问
- 考虑限制对敏感目录和环境信息的访问
许可证
该项目已获得 MIT 许可证的许可 - 有关详细信息,请参见 LICENSE 文件。
推荐服务器
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
Beamlit MCP Server
一个 MCP 服务器实现,它支持 Beamlit CLI 和 AI 模型之间的无缝集成,并使用模型上下文协议标准。
ThingsPanel MCP
一个集成服务器,将人工智能模型与 ThingsPanel 物联网平台连接起来,使人工智能助手能够通过自然语言与物联网设备交互,以进行设备控制、数据检索和管理操作。

systemd-coredump MCP Server
启用支持 MCP 的应用程序,通过与 systemd-coredump 功能集成,来访问、管理和分析系统核心转储。
Terminal Controller for MCP
一个 MCP 服务器,它通过一个标准化的接口,使 LLM 能够安全地执行终端命令、进行目录导航和进行文件系统操作。

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ù.)
applescript-mcp
使LLM应用程序能够通过AppleScript与macOS交互。
Google Tasks MCP Server
与 Google Tasks 集成,以允许列出、读取、搜索、创建、更新和删除任务。
MCP 3D Printer Server
通过 MCP 服务器实现与 3D 打印机管理系统的交互,支持 STL 文件操作、切片以及对 OctoPrint、Klipper、Duet 等打印机的控制。