MCP CMD Windows Command MCP Server

使用说明(Markdown 格式)

  • 项目简介

    • 这是一个基于 Model Context Protocol (MCP) 的服务器实现,运行在 Windows 上。它暴露一组工具(如 cmd_run、cmd_batch、powershell_run 等),供 MCP 客户端通过 STDIO 的 JSON-RPC 进行调用,以获得命令执行、系统信息、进程管理等能力。
  • 主要功能点

    • 提供多种工具:
      • cmd_run:执行单条 CMD 命令,自动关闭输入、限制输出、并在超时/异常时杀死整棵进程树。
      • cmd_batch:按顺序执行多条 CMD 命令,支持在遇到错误时可选是否继续。
      • powershell_run:安全执行 PowerShell 命令(使用 Base64 编码执行,降低转义风险)。
      • system_info:获取系统基本信息(OS、内存、用户名等)。
      • process_list:列出正在运行的相关进程,便于诊断。
      • process_cleanup:清理老旧的挂起的 CMD/Conhost 进程,防止僵死。
      • show_security_rules:展示当前的安全规则与运行时限制。
    • 安全与稳定性:
      • 严格的输入长度、超时、输出上限、并发控制与速率限制。
      • 禁止系统级破坏性命令的执行,文件操作仅在受控的项目根目录内有效。
      • 支持并发进程的管理、闲置超时清理、以及对整个进程树的强制清理。
    • 通信与部署:
      • 基于 MCP 的核心 JSON-RPC 协议,使用 Stdio 传输,与 MCP 客户端无缝对接。
      • 额外提供 wrapper/launcher 辅助确保执行时不会弹出窗口或产生僵死进程。
  • 安装步骤

    • 安装前提:Node.js 18+,Windows OS。
    • 步骤1:克隆仓库并安装依赖
      • 通过 npm install 安装所需依赖。
    • 步骤2:启动 MCP 服务器
      • 直接运行 index.js(Windows 下确保 Node 18+ 环境,index.js 使用 ES 模块语法,直接 node index.js 即可启动)。
    • 步骤3:在 MCP 客户端中进行配置
      • 将服务器作为 MCP 客户端可用的后端,配置其启动命令与参数,使 MCP 客户端可以通过 JSON-RPC 调用上述工具。
  • 服务器配置(MCP 客户端需要的启动信息) 为了方便集成,下面给出准确的配置示例信息,非代码块呈现,便于理解。实际使用时请按你的 MCP 客户端配置 JSON 格式填写。

    { "mcpServers": { "cmd": { "command": "node", "args": ["C:\path\to\MCP_CMD\index.js"], "autoApprove": ["cmd_run", "cmd_batch", "powershell_run", "system_info", "process_list", "process_cleanup", "show_security_rules"] } // 说明: // - "cmd" 为服务器在 MCP 客户端中的名称标识。 // - command/args 指定启动 MCP_CMD 的命令及参数,请替换成实际路径。 // - autoApprove 列表中的工具将自动授权给该 MCP 服务器使用。 } }

  • 基本使用方法

    • 启动后,MCP 客户端可以通过 JSON-RPC 调用以下工具:
      • cmd_run:传入 command、cwd、timeout,请求执行单条 CMD 命令。
      • cmd_batch:传入多条命令对象数组、timeout、continueOnError,批量执行。
      • powershell_run:传入 command、cwd、timeout,执行 PowerShell 命令。
      • system_info:获取系统信息的诊断输出。
      • process_list:列出相关进程,便于排查。
      • process_cleanup:清理历史进程,释放资源。
      • show_security_rules:查看当前服务器的安全配置与限制。
    • 使用时请务必遵守安全规则,如命令长度、输出大小、以及项目根目录内的文件操作安全检查。
  • 注意事项

    • 本实现包含 anti-hang 与 anti-zombie 机制,确保在命令执行超时或客户端异常关闭时,能彻底清理相关进程树。
    • 服务器通过 STDIO 传输 JSON-RPC 数据,与 LLM 客户端的交互需要正确的调用格式和参数结构。
  • 适用场景

    • 需要在本地 Windows 环境中为大模型/LLM 客户端提供可控的系统命令执行能力、系统信息、以及进程管理等后端工具的场景。
  • 备注

    • 本仓库还提供 wrapper.js 与 launcher.cs 等辅助实现,用以提升命令执行的稳定性和防止弹窗、僵死子进程等问题,适合对鲁棒性要求较高的使用场景。

服务器信息