Shell命令执行服务器

一个为AI助手提供持久化Shell命令执行能力的MCP服务器,支持跨平台、后台执行和会话管理。

  • by samihalawa
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 samihalawa/mcp-server-shell-exec

使用说明

Shell执行MCP服务器

一种模型上下文协议(MCP)服务器,为Claude和其他兼容MCP的AI助手提供持久的shell命令执行功能。

特性

  • 持久Shell会话:维护同一会话中命令之间的状态
  • 后台执行:在后台运行命令,并进行适当的进程管理
  • 交叉平台的:可在macOS、Linux和Windows上使用适当的shell
  • 超时控制:配置命令执行超时以防止挂起
  • 会话重置:如果需要,可以重置shell会话

安装

# Clone the repository
git clone https://github.com/samihalawa/mcp-server-shell-exec.git
cd mcp-server-shell-exec

# Install dependencies
npm install

# Make the server executable
chmod +x server.js

用法

启动服务器

npm start

配置

将服务器添加到MCP配置中:

macOS/Linux

{
  "mcpServers": {
    "shell-exec-server": {
      "command": "/path/to/node",
      "args": [
        "/absolute/path/to/mcp-server-shell-exec/server.js"
      ]
    }
  }
}

视窗

{
  "mcpServers": {
    "shell-exec-server": {
      "command": "node",
      "args": [
        "C:\\path\\to\\mcp-server-shell-exec\\server.js"
      ]
    }
  }
}

可用工具

执行命令

在持久shell会话中执行shell命令。

参数:

  • command (string,必填):要执行的shell命令
  • runInBackground (boolean,可选):是否在后台运行命令。默认值:false
  • timeoutMs (number,可选):命令的超时时间(毫秒)。默认值:30000

退货:

  • success (boolean):命令执行是否成功
  • output (string):命令执行的输出

重置外壳

重置shell会话。这将终止当前会话并启动新会话。

参数:无

退货:

  • success (boolean):shell是否重置成功
  • message (string):状态消息

示例用法

  1. 执行一个简单的命令:

    execute-command(command: "ls -la")
    
  2. 在后台运行一个长时间运行的命令:

    execute-command(command: "sleep 60 && echo 'Done'", runInBackground: true)
    
  3. 执行具有自定义超时的命令:

    execute-command(command: "find / -name '*.js'", timeoutMs: 60000)
    
  4. 重置shell会话:

    reset-shell()
    

运作原理

服务器使用Node.js创建一个shell进程来维护命令之间的状态。这允许:

  • 在命令之间保持不变的环境变量
  • 工作目录保持一致
  • 后台进程继续运行
  • 需要stdin/stdout的交互式命令

需求

  • Node.js 14+
  • 与Claude Desktop、Cursor和其他MCP兼容应用程序兼容

故障排除

如果遇到MCP服务器问题,请检查以下内容:

常见错误:工具执行失败

如果您看到“工具执行失败”错误,请检查:

  1. 服务器运行正常
  2. 您的配置文件使用绝对路径
  3. 更改配置后,您已重新启动客户端应用程序

测试服务器

您可以通过发送命令直接测试服务器:

echo '{"id":"test1","jsonrpc":"2.0","method":"execute-command","params":{"command":"echo \"Hello World\""}}' | node server.js

这应该返回一个格式正确的JSON响应和输出。

配置路径问题

仔细检查配置中的路径:

  • 使用绝对路径而不是相对路径
  • 对于Windows用户,请在路径中使用正斜杠(/)或转义反斜杠(\)
  • 验证服务器文件路径是否正确