使用说明
项目简介
MCP命令执行器是一个实现了 Model Context Protocol (MCP) 的服务器,它提供了一个 工具 (Tool),允许授权的 LLM 客户端安全地执行预先配置的系统命令。该服务器通过白名单机制和沙箱环境增强安全性,防止恶意命令执行,为 LLM 应用提供安全可控的系统命令执行能力。
主要功能点
- 安全命令执行: 仅执行配置在允许列表中的命令,防止未授权命令的执行。
- 可配置的命令白名单: 通过配置文件或环境变量灵活配置允许执行的命令列表。
- 工作目录限制: 可以设置默认工作目录和允许访问的目录,限制命令执行的文件系统范围。
- 环境变量管理: 支持全局和命令级别的环境变量配置,灵活控制命令执行环境。
- 详细日志记录: 提供可配置的日志记录,方便审计和问题排查。
- 易于集成: 可以通过标准的 MCP 协议与各种 LLM 客户端集成,例如 Claude Desktop。
安装步骤
- 安装 Go 环境: 确保您的系统已安装 Go 1.24 或更高版本。
- 安装 MCP命令执行器: 使用 'go install' 命令直接安装:
或者,您也可以克隆仓库手动构建:go install github.com/cnosuke/mcp-command-exec
安装成功后,'mcp-command-exec' 可执行文件通常位于 '$GOPATH/bin' 或 '$HOME/go/bin' 目录下。git clone https://github.com/cnosuke/mcp-command-exec.git cd mcp-command-exec make build
服务器配置
MCP 客户端需要配置 MCP 服务器的连接信息才能使用命令执行功能。以下是 Claude Desktop 客户端的 'claude_desktop_config.json' 配置文件示例,展示了如何配置 'mcp-command-exec' 服务器:
{ "mcpServers": { "command": { // 服务器名称,客户端用于标识和引用 "command": "./bin/mcp-command-exec", // MCP服务器的可执行文件路径,请根据实际安装路径修改 "args": ["server"], // 启动服务器的命令行参数,这里是 "server" 表示启动服务器模式 "env": { // 环境变量配置,可以用来覆盖配置文件中的设置 "LOG_PATH": "mcp-command-exec.log", // 日志文件路径 "DEBUG": "false", // 是否启用Debug模式,true 或 false "ALLOWED_COMMANDS": "git,ls,cat,echo,find" // 允许执行的命令列表,逗号分隔 } } } }
配置说明:
- 'server name' (例: "command"): 您为该 MCP 服务器指定的名称。在客户端中,您将使用此名称来引用此服务器。
- 'command': 指向 'mcp-command-exec' 服务器可执行文件的路径。请根据您的实际安装位置进行调整。如果 'mcp-command-exec' 位于系统的 PATH 环境变量中,则可以直接使用 'mcp-command-exec'。
- 'args': 启动服务器所需的命令行参数。对于 'mcp-command-exec',使用 '["server"]' 表示以服务器模式启动。
- 'env': 一个 JSON 对象,用于设置服务器启动时的环境变量。
- 'LOG_PATH': 指定日志文件的存储路径。如果为空字符串,则不生成日志。
- 'DEBUG': 布尔值,设置为 '"true"' 启用 Debug 模式,输出更详细的日志。
- 'ALLOWED_COMMANDS': 逗号分隔的字符串,列出允许执行的系统命令。此配置会覆盖配置文件中的 'allowed_commands' 设置。您可以根据需要添加或删除命令,例如 '"git,ls,mkdir,cd,npm,npx,python"'。
配置文件 (config.yml):
'mcp-command-exec' 服务器默认从 'config.yml' 文件加载配置。您可以在该文件中配置更详细的服务器行为,例如:
# Logging configuration log: 'log/mcp-command-exec.log' # 日志文件路径 debug: false # 是否启用Debug模式 command_exec: allowed_commands: # 默认允许执行的命令列表 - git - ls - mkdir - cd - npm - npx - python default_working_dir: '/home/user' # 默认工作目录 allowed_dirs: # 允许访问的目录列表 - '/home/user/projects' - '/tmp' search_paths: # 命令搜索路径 - '/usr/local/bin' - '/usr/bin' path_behavior: 'prepend' # 路径行为,可选值:prepend, replace, append environment: # 全局环境变量 HOME: '/home/user' GOPATH: '/home/user/go' GOMODCACHE: '/home/user/go/pkg/mod' LANG: 'en_US.UTF-8'
您可以根据需要修改 'config.yml' 文件,或者通过在 'claude_desktop_config.json' 的 'env' 字段中设置环境变量来覆盖配置。
基本使用方法
-
启动 MCP 服务器: 确保已按照上述配置正确设置 'claude_desktop_config.json' 或其他 MCP 客户端的配置文件。启动 Claude Desktop 或其他 MCP 客户端,客户端会自动启动并连接到 'mcp-command-exec' 服务器。
-
调用 'command_exec' 工具: 在 LLM 客户端中,您可以使用 'command_exec' 工具来执行系统命令。例如,在 JSON-RPC 请求中,您可以构造如下请求来调用 'command_exec' 工具执行 'ls -la' 命令:
{ "method": "tool", "id": "1", "params": { "name": "command_exec", "input": { "command": "ls -la", // 要执行的命令 "working_dir": "/home/user/project", // 可选:命令执行的工作目录 "env": { // 可选:命令执行的环境变量 "DEBUG": "1", "LANG": "en_US.UTF-8" } } } }服务器将执行 'ls -la' 命令,并将命令的输出结果(stdout 和 stderr)作为 JSON-RPC 响应返回给客户端。
安全提示:
请务必仔细配置 'allowed_commands' 和 'allowed_dirs',只允许必要的命令和目录,以确保服务器和系统的安全。
信息
分类
桌面与硬件