使用说明

项目简介

pty-mcp 是一个 MCP (Model Context Protocol) 工具服务器,它允许你通过 MCP 协议与服务器进行交互,并在服务器上执行 shell 命令。你可以通过会话 ID 管理多个独立的 shell 会话,每个会话保持各自的状态。

主要功能点

  • 远程命令执行: 允许 LLM 客户端在服务器上执行任意 shell 命令,并返回命令输出结果。
  • 交互式会话: 支持通过会话 ID 创建和管理多个独立的 shell 会话。每个会话是隔离的,拥有独立的 shell 环境和状态(例如,当前工作目录)。
  • 状态保持: 在同一会话 ID 下执行的命令会保持 shell 会话的状态,例如,在一个会话中 'cd' 到某个目录后,后续命令会在该目录下执行。

安装步骤

  1. 安装 pipx (推荐): 如果你还没有安装 pipx,请先安装它。pipx 可以帮助你在隔离的环境中安装和运行 Python 应用,避免依赖冲突。
    python -m pip install --user pipx
    pipx ensurepath
  2. 安装 pty-mcp: 使用 pipx 安装 pty-mcp 工具服务器。
    pipx install git+https://github.com/qodo-ai/pty-mcp.git
    安装完成后,'pty-mcp' 命令将可以在你的命令行中使用。

服务器配置

MCP 客户端需要配置以下信息来连接 pty-mcp 服务器。这是一个 JSON 格式的配置示例,你需要将其提供给你的 MCP 客户端:

{
  "server_name": "ShellToolServer",
  "command": "pty-mcp",
  "args": []
}

配置参数说明:

  • 'server_name': 服务器名称,这里设置为 "ShellToolServer",这是在 'pty_mcp.py' 代码中定义的服务器名称。MCP 客户端可能会使用这个名称来识别或选择服务器。
  • 'command': 启动 pty-mcp 服务器的命令。安装 pipx 后,可以直接使用 'pty-mcp' 命令启动服务器。
  • 'args': 启动命令的参数。pty-mcp 服务器本身不需要额外的命令行参数,所以这里配置为空数组 '[]'。

注意: 请确保你的 MCP 客户端能够读取并正确解析以上 JSON 配置信息,以便成功连接到 pty-mcp 服务器。

基本使用方法

  1. 启动 pty-mcp 服务器: 在你的服务器终端中运行 'pty-mcp' 命令来启动 pty-mcp 工具服务器。服务器启动后,会监听 MCP 客户端的请求。

  2. 配置 MCP 客户端: 在你的 LLM 应用或 MCP 客户端中,配置上面提供的 JSON 信息,指定连接到 "ShellToolServer" 服务器。

  3. 调用 'run' 工具: 通过 MCP 客户端向 pty-mcp 服务器发送 JSON-RPC 请求,调用 'run' 工具来执行 shell 命令。

    以下是一个调用 'run' 工具的示例请求 (JSON-RPC 格式,具体发送方式取决于你的 MCP 客户端):

    {
      "jsonrpc": "2.0",
      "method": "run",
      "params": {
        "session_id": "session1",
        "command": "ls -l /tmp"
      },
      "id": 1
    }
    • 'method': 指定要调用的工具名称,这里是 'run'。
    • 'params': 传递给 'run' 工具的参数。
      • 'session_id': 会话 ID,例如 "session1"。如果会话不存在,服务器会自动创建一个新的会话。
      • 'command': 要执行的 shell 命令,例如 "ls -l /tmp"。
    • 'id': 请求 ID,用于匹配请求和响应。
  4. 接收响应: MCP 服务器会返回 JSON-RPC 响应,其中包含命令的执行结果。

    示例响应 (成功执行):

    {
      "jsonrpc": "2.0",
      "result": "总用量 0\ndrwxrwxrwt 2 root root 40 1月  1 08:00 systemd-private-...\ndrwxrwxrwt 2 user user  6 1月  1 08:00 user-runtime-dir-...",
      "id": 1
    }

    示例响应 (命令超时或错误):

    {
      "jsonrpc": "2.0",
      "error": {
        "code": -32603,
        "message": "Error: Command timed out"
      },
      "id": 1
    }

通过以上步骤,你就可以使用 pty-mcp 工具服务器,在 LLM 应用中集成远程 shell 命令执行能力。

信息

分类

桌面与硬件