项目简介 'wcli0' 是一个基于 Model Context Protocol (MCP) 构建的服务器,专为Windows系统提供增强型命令行接口访问能力。它允许大型语言模型 (LLM) 客户端(如Claude Desktop)安全地在您的系统上执行命令、访问文件和管理环境。该服务器支持多种Shell环境,并集成了强大的安全控制、日志管理和灵活的配置系统,确保操作的可控性和可追溯性。

主要功能点

  • 多Shell支持: 可以在 PowerShell, Command Prompt (CMD), Git Bash, Bash 和 WSL 环境中执行命令。
  • 安全控制: 提供命令阻止、工作目录限制、最大命令长度、命令超时以及Shell注入保护等多种安全机制。
  • 灵活配置: 基于继承的配置系统,支持全局默认设置和Shell特定的覆盖,方便根据需求进行定制。
  • 日志管理: 自动存储命令执行日志,并提供MCP资源接口供客户端查询历史输出,支持范围查询和模式搜索。
  • 资源暴露: 将服务器配置和安全设置作为MCP资源暴露给客户端,便于LLM理解和交互。
  • 工作目录管理: 服务器维护一个活跃的工作目录状态,支持查询和设置当前工作目录。

安装步骤

  1. 安装 Node.js: 确保您的系统已安装 Node.js 18 或更高版本。
  2. 安装 wcli0: 在命令行中运行以下命令安装 'wcli0':
    npm install -g wcli0
    或通过 'npx' 直接运行:
    npx wcli0 --help
  3. 可选:生成默认配置文件: 您可以使用以下命令在指定路径生成一个默认的配置文件作为起点,以便进行自定义:
    npx wcli0 --init-config ./my-config.json

服务器配置 (供 MCP 客户端使用) 将以下JSON配置片段添加到您的MCP客户端(例如 'claude_desktop_config.json')中,以允许其连接到 'wcli0' 服务器。

{
  "mcpServers": {
    "windows-cli": {
      "command": "npx",
      "args": [
        "-y",
        "wcli0",
        "--config",
        "path/to/your/config.json" 
        // 可选:指定您的自定义配置文件路径,例如 "./my-config.json"
      ],
      "name": "Windows CLI", 
      // 可选:客户端UI中显示的服务器名称
      "description": "通过MCP安全地访问Windows命令行和Shell环境。" 
      // 可选:客户端UI中显示的服务器简要描述
    }
  }
}

配置参数注释:

  • 'mcpServers': 客户端配置中用于定义MCP服务器的顶级键。
  • 'windows-cli': 此服务器实例的唯一标识符(您可以自定义名称)。
  • 'command': 启动MCP服务器的可执行文件或命令。这里使用 'npx' 来运行 'wcli0' 包。
  • 'args': 传递给 'command' 的参数列表。
    • '-y': 'npx' 的参数,用于自动确认安装。
    • 'wcli0': 要运行的npm包名称。
    • '--config': (可选)指定要加载的配置文件路径。如果您在安装步骤中生成了自定义配置文件,请在此处提供其路径。
  • 'name': (可选)在客户端UI中显示给用户的服务器名称。
  • 'description': (可选)在客户端UI中显示给用户的服务器描述。

基本使用方法 (LLM 客户端调用)

一旦配置完成,您的LLM客户端就可以通过 MCP 协议与 'wcli0' 服务器交互,调用其提供的工具和访问资源。

  1. 执行命令: LLM 可以调用 'execute_command' 工具来执行特定Shell中的命令。 例如,在 PowerShell 中列出当前目录:
    {
      "tool_code": "execute_command",
      "args": {
        "shell": "powershell",
        "command": "Get-ChildItem",
        "workingDir": "C:\\Users\\YourUser\\Documents"
      }
    }
  2. 获取配置: LLM 可以调用 'get_config' 工具获取服务器的当前配置(不含敏感信息)。
    {
      "tool_code": "get_config",
      "args": {}
    }
  3. 设置工作目录: LLM 可以调用 'set_current_directory' 工具来设置服务器的当前活跃工作目录。
    {
      "tool_code": "set_current_directory",
      "args": {
        "path": "D:\\MyProjects"
      }
    }
  4. 访问日志资源: LLM 可以通过 MCP 资源URI 访问命令执行日志。 例如,获取最近的10条日志: 'cli://logs/recent?n=10' 或者查询特定命令的完整输出: 'cli://logs/commands/{execution_id}'

信息

分类

开发者工具