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 文件。
推荐服务器
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
ThingsPanel MCP
一个集成服务器,将人工智能模型与 ThingsPanel 物联网平台连接起来,使人工智能助手能够通过自然语言与物联网设备交互,以进行设备控制、数据检索和管理操作。
Beamlit MCP Server
一个 MCP 服务器实现,它支持 Beamlit CLI 和 AI 模型之间的无缝集成,并使用模型上下文协议标准。
Windows CLI MCP Server
一个模型上下文协议(Model Context Protocol,MCP)服务器,提供对 Windows 系统的安全命令行访问。它允许像 Claude Desktop 这样的 MCP 客户端安全地在 PowerShell、CMD 和 Git Bash shell 中执行命令,并具有可配置的安全控制。
Things MCP Server
通过 Claude Desktop 实现与 Things 应用的交互,允许使用自然语言命令来创建任务、分析项目和管理优先级。
mcp-wcgw
紧密结合的 Shell 和文件编辑功能提供了强大的编码体验。 你可以使用不同的模式:架构师和代码编写者,分别用于计划和实施阶段。 你可以让它调用任何命令行指令,例如编译、类型检查、代码检查、GitHub CLI、Python。
MCP SAP GUI Server
使用模型上下文协议自动执行与 SAP GUI 的交互,从而可以通过点击、键入、滚动和事务管理等工具精确控制 SAP 事务。
MCP Client Configuration Server
一个工具,用于管理和同步不同 AI 助手客户端(Cline、Roo Code、WindSurf、Claude)的 MCP 服务器配置,并自动化从客户端配置文件中检索、列出、添加和删除服务器配置的过程。 Alternatively, a more concise translation: 用于管理和同步不同 AI 助手客户端(Cline、Roo Code、WindSurf、Claude)MCP 服务器配置的工具,可自动执行从客户端配置文件中检索、列出、添加和删除服务器配置的操作。
Coder Toolbox MCP Server
一个实用工具包,通过提供无缝的 Java 代码分析、操作和测试工作流程工具,增强 Claude 的代码交互能力。