项目简介

Shell Command MCP Server 是一个实现了 Model Context Protocol (MCP) 协议的服务器,它允许你通过 MCP 客户端(如 Claude for Desktop)安全地在 Docker 容器中执行 shell 命令。这个服务器提供了一个隔离的环境,避免直接访问主机 Docker 守护进程,增强了安全性。同时,它预装了常用的 Kubernetes 工具,方便进行 Kubernetes 集群管理。

主要功能点

  • 安全 Shell 命令执行: 通过 MCP 协议提供执行 shell 命令的能力,所有命令在隔离的 Docker 容器中运行。
  • 内置 Kubernetes 工具: 容器预装 'kubectl', 'helm', 'kustomize', 'k9s' 等 Kubernetes 工具,方便用户进行集群操作。
  • 隔离的 Docker 环境: 命令在非 root 用户的 Docker 容器中执行,与宿主机环境隔离,提高安全性。
  • 用户工作区持久化: 通过 Docker Volume Mount 将宿主机目录挂载到容器,实现用户工作区的文件持久化。

安装步骤

  1. 安装 Docker: 确保你的机器上已经安装并运行 Docker。
  2. 拉取 Docker 镜像: 使用 Docker 命令拉取 'ghcr.io/kaznak/shell-command-mcp:v1.0.0' 镜像。
    docker pull ghcr.io/kaznak/shell-command-mcp:v1.0.0

服务器配置

MCP 客户端需要配置连接到 Shell Command MCP Server 的信息。以下是 Claude for Desktop 的配置示例,你需要将这段 JSON 配置添加到 Claude for Desktop 的配置文件中。

MacOS 配置示例:

{
  "shell-command": {
    "serverName": "shell-command",  // 自定义的服务名称,用于在客户端中标识
    "command": "docker",         // 启动服务器的命令,这里使用 docker
    "args": [                    // 启动服务器命令的参数
      "run",
      "--rm",                     // 容器退出后自动删除
      "-i",                       // 保持 STDIN 打开
      "--mount",                  // 挂载宿主机目录到容器
      "type=bind,src=/Users/你的用户名/ClaudeWorks,dst=/home/mcp/ClaudeWorks", // 将宿主机 /Users/你的用户名/ClaudeWorks 目录挂载到容器的 /home/mcp/ClaudeWorks,请替换为你的实际目录
      "ghcr.io/kaznak/shell-command-mcp:v1.0.0" // 使用的 Docker 镜像
    ]
  }
}

Windows 配置示例:

{
  "shell-command": {
    "serverName": "shell-command",  // 自定义的服务名称,用于在客户端中标识
    "command": "docker",         // 启动服务器的命令,这里使用 docker
    "args": [                    // 启动服务器命令的参数
      "run",
      "--rm",                     // 容器退出后自动删除
      "-i",                       // 保持 STDIN 打开
      "--mount",                  // 挂载宿主机目录到容器
      "type=bind,src=\\\\wsl.localhost\\Ubuntu\\home\\你的用户名\\ClaudeWorks,dst=/home/mcp/Works", // 将宿主机 WSL Ubuntu 的 /home/你的用户名/ClaudeWorks 目录挂载到容器的 /home/mcp/Works,请替换为你的实际目录
      "ghcr.io/kaznak/shell-command-mcp:v1.0.0" // 使用的 Docker 镜像
    ]
  }
}

注意:

  • 请将配置示例中的 '/Users/你的用户名/ClaudeWorks' (MacOS) 或 '\\wsl.localhost\Ubuntu\home\你的用户名\ClaudeWorks' (Windows) 替换为你希望在容器中访问的宿主机目录。这个目录将被挂载到容器内部,使得容器可以访问和操作宿主机上的文件。
  • 'serverName' 字段可以自定义,用于在 MCP 客户端中识别和使用这个服务器。

基本使用方法

配置完成后,在 MCP 客户端中(例如 Claude for Desktop),你就可以使用 'execute-command' 工具来执行 shell 命令了。

工具名称: 'execute-command'

工具描述: 在 bash 中执行 shell 命令。每次命令执行都会启动一个新的 bash 进程。

工具参数:

  • 'command': 要执行的 shell 命令,字符串类型。
  • 'options': 可选参数,对象类型,包含以下字段:
    • 'cwd': 命令执行的工作目录,字符串类型,可选。
    • 'env': 命令执行的环境变量,键值对对象,可选。
    • 'timeout': 命令执行超时时间,毫秒,整数,可选。

使用示例 (在 Claude 中):

你可以通过自然语言指令或 Claude 的工具调用功能来使用 'execute-command' 工具。例如,你可以指示 Claude 执行 'ls -l /home/mcp/ClaudeWorks' 命令来查看挂载目录的内容。

{
  "tool_calls": [
    {
      "id": "tool_call_id",
      "type": "function",
      "function": {
        "name": "execute-command",
        "arguments": {
          "command": "ls -l /home/mcp/ClaudeWorks"
        }
      }
    }
  ]
}

服务器会将命令的 'stdout' (标准输出), 'stderr' (标准错误输出) 和 'exitCode' (退出码) 返回给客户端。

信息

分类

开发者工具