Back to MCP directory
publicPublicdnsLocal runtime

Shell MCP Server

一个基于Node.js的MCP协议实现,提供安全的Shell命令执行服务

article

README

🚀 Shell MCP 服务器

一个基于 Node.js 实现的模型上下文协议(MCP)服务,为您提供安全的 shell 命令执行功能。该服务器允许 AI 模型在受控环境中执行 shell 命令,内置了多重安全措施。它还能轻松集成到 Claude Desktop,实现 Claude 与您的 shell 之间的连接。

🚀 快速开始

运行 npx mcp-shell

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

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

✨ 主要特性

  • 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 信号时优雅关闭

实现细节

服务器使用以下技术构建:

  • 模型上下文协议 SDK
  • StdioServerTransport 进行通信
  • 使用 execa 执行命令
  • 使用 command-exists 验证命令是否存在

开发说明

要修改安全设置,可以执行以下操作:

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

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client