返回市场
MCP壳程序

MCP壳程序

作者:hdresearch38 星标更新:2024-12-11

项目介绍

Shell MCP 服务器

基于 Node.js 实现的 Model Context Protocol (MCP),提供安全的 shell 命令执行能力。此服务器允许 AI 模型在具有内置安全措施的受控环境中执行 shell 命令。通过与 Claude Desktop 集成,可以连接 Claude 和您的 shell。

功能

  • 符合 MCP 协议的服务器实现
  • 具有黑名单保护的安全命令执行
  • 命令存在验证
  • 基于标准 I/O 的传输
  • 错误处理及优雅关闭

安装

运行 npx mcp-shell

要将其添加到 Claude Desktop,请运行 npx mcp-shell config。或者手动将 npx -y mcp-shell 添加到您的配置中。

启动(或重启)Claude Desktop,您应该会在登录页面看到 MCP 工具。

安全特性

服务器实现了多项安全措施:

  1. 命令黑名单

    • 阻止危险系统命令的执行
    • 阻止对关键系统修改的访问
    • 保护文件系统不被破坏
    • 防止权限提升
  2. 命令验证

    • 在执行前验证命令的存在性
    • 对比黑名单进行验证
    • 对无效命令返回清晰的错误信息

可用工具

服务器提供一个工具:

run_command

执行 shell 命令并返回其输出。

输入模式:

{
  "type": "object",
  "properties": {
    "command": { "type": "string" }
  }
}

响应:

  • 成功:命令输出作为纯文本
  • 错误:错误消息作为纯文本

黑名单命令

以下命令类别因安全原因被阻止:

  • 文件系统破坏命令(rm, rmdir, del)
  • 磁盘/文件系统命令(format, mkfs, dd)
  • 权限/所有权命令(chmod, chown)
  • 权限提升命令(sudo, su)
  • 代码执行命令(exec, eval)
  • 系统通信命令(write, wall)
  • 系统控制命令(shutdown, reboot, init)

错误处理

服务器包括全面的错误处理:

  • 命令未找到错误
  • 黑名单命令错误
  • 执行错误
  • MCP 协议错误
  • 接收到 SIGINT 信号时优雅关闭

实现细节

服务器构建使用:

  • Model Context Protocol SDK
  • StdioServerTransport 进行通信
  • execa 执行命令
  • command-exists 验证命令

开发

要修改安全设置,您可以:

  1. 编辑 BLACKLISTED_COMMANDS 集合以调整被阻止的命令
  2. 修改 validateCommand 函数以添加额外的验证规则
  3. 增强 CallToolRequestSchema 处理程序中的命令解析逻辑