sully-termux-mcp
sully-termux-mcp
sully-termux-mcp — это шлюз Node.js 20+ TypeScript ESM для запуска инструментов MCP в Termux. Производственный режим по умолчанию намеренно минимален: он прослушивает только loopback-адрес, требует 32-байтовый Bearer-токен и предоставляет отдельный аутентифицированный административный API.
Быстрый старт
npm ci
npm run build
node dist/cli.js setup
node dist/cli.js start
node dist/cli.js status
node dist/cli.js pair # explicit user action; prints both tokensСгенерированная конфигурация находится в ~/.config/sully-mcp/config.json с правами 0600; данные, вывод заданий и редактируемый журнал аудита — в ~/.local/share/sully-mcp с правами 0700. Никогда не вставляйте JSON для сопряжения в журнал или issue.
Для управления с телефона установите пакет команд Termux:API (pkg install termux-api) и установите сопутствующее Android-приложение Termux:API из того же источника подписи (например, оба из F-Droid или оба из GitHub). Android не будет доставлять вызовы API, если два пакета получены из разных источников подписи. Перезапустите шлюз после установки или обновления Termux:API, чтобы его список команд был пересобран.
Конечная точка MCP — http://127.0.0.1:8765/mcp. Этот выпуск поддерживает стабильные протоколы на основе сессий 2025-11-25 и 2025-06-18 с использованием initialize, notifications/initialized, tools/list и tools/call. Транспорт 2026-07-28 намеренно не рекламируется, пока не будут реализованы требуемые заголовки маршрутизации и конверт ответа. DELETE /mcp закрывает сессию 2025.
Related MCP server: Python MCP Toolkit Server
Администрирование
POST /admin/v1 использует admin Bearer-токен и принимает { "action": "status", "params": {} }. Действия включают status, doctor, permissions, capabilities, jobs.list, jobs.output, jobs.cancel, jobs.cleanup, profiles.list, profiles.upsert, profiles.remove, upstreams.list, upstreams.import, upstreams.update, upstreams.remove, gateway.stop, tokens.rotate и pair.revoke. Все ответы имеют вид {ok:true,result} или {ok:false,error}. Секреты возвращаются только в явном ответе tokens.rotate или по явной команде CLI pair.
permissions и doctor включают централизованный контрольный список Termux:API, сгруппированный по устройствам, связи, медиа, взаимодействию и автоматизации. Доступность команд определяется при запуске; состояние разрешений Android во время выполнения сообщается как unknown, а требование единого источника подписи для Termux:API является явным.
Инструменты и ограничения
Встроенные инструменты включают ограниченные echo_safe, fs_read, fs_write, fs_list, fs_metadata, fs_find, fs_copy, fs_move, профили команд, shell-задания, статус/вывод/отмену/очистку заданий и обнаруженные команды Termux:API (включая типизированные вводы для местоположения, камеры, уведомлений, toast, буфера обмена, SMS, TTS, громкости и фонарика). Менее распространённые команды API предоставляют ограниченные необработанные args с подсказкой по использованию/справке; обратитесь к --help установленной команды для точных параметров. shell_exec всегда запускает bash -lc с shell:false; профили команд и stdio-апстримы используют исполняемый файл и массив аргументов с shell:false. Задания переживают перезапуски как interrupted, захватывают не более 8 МиБ и возвращают не более 64 КиБ на запрос вывода. Запросы ограничены 1 МиБ, ответы — 4 МиБ; параллельность инструментов по умолчанию равна четырём.
HTTP-апстримы должны использовать HTTPS или HTTP на точном литеральном loopback-хосте 127.0.0.1/::1 (без DNS-алиасов и пробелов). HTTPS-адреса, разрешающиеся в частные, link-local или метаданные диапазоны, отклоняются. Перенаправления, учётные данные в URL, фрагменты и не внесённые в белый список инструменты отклоняются. Инструменты HTTP и stdio-апстримов имеют префикс (id__tool) и могут быть ограничены с помощью allowedTools, readOnly и prefix.
Жизненный цикл Termux
Обычный жизненный цикл sully-mcp start/restart получает termux-wake-lock, когда это доступно, а stop освобождает его. Установите termux-boot/sully-termux-mcp как ~/.termux/boot/sully-termux-mcp и сделайте его исполняемым для запуска после перезагрузки. Оптимизация батареи Android всё ещё может остановить Termux; приложение должно рассматривать недоступный шлюз как восстанавливаемый.
Поддерживаемые команды CLI: setup, start, stop, restart, status, logs, doctor, permissions, pair, update и uninstall --yes.
Целостность выпуска
npm run release -- --version 0.2.0 требует MCP_RELEASE_ED25519_PRIVATE_KEY и выполняет сборку перед записью sully-termux-mcp-0.2.0.tar.gz, его SHA-256, манифеста и подписи Ed25519. Команда App в scripts/install-command.txt загружает фиксированный архив GitHub Release, хэш, манифест и подпись во временный каталог, сравнивает архив с его закреплённым ожидаемым хэшем, проверяет подпись Ed25519 с помощью встроенного открытого ключа и только затем запускает scripts/install-local.sh из проверенного архива. Локальный установщик проверяет Node 20+, выполняет npm ci --omit=dev и сборку, а затем атомарно заменяет символическую ссылку versions/<version>/current, сохраняя предыдущую текущую цель при сбое. Он также создаёт настоящую обёртку sully-mcp в $PREFIX/bin Termux (или ~/.local/bin) и никогда не использует непроверенный конвейер curl | sh. Приватный ключ подписи передаётся временно через MCP_RELEASE_ED25519_PRIVATE_KEY оператором выпуска и никогда не фиксируется.
Модель безопасности
Для локального прослушивателя принимаются только loopback-хосты. Учётные данные MCP и администратора представляют собой независимые случайные 64-шестнадцатеричные значения и сравниваются с помощью сравнения за постоянное время. Конфигурация записывается в UTF-8 с ограничительными правами доступа. Сервер не возвращает токены из /health, списков инструментов, обычных ошибок, записей аудита или метаданных заданий. Записи аудита редактируются и ограничены. Инструменты с побочными эффектами никогда не повторяются автоматически. Деструктивные инструменты апстрима должны быть явно внесены в белый список вызывающей стороной.
Этот репозиторий лицензирован в соответствии с PolyForm Noncommercial License 1.0.0, перенесённой из SULLYTEST2.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for SSH and local terminal access. Supports interactive commands, long-running processes, and TUI apps like tmux/zellij63MIT
- AlicenseAqualityBmaintenanceA Python-based MCP server for file operations, web search with fallback, and task management, designed for Termux and extensible via plugins.32GPL 3.0
- AlicenseAqualityCmaintenanceAn MCP server that enables managing SSH hosts, tunnels, Docker containers, and monitoring metrics via Termix's REST API.151MIT
- AlicenseNot gradedqualityFmaintenanceZero-dependency Model Context Protocol server for Termux (Android) that gives shell access to your device.121MIT
Related MCP Connectors
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/chushiyu111-design/sully-termux-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server