项目简介

本项目提供一个基于 Docker 容器运行的 MCP (Model Context Protocol) 服务器,旨在将 Kali Linux 环境中的安全工具和常用命令以标准化的方式提供给支持 MCP 协议的 LLM 客户端(如 Claude Desktop)。它在一个隔离的沙箱环境中执行命令,增强安全性,并通过内置的健康检查确保服务的可靠性。

主要功能点

  • 容器化运行环境: 将 Kali Linux 工具和 MCP 服务器运行在独立的 Docker 容器中,确保环境一致性和隔离性。
  • 隔离安全环境: 在沙箱环境中执行 Kali 工具,减少对宿主系统的潜在风险。
  • 标准 MCP 接口: 实现 MCP 协议,通过 JSON-RPC 与 LLM 客户端通信,支持工具调用、资源访问和 Prompt 定义(当前资源和 Prompt 功能为空)。
  • 丰富的工具集: 提供文件系统操作(读、写、列目录、移动、搜索)、终端命令执行、进程管理、文件内容编辑等工具。
  • 安全配置: 支持配置允许访问的目录 ('allowedDirectories') 和阻止执行的命令 ('blockedCommands'),增强安全性。
  • 可配置: 可定制服务器端口等设置。
  • 状态监控: 提供健康检查端点。

安装步骤

在开始之前,请确保您的系统已安装以下软件:

  • Docker (v20.10.0+)
  • Docker Compose (v2.0.0+)
  • Git
  • Node.js (v16+,仅用于构建和测试,非运行 MCP 服务器所必需)

请按照以下步骤安装和启动 MCP 服务器:

  1. 克隆仓库:
    git clone https://github.com/house-of-stark/Claude-Kali-MCP-Commander.git
    cd Claude-Kali-MCP-Commander
  2. 选择构建配置文件:
    • 最小化构建 (推荐): 仅包含 MCP 服务器的小尺寸镜像。
      ./build.sh minimal
      docker-compose up -d
    • 完整构建: 包含完整的 Kali Linux 和所有工具(镜像尺寸较大)。
      ./build.sh full
      docker-compose -f docker-compose.full.yml up -d
  3. 验证服务状态:
    curl http://localhost:8081/health
    如果返回 '{"status":"ok"}',表示健康检查服务已启动。

服务器配置

MCP 服务器本身通常不需要用户直接配置,而是由 MCP 客户端(如 Claude Desktop)来配置如何启动并连接到它。您需要在 Claude Desktop 的配置文件 ('claude_desktop_config.json') 中添加或修改 MCP 服务器的启动信息。

'claude_desktop_config.json' 文件通常位于用户主目录下的 Claude 配置目录中(例如:Windows 为 '%APPDATA%\Claude',macOS 为 '~/Library/Application Support/Claude',Linux 为 '~/.config/Claude')。

请在 'claude_desktop_config.json' 文件中添加或修改 'mcpServerUrl'、'projectPath' 和 'mcpServers' 部分,参考以下结构(请勿直接复制以下代码块,仅作为配置内容的说明):

{
  // MCP 服务器的基础 URL,用于健康检查等,应指向宿主机的端口
  "mcpServerUrl": "http://localhost:8081", 

  // 本仓库在您系统上的完整路径
  "projectPath": "/path/to/Claude-Kali-MCP-Commander",

  // 定义 Claude Desktop 如何启动和管理不同的 MCP 服务器进程
  "mcpServers": {
    // 定义 Kali Linux MCP 服务器的启动方式
    "kali-mcp": {
      // 用于启动服务器进程的命令 (这里是 docker exec)
      "command": "docker", 
      // 命令参数 (这里是 exec 到正在运行的容器中执行 npx ...)
      "args": [ 
        "exec", 
        "-i", 
        "kali-mcp-commander-minimal", // Docker 容器的名称
        "npx", 
        "@wonderwhy-er/desktop-commander" // 在容器内运行的 MCP 服务器包
      ],
      // 在 Claude Desktop 界面中显示的服务器名称
      "name": "Kali Linux MCP", 
      // 服务器描述
      "description": "Access Kali Linux security tools via MCP" 
    },
    // 可选:定义在宿主操作系统上运行 MCP 服务器的启动方式
    "desktop-commander": {
      "command": "npx",
      "args": [
        "@wonderwhy-er/desktop-commander@latest" // 在宿主机上运行的 MCP 服务器包
      ],
      "name": "Host OS Commander",
      "description": "Access commands on the host OS where Claude Desktop is installed"
    }
  },
  // 设置默认使用的 MCP 服务器 ID
  "defaultMcpServerId": "kali-mcp" 
}

请根据您的实际情况填写 'projectPath' 的值,并确保 'kali-mcp-commander-minimal' 容器正在运行。配置完成后,重启 Claude Desktop 客户端。

您也可以使用仓库中的 'setup-claude-server.js' 脚本(通过 'npx @wonderwhy-er/desktop-commander setup' 命令运行)来辅助配置 'claude_desktop_config.json' 文件,但请注意该脚本默认配置的是宿主 OS 的 Commander,可能需要手动修改以指向 Kali Docker 容器。最可靠的方法是按照上述说明手动编辑配置文件。

基本使用方法

  1. 启动 Docker 容器: 确保您已经按照安装步骤成功启动了 'docker-compose up -d' 命令,并且容器 ('kali-mcp-commander-minimal') 正在后台运行。
  2. 配置并重启 Claude Desktop: 按照上一节说明修改 'claude_desktop_config.json' 文件并重启 Claude Desktop 客户端。
  3. 通过 LLM 交互: 在 Claude Desktop 中,当与 LLM 模型对话时,您可以请求它使用已配置的 MCP 服务器提供的工具。例如,您可以尝试:
    • 询问 LLM 列出特定目录下的文件(使用 'list_directory' 工具)。
    • 请求 LLM 执行一个 Kali Linux 命令(使用 'execute_command' 工具)。
    • 请 LLM 读取或修改一个文件(使用 'read_file', 'write_file', 'edit_block' 等工具)。
    • 请求 LLM 查找文件内容(使用 'search_code' 工具)。

LLM 会识别并调用相应的 MCP 工具来完成您的请求,并将结果反馈给您。

信息

分类

桌面与硬件