Linux命令执行系统

Linux Command MCP是一个基于Model Context Protocol(MCP)的远程命令执行系统,支持安全、标准化的Linux命令执行。

  • by xkiranj
  • TypeScript
  • 本地部署
  • 25 星标
  • 更新于
在 GitHub 查看 xkiranj/linux-command-mcp

使用说明

Linux命令MCP(模型上下文协议)

概述

Linux命令MCP是一个使用模型上下文协议(MCP)构建的远程命令执行系统,允许安全和标准化地执行Linux命令。

Claude桌面MCP服务器的配置

了解配置

MCP服务器配置在 claude_desktop_config.json 文件,通常位于 ~/.config/Claude/claude_desktop_config.json.

配置结构

"mcpServers": {
  "server-name": {
    "command": "node|npx|uvx",
    "args": ["server-specific-arguments"],
    "env": {
      "OPTIONAL_ENVIRONMENT_VARIABLES": "value"
    }
  }
}

Linux命令MCP服务器配置

"linux-command": {
  "command": "node",
  "args": [
    "/full/path/to/linux-command-mcp/server/dist/index.js"
  ]
}

配置说明

  • "command":指定执行者(node, npx, uvx)
  • "args":服务器可执行文件的完整路径
  • 确保路径是通往您的绝对路径 index.js

重要配置提示

  • 始终使用完整、绝对路径
  • 验证文件权限
  • 确保指定的文件是可执行的

先决条件

  • Node.js(v18.x或更高版本)
  • npm
  • PM2(用于过程管理)

安装

  1. 克隆存储库
git clone <repository-url>
cd linux-command-mcp
  1. 安装服务器依赖项
cd server
npm install
npm run build
  1. 安装客户端依赖项
cd ../client
npm install
npm run build

用法

启动服务器

  1. 导航到服务器目录
cd server
  1. 从PM2开始
npm run pm2:start

使用客户端

可用命令:

  1. 执行 -执行Linux命令
  2. list[目录]-列出目录内容
  3. help-显示此帮助
  4. exit-退出客户端

直接执行命令:

# In the client directory
npm start 
exec "ls -l"
exec "list /home"
exec "uname -a"

交互式命令和Stdin支持

✨ 新:Linux命令MCP服务器现在支持通过stdin的交互式脚本!

使用stdin参数

现在,您可以使用 stdin 参数:

// Example: Run an interactive Python game
await callTool('execute-command', {
  command: 'python3 /path/to/interactive_script.py',
  stdin: '15\n2\n1\n2\n1\n'  // Automated responses
});

它是如何工作的:

  • 这 stdin 参数在执行之前向脚本发送输入
  • 输入是逐行发送的(使用 \n 对于新生儿)
  • 脚本运行至完成,并自动响应
  • 所有输出都被捕获并返回

交互式脚本示例

带输入的Python游戏:

# Game expects: number of sticks, then player moves
stdin: "15\n2\n1\n2\n1\n"

安装向导:

# Wizard expects: username, email, confirm
stdin: "johndoe\njohn@example.com\ny\n"

多选提示:

# Script shows options 1-5, user selects option 3
stdin: "3\n"

Sudo命令

重要提示:Linux命令MCP服务器仍然无法执行 sudo 需要密码提示的命令。

对于sudo命令:

  1. 使用适当的权限手动执行命令
  2. 或者为特定命令配置无密码sudo
  3. 或者对非sudo交互式脚本使用stdin参数

故障排除

  • 确保PM2正在运行: pm2 list
  • 检查服务器日志: pm2 logs linux-command-mcp-server
  • 验证服务器和客户端版本

在Claude Desktop中使用Linux命令

交互示例

以下是一些安全、通用的示例,说明如何让Claude运行Linux命令:

  1. 检查系统信息

    • “你能给我看看Linux内核版本吗?”
    $ uname -r
    
  2. 列出目录内容

    • “显示主目录的内容”
    $ ls ~
    
  3. 检查可用磁盘空间

    • “此系统上的磁盘使用情况如何?”
    $ df -h
    
  4. 查看系统正常运行时间

    • “这个系统运行多久了?”
    $ uptime
    
  5. 检查网络接口

    • “有哪些可用的网络接口?”
    $ ip addr
    
  6. 系统内存信息

    • “你能给我看看内存的使用情况吗?”
    $ free -h
    

重要使用指南

  • 隐私:仅运行不泄露敏感信息的命令
  • 安全:避免使用修改系统配置的命令
  • 范围:专注于信息和诊断命令

避免什么

❌ 请勿运行以下命令:

  • 显示个人文件名或路径
  • 包含敏感的系统配置
  • 修改系统设置
  • 需要sudo或root权限

对话示例

用户:“你能检查一下Linux内核版本吗?”

克劳德:当然!我将运行该命令以显示Linux内核版本。

$ uname -r
5.15.0-91-generic

此内核运行的是Ubuntu 22.04.3 LTS。

安全注意事项

  • 仅在受信任的网络上运行此操作
  • 限制对服务器的访问
  • 执行命令时要小心

安全和最佳实践

  • 始终注意您所请求的信息
  • 使用提供系统级非敏感信息的命令
  • 如有疑问,请克劳德澄清命令的目的

贡献

通过以下方式改进和扩展Linux命令MCP:

  • 添加更多安全、通用的命令示例
  • 加强文件编制
  • 建议改进命令执行

许可证

MIT许可证

联系

  • 电子邮件:xkiranj.1980@gmail.com

  • 区块链:0xkiran.eth

    • 以太坊:0x67F367edb83d8fdF48E7Cfcb35183e746c292c
    • 比特币:bc1q688np092y8raxag5e6573chrcgck5756yv476v