用途
win-cli-mcp-server 是一个模型上下文协议(MCP)服务器,旨在为 Windows 系统提供安全的命令行交互能力。它使 MCP 客户端(例如 Claude Desktop)能够像 Open Interpreter 那样在用户系统上执行操作,包括访问文件、环境变量、执行命令以及管理远程服务器。
注意:该项目已标记为弃用(DEPRECATED),不再维护。官方建议使用 https://github.com/wonderwhy-er/DesktopCommanderMCP 获取类似功能。
主要能力
- 多 Shell 支持:可在 PowerShell、命令提示符(CMD)和 Git Bash 中执行命令。
- SSH 支持:可通过 SSH 在远程系统上执行命令。
- 资源暴露:将 SSH 连接、当前目录和配置作为 MCP 资源查看。
- 安全控制:
- 命令和 SSH 命令屏蔽(支持完整路径、大小写变体)
- 工作目录验证
- 最大命令长度限制
- 命令日志与历史记录跟踪
- 智能参数验证
- 可配置性:自定义安全规则、Shell 特定设置、SSH 连接配置文件、路径限制、屏蔽命令列表。
服务器仅允许在配置的目录内、使用允许的命令、在配置的 SSH 连接上执行操作。
使用方式
与 Claude Desktop 配合使用
将以下内容添加到 claude_desktop_config.json 中(具体配置内容官方文档未在提供资料中完整展示)。若需使用特定配置文件,可添加 --config 标志。
配置完成后,可以:
- 使用可用工具直接执行命令
- 在 Resources 部分查看已配置的 SSH 连接和服务器配置
- 通过提供的工具管理 SSH 连接
配置文件
服务器使用 JSON 配置文件自定义行为,可指定安全控制、Shell 配置和 SSH 连接设置。
创建默认配置文件的方式:
- a) 将
config.json.example复制为config.json,或 - b) 通过其他方式生成(资料未完整说明)
然后按“与 Claude Desktop 配合使用”部分所述,设置 --config 标志指向配置文件。
服务器按以下顺序查找配置:
--config标志指定的路径- 当前目录下的
./config.json - 用户主目录下的
~/.win-cli-mcp/config.json
若未找到配置文件,服务器将使用默认(受限)配置。默认配置设计为限制性且安全。
配置文件分为三个主要部分:security、shells 和 ssh。
API 工具与资源
工具
- execute_command:在指定 Shell 中执行命令。输入:
shell(字符串,可选 "powershell"、"cmd" 或 "gitbash")、command(字符串)、workingDir(可选字符串)。返回命令输出文本或错误信息。 - get_command_history:获取已执行命令的历史记录。输入:
limit(可选数字)。返回带时间戳的命令历史及输出。 - ssh_execute:通过 SSH 在远程系统上执行命令。输入:
connectionId(字符串)、command(字符串)。返回命令输出文本或错误信息。 - ssh_disconnect:断开 SSH 服务器连接。输入:
connectionId(字符串)。返回确认消息。 - create_ssh_connection:创建新的 SSH 连接。输入:
connectionId(字符串)、connectionConfig(对象,包含主机、端口、用户名以及密码或私钥路径)。返回确认消息。 - read_ssh_connections:读取所有已配置的 SSH 连接。返回配置中的所有 SSH 连接列表。
- update_ssh_connection:更新现有 SSH 连接。输入:
connectionId(字符串)、connectionConfig(对象)。返回确认消息。 - delete_ssh_connection:删除 SSH 连接。输入:
connectionId(字符串)。返回确认消息。 - get_current_directory:获取服务器的当前工作目录。返回当前工作目录路径。
资源
- SSH 连接:URI 格式
ssh://{connectionId},包含连接详情(敏感信息已屏蔽),每个配置的 SSH 连接对应一个资源。例如ssh://raspberry-pi显示 "raspberry-pi" 连接的配置。 - SSH 配置:URI
ssh://config,包含整体 SSH 配置和所有连接(密码已屏蔽),显示defaultTimeout、maxConcurrentSessions等设置及连接列表。 - 当前目录:URI
cli://currentdir,包含 CLI 服务器的当前工作目录,显示命令默认执行的路径。 - CLI 配置:URI
cli://config,包含 CLI 服务器配置(不含敏感数据),显示安全设置、Shell 配置和 SSH 设置。
安全考虑
内置安全功能(始终启用)
以下安全功能硬编码在服务器中,无法禁用:
- 大小写不敏感的命令屏蔽:所有命令屏蔽不区分大小写(例如,若
del在blockedCommands中,则 "DEL.EXE"、"del.cmd" 等均被屏蔽)。 - 智能路径解析:服务器解析完整命令路径以防止绕过尝试(若
rm被屏蔽,则 "C:\Windows\System32\rm.exe" 也被屏蔽)。 - 命令解析智能:避免误报(例如,
warm_dir不会仅因rm在blockedCommands中而被屏蔽)。 - 输入验证:所有用户输入在执行前均经过验证。
- Shell 进程管理:进程在执行后或超时后正确终止。
- 敏感数据屏蔽:资源中的密码自动屏蔽(替换为
********)。
可配置安全功能(默认启用)
以下安全功能可通过 config.json 配置:
- 命令屏蔽:
blockedCommands数组中指定的命令被屏蔽(默认包含rm、del、format等危险命令)。 - 参数屏蔽:
blockedArguments数组中指定的参数被屏蔽(默认包含潜在危险标志)。 - 命令注入保护:防止命令链式调用(默认通过
enableInjectionProtection: true启用)。 - 工作目录限制:将命令执行限制在指定目录内(默认通过
restrictWorkingDirectory: true启用)。 - 命令长度限制:限制最大命令长度(默认:2000 字符)。
- 命令超时:终止运行时间过长的命令(默认:30 秒)。
- 命令日志:记录命令历史(默认通过
logCommands: true启用)。
重要安全警告
- 环境访问:命令可能访问环境变量,其中可能包含敏感信息。
- 文件系统访问:命令可在允许路径内读写文件——请仔细配置
allowedPaths以防止访问敏感数据。
适用场景
- 需要通过 MCP 客户端(如 Claude Desktop)在 Windows 上执行受控命令行操作的场景。
- 需要管理多个 SSH 连接并在远程系统上执行命令的场景。
- 对命令执行有安全审计和限制需求的场景。
限制
- 项目已弃用,不再维护,官方建议改用 DesktopCommanderMCP。
- 仅支持 Windows 系统。
- 服务器仅允许在配置的目录内、使用允许的命令、在配置的 SSH 连接上执行操作。
- 默认配置为限制性安全配置,可能限制部分操作。
许可证
本项目采用 MIT 许可证。