MCP Terminal Server 使用说明

项目简介

MCP Terminal Server 是一个实现了 Model Context Protocol (MCP) 的服务器,专注于提供安全的终端命令执行功能。它允许大型语言模型(LLM)客户端通过标准化的 MCP 协议,安全地调用服务器执行 shell 命令,并获取命令输出。该服务器特别强调安全性,通过限制允许执行的命令、防止命令注入和设置资源限制,来保护系统安全。

主要功能点

  • 命令执行: 允许 LLM 客户端请求执行 shell 命令。
  • 安全控制:
    • 白名单命令: 只允许执行预先配置的白名单中的命令,防止恶意命令执行。
    • 防止命令注入: 阻止 shell 操作符,避免命令注入攻击。
  • 资源控制:
    • 命令超时: 设置命令执行超时时间,防止命令无限期运行。
    • 输出大小限制: 限制命令输出的最大大小,防止资源耗尽。
  • MCP 协议支持: 完全实现了 MCP 协议,可以与任何兼容 MCP 协议的客户端进行通信。
  • 流式输出: 支持命令输出的流式传输。

安装步骤

  1. 安装 UV (推荐): 如果还没有安装 UV,推荐使用 UV 来管理 Python 环境和包。
    pip install uv
  2. 安装 MCP Terminal Server: 使用 UV 安装 'mcp-terminal' 包。
    uv pip install mcp-terminal

服务器配置

MCP 服务器需要配置在 MCP 客户端中才能使用。以 Claude Desktop 为例,需要在 'claude_desktop_config.json' 文件中配置 MCP 服务器信息。以下是一个示例配置,请根据你的实际需求修改 'args' 中的参数。

{
  "mcpServers": {
    "terminal": {  // 服务器名称,可以自定义,客户端通过此名称引用
      "command": "uv",  // 启动服务器的命令,这里使用 uv pip run 运行 mcp-terminal
      "args": [
        "pip",
        "run",
        "mcp-terminal", // 运行 mcp-terminal 包
        "--allowed-commands", // 允许执行的命令白名单,多个命令用逗号分隔
        "python,pip,git,ls,cd",
        "--timeout-ms",   // 命令执行超时时间,单位毫秒
        "30000",
        "--max-output-size", // 最大输出大小,单位字节
        "1048576"
      ]
    }
  }
}

配置参数说明:

  • '"terminal"': 服务器的名称,客户端将使用此名称来引用和调用该服务器。你可以自定义服务器名称。
  • '"command": "uv"': 启动服务器的命令。这里配置为 'uv',假设你已经安装了 'uv' 并将其添加到 PATH 环境变量中。如果使用 'python' 直接运行,可以修改为 '"command": "python"',并相应调整 'args'。
  • '"args"': 传递给启动命令的参数列表。
    • '"pip", "run", "mcp-terminal"': 使用 'uv pip run' 命令来运行 'mcp-terminal' 包。
    • '"--allowed-commands", "python,pip,git,ls,cd"': 重要安全配置,设置允许执行的命令白名单。请根据实际需要配置允许 LLM 调用的命令,并用逗号分隔。在生产环境中,务必设置此项以限制可执行的命令,避免安全风险。
    • '"--timeout-ms", "30000"': 设置命令执行的超时时间为 30000 毫秒 (30 秒)。可以根据命令执行的预期时间调整。
    • '"--max-output-size", "1048576"': 设置命令输出的最大大小为 1048576 字节 (1MB)。限制输出大小可以防止某些命令产生过多的输出导致内存耗尽。

注意: 请根据你的实际环境和安全需求,仔细配置 'allowed-commands' 参数,只允许必要的命令,并设置合理的 'timeout-ms' 和 'max-output-size'。

基本使用方法

配置完成后,在支持 MCP 协议的 LLM 客户端中(例如 Claude Desktop),你就可以通过配置的服务器名称 '"terminal"' 来调用 'run_command' 工具执行 shell 命令了。

例如,在 LLM 客户端中,可以构造一个 MCP 请求,调用 '"terminal"' 服务器的 '"run_command"' 工具,并传递要执行的命令作为参数。服务器会执行该命令,并将结果(包括退出码、标准输出、标准错误等)返回给客户端。

请参考 MCP 客户端的文档,了解如何配置和使用 MCP 服务器。

信息

分类

开发者工具