使用说明
项目简介
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与服务器进行实时通信,提供流畅的命令行交互体验。
安装步骤
- 安装Node.js: 确保你的环境中安装了Node.js (v18 或更高版本)。
- 安装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客户端可以根据这些信息调用相应的工具。
基本使用方法
-
启动MCP服务器:
- 在安装完成后,使用 'mcp-cli' 命令启动服务器。
- 可以使用 'npm start' 命令(如果本地开发安装)或 'npx mcp-cli'。
- 默认情况下,服务器会尝试自动创建隧道,你可以通过 'mcp-cli --no-tunnel' 或 'npm start -- --no-tunnel' 禁用自动隧道。
- 服务器的输出信息(包括错误和隧道URL)会打印到 'stderr',避免干扰MCP协议在 'stdout' 上的通信。
-
使用MCP客户端:
- 配置你的MCP客户端,导入上面提供的JSON配置信息。
- 连接到 'vm-command-server' 服务器。
- 使用客户端调用 'execute_command' 工具,例如发送参数 '{"command": "ls -l"}' 来执行 'ls -l' 命令并获取结果。
- 使用客户端调用 'start_tunnel' 工具,例如发送参数 '{"port": 8080}' 来创建一个指向虚拟机8080端口的Web隧道,成功后会返回隧道URL。
-
访问Web终端 (如果启动了隧道):
- 如果成功启动了隧道,'start_tunnel' 工具或服务器启动日志会输出一个Web URL。
- 在浏览器中打开该URL,即可访问虚拟机的Web终端界面。
- 在Web终端中,你可以像操作本地终端一样输入命令并查看输出。
注意: 请务必仔细阅读 "安全注意事项" 部分,并根据你的实际使用场景采取必要的安全措施,因为该工具提供了对虚拟机命令行的直接访问能力。
信息
分类
开发者工具