TunnelHunt

MCP-сервер TunnelHunt: проверенный запуск, HTTP-запрос и остановка

5 мин чтения

Практический тест @tunnelhunt/mcp 1.0.1: настройка SSH, start_tunnel, ответ локального API, get_tunnel_logs и stop_tunnel. Ограничения и ошибки подключения.

MCP-сервер TunnelHunt: создать туннель и проверить локальный API из AI-клиента

MCP-сервер TunnelHunt предоставляет AI-клиенту три инструмента: открыть HTTP-туннель, прочитать последние строки его журнала и остановить соединение. Это полезно, когда вы разрабатываете локальный обработчик вместе с ассистентом и хотите проверить его по публичному адресу.

Сам MCP-сервер не пишет приложение, не запускает ваш dev-сервер и не регистрирует вебхуки у внешних провайдеров. Эти шаги остаются отдельными действиями.

Какие инструменты доступны

Инструмент Аргументы Что делает
start_tunnel port, необязательный subdomain Запускает SSH-процесс; аргумент subdomain передаётся в SSH, но сам по себе не резервирует адрес
get_tunnel_logs subdomain Возвращает недавние строки stdout SSH-процесса
stop_tunnel subdomain Завершает созданный этим экземпляром сервера туннель

Журнал MCP хранится в памяти процесса и ограничен последними 100 строками. Это не полный архив HTTP-тел и заголовков из панели управления. После перезапуска MCP-сервера его состояние не восстанавливается из базы.

Описание соответствует исходникам проекта. Перед установкой проверьте используемую версию пакета: поведение клиента может меняться.

Подготовьте SSH и локальный сайт

Сначала убедитесь, что есть Node.js, npx, SSH-клиент и доступный ключ:

node --version
npx --version
ssh -V

Поднимите тестовый сайт на порту 3000 по инструкции доступа к localhost. Проверьте http://127.0.0.1:3000 напрямую. MCP-процесс использует окружение пользователя, от которого его запустило приложение: наличие ключа или npx в отдельном терминале ещё не доказывает их доступность GUI-клиенту.

Настройка подключения для версии 1.0.1

Опубликованный пакет 1.0.1 обращается к srv.tunnelhunt.ru:2222. При проверке 30 сентября 2026 года этот адрес отвечал Connection refused, а tunnelhunt.ru:2222 принимал SSH-соединение. Если наблюдаете тот же отказ, добавьте отдельный блок в существующий ~/.ssh/config:

Host srv.tunnelhunt.ru
    HostName tunnelhunt.ru
    Port 2222
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

Укажите путь к своему ключу вместо примера. Блок меняет адрес только для этого SSH-host; не заменяйте им весь файл. После изменения перезапустите MCP-сервер и повторите запуск. Это настройка существующей версии, а не обещание поведения будущих выпусков. Для Free предварительно добавьте публичный ключ в кабинет.

Добавьте stdio-сервер в MCP-клиент

Для клиентов, принимающих конфигурацию mcpServers, запись выглядит так:

{
  "mcpServers": {
    "tunnelhunt": {
      "command": "npx",
      "args": ["-y", "@tunnelhunt/mcp@1.0.1"]
    }
  }
}

Версия зафиксирована для воспроизводимости. Место настройки зависит от приложения: используйте его раздел MCP-серверов и тип транспорта stdio. Не заменяйте всю существующую конфигурацию этим фрагментом — добавьте сервер к уже настроенным.

После подключения проверьте, что клиент видит все три инструмента. Если появляется npx not found, укажите полный путь к npx, доступный процессу приложения, или настройте его PATH.

Проверьте один цикл: запуск, запрос, остановка

Попросите ассистента:

Создай туннель только к моему тестовому HTTP-серверу на порту 3000. Покажи выданный URL и проверь ответ тестовой страницы. После проверки останови этот туннель.

Аргументы первого вызова:

{"port": 3000}

Откройте полученный адрес вручную или отправьте curl из терминала. Для чтения журнала передайте get_tunnel_logs точное имя субдомена из результата, без https:// и .tunnelhunt.ru. То же значение используйте в stop_tunnel.

Успешный результат start_tunnel должен быть подтверждён HTTP-запросом. Если инструмент сообщил, что не смог проверить баннер, это не доказательство работающего соединения. После остановки убедитесь, что публичный адрес больше не возвращает ваш тестовый сайт.

Результат реальной проверки версии 1.0.1

30 сентября 2026 года опубликованный пакет проверен через MCP SDK и транспорт stdio. Использованы отдельный временный SSH-ключ, сопоставление srv.tunnelhunt.ru с tunnelhunt.ru и тестовый Node.js HTTP-сервер на 127.0.0.1:3000. Сопоставление и выбор ключа выполнялись временной SSH-обёрткой, чтобы не менять пользовательский ~/.ssh/config. Реальные боты и платежи в тесте не использовались.

Воспроизвести локальный ответ можно без зависимостей:

// demo.cjs
const http = require('node:http');
http.createServer((req, res) => {
  res.setHeader('Content-Type', 'application/json');
  res.end(JSON.stringify({ ok: true, source: 'tunnelhunt-mcp-demo' }));
}).listen(3000, '127.0.0.1');

Запустите node demo.cjs, затем вызовите start_tunnel с {"port":3000}. Проверенный результат инструмента:

Tunnel started successfully!
URL: https://vigorous-khorana.tunnelhunt.ru
Local Port: 3000
Use get_tunnel_logs to see traffic.

Это адрес завершённого теста; используйте новый URL, который выдаст ваш запуск. GET по выданному адресу вернул HTTP 200 и тело:

{"ok":true,"source":"tunnelhunt-mcp-demo"}

Вызов get_tunnel_logs с {"subdomain":"vigorous-khorana"} вернул строку GET / 200 42.00 B с отметкой времени и цветовым оформлением. Для собственной проверки передавайте своё имя из URL. Инструмент читает stdout SSH, поэтому не возвращает JSON-тело ответа как отдельную структуру.

stop_tunnel вернул Tunnel vigorous-khorana stopped.. После остановки публичный адрес отвечал HTTP 404 со страницей «Туннель оффлайн» и больше не отдавал тестовый JSON. Так проверены и открытие порта, и его закрытие.

Постоянный адрес и границы возможностей MCP

Для постоянного адреса нужен зарезервированный поддомен и привязка SSH-ключа в кабинете. Pro за 199 ₽/месяц включает резервирование, 50 ГБ и до 5 активных туннелей. Аргумент subdomain не покупает тариф, не создаёт резервирование и не гарантирует выбранное имя: всегда проверяйте URL, фактически возвращённый сервером.

MCP не восстанавливает соединение после сна компьютера и не превращает локальное приложение в круглосуточный хостинг. Для восстановления SSH есть отдельная инструкция autossh.

Ограничения и диагностика

Проблема Проверка
Нет инструментов в клиенте Формат MCP-конфигурации, stdio и запуск npx
Процесс SSH завершился Ключ, исходящая сеть, порт и вывод ошибок MCP
Connection refused к srv.tunnelhunt.ru:2222 Проверьте настройку HostName для версии 1.0.1 выше и доступность целевого сервера
Публичный URL не отвечает Локальное приложение, номер порта и фактический результат подключения
No traffic logs yet Выполните HTTP-запрос; отсутствие строк ещё не означает отсутствие трафика
No active tunnel found Имя субдомена или туннель создан другим экземпляром MCP-процесса

В версии 1.0.1 SSH запускается с отключённой проверкой ключа хоста. Учитывайте это при выборе окружения: для работы, требующей проверки подлинности сервера, используйте обычный SSH-туннель с проверенным known_hosts.

Открывайте только согласованный тестовый порт и используйте искусственные данные. Для подробного разбора входящих HTTP-событий перейдите к инспектору и Replay, а для конкретного бота — к Telegram webhook.

Запустите сначала один тестовый туннель

Проверьте HTTP-ответ и завершение соединения из MCP-клиента. Кабинет нужен для привязки SSH-ключа, просмотра HTTP-запросов и настройки постоянного адреса.

Free: 1 ГБ трафика в месяц, 1 туннель, сессия до 4 часов. Pro: 199 ₽/месяц, 50 ГБ, до 5 туннелей и резервирование поддомена. Компьютер, приложение и SSH-соединение должны работать; постоянный адрес сохраняет имя, а не доступность выключенного сервера.

Готовы запустить свой первый туннель?

Начните использовать TunnelHunt бесплатно уже сегодня и откройте доступ к локальному серверу всего одной командой.

Зарегистрироваться бесплатно →

По теме