使用说明

项目简介

MCP虚拟机命令终端(mcp-tunnel)是一个基于Model Context Protocol (MCP) 的服务器实现,它允许用户通过MCP客户端远程控制虚拟机(VM)的命令行。除了MCP协议接口,该服务器还提供一个Web界面的终端,方便用户直接在浏览器中与虚拟机互动。

主要功能点

  • MCP协议支持: 作为一个有效的MCP服务器,它实现了MCP协议的核心功能,可以被任何兼容MCP协议的客户端调用。
  • 远程命令执行: 通过MCP的 'execute_command' 工具,用户可以发送命令到服务器并在虚拟机上执行,获取命令输出结果。
  • Web终端界面: 内置一个基于Web的终端界面,用户可以通过浏览器直接访问虚拟机的命令行,无需额外的MCP客户端。
  • 端口隧道: 通过MCP的 'start_tunnel' 工具,或在服务器启动时自动创建隧道,将虚拟机的Web终端暴露到公网,实现远程访问。
  • WebSocket实时通信: Web终端使用WebSocket与服务器进行实时通信,提供流畅的命令行交互体验。

安装步骤

  1. 安装Node.js: 确保你的环境中安装了Node.js (v18 或更高版本)。
  2. 安装MCP Tunnel: 你可以选择全局安装或使用 'npx' 运行。
    • 全局安装 (推荐):
      npm install -g mcp-cli
    • 使用 npx (无需安装):
      npx mcp-cli
    • 本地开发安装:
      git clone [仓库URL,请替换为 https://github.com/leomercier/mcp-tunnel]
      cd mcp-tunnel
      npm install

服务器配置 (MCP 客户端配置)

对于MCP客户端,你需要配置连接到此MCP服务器的信息。以下是一个典型的JSON配置示例,用于连接 'mcp-tunnel' 服务器:

{
  "serverName": "vm-command-server",
  "command": "mcp-cli",
  "args": [],
  "transport": "sse",
  "description": "连接到虚拟机命令终端服务器",
  "capabilities": {
    "tools": [
      {
        "name": "execute_command",
        "description": "在虚拟机上执行shell命令",
        "inputSchema": {
          "type": "object",
          "properties": {
            "command": {
              "type": "string",
              "description": "要执行的shell命令"
            }
          },
          "required": [
            "command"
          ],
          "additionalProperties": false
        }
      },
      {
        "name": "start_tunnel",
        "description": "创建Web隧道以访问虚拟机界面",
        "inputSchema": {
          "type": "object",
          "properties": {
            "port": {
              "type": "number",
              "description": "要隧道化的端口,默认为8080",
              "default": 8080
            },
            "subdomain": {
              "type": "string",
              "description": "可选的隧道子域名"
            }
          },
          "additionalProperties": false
        }
      }
    ]
  }
}

配置参数说明:

  • 'serverName': 服务器的名称,可以自定义。
  • 'command': 启动MCP服务器的命令,这里是 'mcp-cli' (如果全局安装) 或 'npx mcp-cli' (如果使用npx) 或 'node index.js' (如果本地开发安装后在项目根目录下运行)。
  • 'args': 启动命令的参数,默认为空数组 '[]'。 你可以使用 '--no-tunnel' 参数禁用启动时自动创建隧道,例如 '["--no-tunnel"]'。
  • 'transport': 指定MCP客户端与服务器通信的传输协议,这里推荐使用 'sse' (Server-Sent Events)。
  • 'description': 对该服务器连接配置的描述,方便用户理解其用途。
  • 'capabilities.tools': 声明服务器提供的工具列表,包括 'execute_command' 和 'start_tunnel' 及其详细描述和输入参数Schema,MCP客户端可以根据这些信息调用相应的工具。

基本使用方法

  1. 启动MCP服务器:

    • 在安装完成后,使用 'mcp-cli' 命令启动服务器。
    • 可以使用 'npm start' 命令(如果本地开发安装)或 'npx mcp-cli'。
    • 默认情况下,服务器会尝试自动创建隧道,你可以通过 'mcp-cli --no-tunnel' 或 'npm start -- --no-tunnel' 禁用自动隧道。
    • 服务器的输出信息(包括错误和隧道URL)会打印到 'stderr',避免干扰MCP协议在 'stdout' 上的通信。
  2. 使用MCP客户端:

    • 配置你的MCP客户端,导入上面提供的JSON配置信息。
    • 连接到 'vm-command-server' 服务器。
    • 使用客户端调用 'execute_command' 工具,例如发送参数 '{"command": "ls -l"}' 来执行 'ls -l' 命令并获取结果。
    • 使用客户端调用 'start_tunnel' 工具,例如发送参数 '{"port": 8080}' 来创建一个指向虚拟机8080端口的Web隧道,成功后会返回隧道URL。
  3. 访问Web终端 (如果启动了隧道):

    • 如果成功启动了隧道,'start_tunnel' 工具或服务器启动日志会输出一个Web URL。
    • 在浏览器中打开该URL,即可访问虚拟机的Web终端界面。
    • 在Web终端中,你可以像操作本地终端一样输入命令并查看输出。

注意: 请务必仔细阅读 "安全注意事项" 部分,并根据你的实际使用场景采取必要的安全措施,因为该工具提供了对虚拟机命令行的直接访问能力。

信息

分类

开发者工具