项目简介 'wcli0' 是一个基于 Model Context Protocol (MCP) 构建的服务器,专为Windows系统提供增强型命令行接口访问能力。它允许大型语言模型 (LLM) 客户端(如Claude Desktop)安全地在您的系统上执行命令、访问文件和管理环境。该服务器支持多种Shell环境,并集成了强大的安全控制、日志管理和灵活的配置系统,确保操作的可控性和可追溯性。
主要功能点
- 多Shell支持: 可以在 PowerShell, Command Prompt (CMD), Git Bash, Bash 和 WSL 环境中执行命令。
- 安全控制: 提供命令阻止、工作目录限制、最大命令长度、命令超时以及Shell注入保护等多种安全机制。
- 灵活配置: 基于继承的配置系统,支持全局默认设置和Shell特定的覆盖,方便根据需求进行定制。
- 日志管理: 自动存储命令执行日志,并提供MCP资源接口供客户端查询历史输出,支持范围查询和模式搜索。
- 资源暴露: 将服务器配置和安全设置作为MCP资源暴露给客户端,便于LLM理解和交互。
- 工作目录管理: 服务器维护一个活跃的工作目录状态,支持查询和设置当前工作目录。
安装步骤
- 安装 Node.js: 确保您的系统已安装 Node.js 18 或更高版本。
- 安装 wcli0: 在命令行中运行以下命令安装 'wcli0':
或通过 'npx' 直接运行:npm install -g wcli0npx wcli0 --help - 可选:生成默认配置文件: 您可以使用以下命令在指定路径生成一个默认的配置文件作为起点,以便进行自定义:
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' 服务器交互,调用其提供的工具和访问资源。
- 执行命令: LLM 可以调用 'execute_command' 工具来执行特定Shell中的命令。
例如,在 PowerShell 中列出当前目录:
{ "tool_code": "execute_command", "args": { "shell": "powershell", "command": "Get-ChildItem", "workingDir": "C:\\Users\\YourUser\\Documents" } } - 获取配置: LLM 可以调用 'get_config' 工具获取服务器的当前配置(不含敏感信息)。
{ "tool_code": "get_config", "args": {} } - 设置工作目录: LLM 可以调用 'set_current_directory' 工具来设置服务器的当前活跃工作目录。
{ "tool_code": "set_current_directory", "args": { "path": "D:\\MyProjects" } } - 访问日志资源: LLM 可以通过 MCP 资源URI 访问命令执行日志。 例如,获取最近的10条日志: 'cli://logs/recent?n=10' 或者查询特定命令的完整输出: 'cli://logs/commands/{execution_id}'
信息
分类
开发者工具