终端访问服务器

为Claude提供终端访问功能,支持本地Shell和SSH桥接两种安全模式,适用于远程服务器管理和本地命令执行。

  • by FreeOnlineUser
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 FreeOnlineUser/shell-mcp

使用说明


许可证:mit 标签:

  • 主控程序
  • 克劳德
  • 外壳
  • 安全外壳协议
  • 窗户
  • Dotnet 语言:
  • 英语

壳牌MCP服务器

Claude的终端访问具有两种安全模式,以及用于远程服务器的SSH网桥。

特性

  • 本地shell 安全/危险指挥分离
  • SSH网桥 -用于安全远程服务器访问的GUI应用程序
  • 提笔 -立即暂停克劳德的命令执行
  • Sudo支持 -自动发送sudo命令的密码(选择加入)
  • 完全可见 -实时查看Claude运行的每个命令
  • 后台进程 -生成和管理长时间运行的任务
  • 文件 操作 -写入文件时不会出现shell转义问题

快速入门(预构建二进制文件)

从下载 release/ 文件夹:

  • shell-mcp.dll -Claude Desktop的MCP服务器
  • ssh-bridge.exe -SSH连接的图形用户界面

无需构建-只需配置Claude Desktop(见下文)。

组件

1.壳牌MCP(shell-mcp.dll)

具有可配置命令分配列表的本地Windows终端访问。

2.SSH网桥(ssh-bridge.exe)

WinForms图形用户界面:

  • 您使用密码(仅保存在内存中)进行身份验证
  • 克劳德通过它发送命令
  • 实时输出显示,语法高亮显示
  • 提笔 立即暂停克劳德的按钮
  • 洲户 按钮,为sudo命令启用自动密码
  • 针 使窗口保持在顶部的按钮
  • 右键单击上下文菜单:复制、全部复制、清除

安装

选项1:使用预构建的二进制文件

  1. 从下载文件 release/ 文件夹
  2. 配置Claude桌面(见下文)

选项2:从源代码构建

先决条件:

  • .NET 8.0 SDK
  • Windows 10/11
git clone https://github.com/FreeOnlineUser/shell-mcp.git
cd shell-mcp
dotnet restore
dotnet build ShellMcp.csproj -c Release
dotnet build SshBridge.csproj -c Release

配置Claude桌面

编辑 %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "shell_safe": {
      "command": "dotnet",
      "args": ["C:\\path\\to\\release\\shell-mcp.dll"],
      "env": {
        "SHELL_MCP_MODE": "safe",
        "SHELL_MCP_START_DIR": "C:\\your\\workspace",
        "SSH_BRIDGE_PATH": "C:\\path\\to\\release\\ssh-bridge.exe"
      }
    },
    "shell_dangerous": {
      "command": "dotnet",
      "args": ["C:\\path\\to\\release\\shell-mcp.dll"],
      "env": {
        "SHELL_MCP_MODE": "dangerous",
        "SHELL_MCP_START_DIR": "C:\\your\\workspace",
        "SSH_BRIDGE_PATH": "C:\\path\\to\\release\\ssh-bridge.exe"
      }
    }
  }
}

审批设置:

  • shell_safe → “始终允许”
  • shell_dangerous → “允许一次”(每次都问)

工具

本地shell

工具 说明
Shell 执行具有可选超时的本地命令
Pwd 获取当前工作目录
ShellInfo 显示模式和允许的命令列表
ShellBatch 按顺序运行多个命令

SSH工具

工具 说明
SshCommand 在远程服务器上执行命令
SshStatus 检查SSH网桥是否已连接
SshPrefill 预填充连接详细信息,并可选择自动连接
SshPenStatus 检查用户是否已暂停执行(提笔)
SshPenDown 请求恢复执行
SshAbort 发送Ctrl+C中止运行命令
SshIsRunning 检查命令当前是否正在执行
SshSetTimeout 设置下一个命令的超时时间(1-3600秒)
SshTail 获取最后50行终端输出
SshKillPort 终止在特定端口上侦听的进程
SshSpawn 使用可跟踪的名称启动后台进程
SshListSpawned 列出所有跟踪的后台进程
SshKillSpawned 按名称终止后台进程
SshWriteFile 无需shell转义即可将内容写入文件
SshAppendFile 在不转义shell的情况下将内容附加到文件

SSH网桥功能

提笔(暂停克劳德)

点击 提笔 立即暂停克劳德的命令执行。任何正在运行的命令都将中止,新命令将被阻止,直到您再次单击以继续。非常适合:

  • 回顾克劳德在做什么
  • 暂时采用手动控制
  • 紧急停止

Sudo支持

点击 洲户 为sudo命令启用自动密码输入。启用时:

  • 克劳德能跑 sudo 无提示的命令
  • 当sudo询问时,您的密码会自动发送
  • 密码仅在连接时保存在内存中

固定窗口

点击 针 以使SSH网桥窗口始终位于顶部。

交互式命令阻止

该桥会自动阻止会破坏shell的交互式命令:

  • 编辑: vim、nano、emacs(使用 echo 或 SshWriteFile 相反)
  • 寻呼机: 少,多(使用 cat, head, tail 相反)
  • TUI应用程序: htop,top(使用 top -b -n 1 或 ps aux)
  • 数据库: mysql、psql(使用 -e 或 -c 查询标志)
  • 多路复用器: tmux,屏幕(不支持)

每个被阻止的命令都显示了有用的替代方案。

安全模型

shell_safe(批准一次)

只读和构建命令:

  • dir, ls, type, cat, head, tail, find, grep, pwd, cd, tree
  • echo, date, time, whoami, hostname
  • git status, git log, git diff, git branch, git remote, git fetch, git show
  • dotnet build, dotnet run, dotnet test, dotnet restore
  • npm install, npm run, npm test, npm list, npm ci
  • node --version, yarn install, yarn build, yarn test

shell_dangerous(每次批准)

修改命令:

  • del, rm, rmdir, move, copy, mkdir
  • git push, git pull, git merge, git rebase, git reset, git commit, git add
  • taskkill, shutdown
  • npm install -g, npm uninstall

始终被阻止

  • format, diskpart, reg, regedit
  • net user, net localgroup
  • powershell -enc, rm -rf /, del /s /q c:\

SSH网桥安全

  • 密码仅保存在内存中,从不写入磁盘
  • 提起笔可立即暂停
  • 断开连接以立即撤销
  • 所有命令实时可见
  • 默认情况下禁用Sudo

输出句柄

  • 大输出会自动截断(最后150行返回给Claude)
  • 每个响应最大500KB
  • SSH Bridge窗口中的实时流式显示
  • 剥离ANSI转义码以获得干净的输出

依赖项

许可证

麻省理工学院