Back to MCP directory
publicPublicdnsLocal runtime

mcp-tunnel

一个通过MCP协议访问虚拟机命令行的工具,提供Web终端和自动隧道功能。

article

README

🚀 MCP 隧道服务器

MCP 隧道服务器是一个简单的 MCP(模型上下文协议)服务器,它允许通过 MCP 访问 VM 机器的命令行界面。在启动时,该服务器还会自动创建隧道,让 VM 能够从 Web 进行访问,为用户提供便捷的操作体验。

✨ 主要特性

  • 命令执行:可在 VM 上执行 shell 命令。
  • Web 交互:借助基于 Web 的终端界面与 VM 进行交互。
  • 自动隧道:具备自动隧道功能,使 VM 能从任意位置被访问。
  • 实时通信:采用 WebSocket 实现实时通信。

📦 安装指南

先决条件

  • Node.js (v18 或更高版本)

安装方式

使用 npx(无需安装)

npx mcp-cli

全局安装

npm install -g mcp-cli
mcp-cli

本地开发

# 克隆仓库
git clone [仓库地址]
cd mcp-cli

# 安装依赖项
npm install

💻 使用示例

开发

运行带有热重载的开发服务器,同时为前后端进行更新:

npm run dev

构建

构建生产环境下的前端和后端:

npm run build-all

使用步骤

  1. 启动 MCP 服务器:
# 带自动隧道功能启动
npm start

# 不带自动隧道功能启动
npm start -- --no-tunnel

这将构建项目并启动服务器。默认情况下会创建一个隧道。使用 --no-tunnel 标志可禁用自动隧道。

  1. 服务器启动后会在 stderr 提供输出(以避免干扰 MCP 通信的 stdout)

  2. 使用 MCP 工具与服务器交互:

可用的 MCP 工具

  • execute_command:在 VM 上执行 shell 命令
    • 参数:{ "command": "your shell command" }
  • start_tunnel:创建 Web 隧道以访问 VM 界面
    • 参数:{ "port": 8080, "subdomain": "optional-subdomain" }

Web 界面

启动隧道后,可以在提供的 URL 上访问基于 Web 的终端界面。此界面允许您:

  • 直接在 VM 上执行命令
  • 实时查看命令输出
  • 使用任何支持 Web 的设备与 VM 交互

📚 详细文档

环境变量

创建一个 .env 文件以配置服务器:

# 服务器配置
PORT=8080

# Localtunnel 配置
LOCALTUNNEL_SUBDOMAIN=your-preferred-subdomain

安全注意事项

此工具提供对 VM 命令行的直接访问。考虑以下安全实践:

  • 在暴露隧道之前使用强身份验证机制
  • 通过适当的身份验证限制可以执行的命令
  • 考虑在受限环境中运行
  • 不要通过隧道泄露敏感信息
help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client