Shell命令MCP服务器

一个在Docker容器中执行Shell命令的MCP服务器,提供安全隔离的工作空间,支持同步和异步命令执行,并包含Kubernetes工具集。

  • by kaznak
  • TypeScript
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 kaznak/shell-command-mcp

使用说明

过时的

我建议通过运行以下命令来使用Claude Code claude mcp serve 而不是这个MCP服务器。 我创造了 ai代理工作区 作为运行Claude Code的容器。 请根据需要使用它。

Shell命令MCP服务器

这是一个MCP(模型上下文协议)服务器,允许在Docker容器中执行shell命令。它为运行命令提供了一个安全和隔离的工作区,而无需访问主机Docker守护进程。

特性

  • 通过简单的MCP界面运行shell脚本
    • 同步执行
    • 4种不同模式的异步执行
      • complete:命令完成时通知
      • line:在每一行输出上通知
      • chunk:通知每个输出块
      • character:通知输出的每个字符
  • Kubernetes工具包括:kubectl、helm、kustomize、hemfile
  • 具有非root用户的隔离Docker容器环境
    • 实现了主机容器userid/groupid映射。这允许容器以与主机相同的用户身份运行,确保容器创建的文件与主机创建的文件具有相同的所有权和权限。
    • 将主机目录挂载到容器/home/mcp目录以实现持久性。它成为AI工作的主目录。
    • 如果主机目录为空,则初始文件将从容器中的备份中复制。

设计理念

这个MCP服务器为AI提供了一个类似于人类的工作空间。 授权不受MCP功能的限制,而是受容器隔离和外部授权限制的限制。

它提供了更通用的工具,如shell脚本执行,因此可以在没有工具使用专业知识的情况下使用它们。

服务器实现尽可能简单,以方便代码审计。

入门指南

先决条件

  • 码头工人

使用Claude for Desktop

将以下配置添加到您的Claude for Desktop配置文件中。

MacOS:

"shell-command": {
  "command": "docker",
  "args": [
    "run",
    "--rm",
    "-i",
    "--mount",
    "type=bind,src=/Users/user-name/MCPHome,dst=/home/mcp",
    "ghcr.io/kaznak/shell-command-mcp:latest"
  ]
}

替换 /Users/user-name/ClaudeWorks 使用您要使容器可用的目录。

窗户:

"shell-command": {
   "command": "docker",
   "args": [
      "run",
      "--rm",
      "-i",
      "--mount",
      "type=bind,src=\\\\wsl.localhost\\Ubuntu\\home\\user-name\\MCPHome,dst=/home/mcp",
      "ghcr.io/kaznak/shell-command-mcp:latest"
   ]
}

提供一些提示

操作已挂载目录中的文件。

可用的MCP工具

安全考虑

  • MCP服务器在容器中以非root用户身份运行
  • 容器无权访问主机Docker守护进程
  • 用户工作区从主机装载以实现持久性

许可证

麻省理工学院