Skip to main content
Glama
ProxiBlue

pb-hypernode-mcp

by ProxiBlue

pb-hypernode-mcp

Клиентский плагин Claude Code для Hypernode Brancher — создавайте одноразовые превью-окружения, клонированные с продакшена, вносите изменения с помощью ИИ через SSH и просматривайте результат через ваш браузерный MCP.

Зачем это нужно

Brancher предоставляет изменяемую временную копию вашего продакшен-узла Hypernode (данные не старше 24 часов, полный набор инструментов, реальная инфраструктура — не эмуляция Docker). Проблема в том, что он клонирует продакшен целиком, включая реальные персональные данные клиентов и настоящие платежные/API-учетные данные, а узел получает публичный URL. Этот плагин устраняет этот разрыв — каждый созданный им узел автоматически анонимизируется и изолируется до того, как будет объявлен готовым, так что «позволить ИИ клиента поработать с реальной копией продакшена» не означает «выставить реальные данные клиентов в интернет».

Related MCP server: hostwares-mcp

Установка

Три шага: установите плагин, укажите ваш токен Hypernode, перезапустите Claude Code.

1. Установите плагин

Введите эту команду прямо в Claude Code (терминал не нужен):

/plugin marketplace add ProxiBlue/pb-hypernode-mcp
/plugin install pb-hypernode-mcp@pb-hypernode-mcp

Claude Code загружает всё напрямую с GitHub — не нужно ничего скачивать, запускать отдельный сервер или клонировать вручную.

(Если вы предпочитаете запускать из терминала, те же команды работают как claude plugin marketplace add ... / claude plugin install ....)

2. Добавьте ваш API-токен Hypernode

Этот плагин использует ваш API-токен Hypernode для взаимодействия с вашей учетной записью Hypernode от вашего имени. Плагин никогда не сохраняет его — вы задаете его как переменную окружения, так же, как любой пароль.

Найдите ваш токен в панели управления Hypernode, затем в терминале (перед запуском Claude Code):

export HYPERNODE_API_TOKEN="your-token-here"

Опционально, но рекомендуется — ограничьте, к каким приложениям Hypernode плагин может обращаться, чтобы опечатка не затронула не тот сайт:

export HYPERNODE_APP_ALLOWLIST="myapp"

(Укажите несколько имен приложений через запятую, например "myapp,myapp2", если управляете более чем одним.)

Совет: добавьте обе строки в файл запуска вашей оболочки (~/.zshrc или ~/.bashrc), чтобы не вводить их каждый раз заново.

3. Перезапустите Claude Code

Закройте и снова откройте Claude Code, чтобы он подхватил токен и подключился к плагину. Всё готово к работе.

Быстрый старт

Просто спросите на естественном языке:

«Создай превью Brancher для myapp, чтобы я мог показать клиенту новую верстку страницы категорий.»

Claude создает узел, ожидает его готовности, выполняет санитарную обработку (см. Защитные ограничения) и сообщает результат:

node_name:     myapp-eph482913
access_url:    https://myapp-eph482913.hypernode.io/
minutes_remaining: 387

После этого попросите внести изменения и показать результат или просто скажите «удали все оставшиеся превью-узлы», когда закончите — Brancher тарифицирует поминутно, независимо от того, смотрит ли кто-то на узел.

Что входит в плагин

skills/
├── brancher-spinup/      create a sanitized preview node, report access details
├── brancher-preview/     full loop: spin up -> change -> build -> screenshot
└── brancher-cleanup/     list/flag/delete leftover nodes
src/pb_hypernode_mcp/     the MCP server (6 tools) — see MCP tools below
tests/                    automated test suite

Требования

  • Учетная запись Hypernode на тарифе Falcons с API-токеном из панели управления (Brancher доступен только на тарифе Falcons).

  • SSH-ключ, который вы уже используете для доступа к вашему Hypernode — ничего дополнительно настраивать не нужно, превью-узлы Brancher наследуют доступ автоматически.

  • Python 3.11+ и uv, установленные на машине, где запущен Claude Code (плагины Claude Code — это просто код, и это среда выполнения, которая им нужна).

MCP-инструменты

Все 6 инструментов зарегистрированы на сервере pb-hypernode-mcp (src/pb_hypernode_mcp/server.py). brancher_exec и brancher_put вызывают системные ssh/rsync через ваш уже настроенный локальный SSH-агент/ключ — этот плагин никогда не хранит ключевой материал самостоятельно.

Инструмент

Назначение

Ключевые аргументы

brancher_create

Единственный инструмент для создания узла: требует обязательную метку, список разрешенных приложений и соответствие тарифу Falcons, затем выполняет последовательность create -> ожидание SSH-доступа -> обязательная санитарная обработка -> сообщение о готовности как единый необходной вызов. Отдельного инструмента «сырого создания» нет — структурно невозможно создать узел Brancher через этот плагин без предварительной санитарной обработки. Никогда не возвращает access_url для узла, который не прошел санитарную обработку. Вызывает NodeUnreachableTimeoutError, если узел не стал доступен по SSH в течение 300 секунд, или SanitizationFailedError (URL доступа не выдается), если команда санитарной обработки завершилась с ошибкой.

appname (str), labels (list[str], обязательно, минимум одна), clear_services (list[str], опционально, по умолчанию ["cron"])

brancher_list

Выводит список активных узлов Brancher для appname. Возвращает name, host и minutes (время работы по часам с момента создания, не учитывает простой). Отклоняет любое appname, не входящее в список разрешенных.

appname (str)

brancher_delete

Удаляет узел Brancher. Требует повторного вызова с confirm=True: первый вызов (по умолчанию confirm=False) находит и возвращает детали целевого узла и запрос подтверждения без удаления; только второй вызов с confirm=True выполняет фактическое удаление. Проверяет имя узла на соответствие шаблону -eph<id>.

node_name (str, <appname>-eph<id>), confirm (bool, по умолчанию False)

brancher_ssh_info

Возвращает данные для SSH-подключения (host, user, port) к узлу, не открывая само соединение. Вызывает NodeNotReadyError, если у узла еще нет назначенного IP.

node_name (str)

brancher_exec

Выполняет команду оболочки на узле Brancher через SSH (вызывает системный ssh). Единственная критическая с точки зрения безопасности точка контроля слоя «внесения изменений»: отклоняет любое node_name, не соответствующее шаблону -eph<id>, до запуска любого дочернего процесса — структурно невозможно направить этот инструмент на продакшен-узел. Возвращает stdout/stderr/exit_code; вызывает SshConnectionError при коде выхода ssh 255, SshCommandTimeoutError при превышении таймаута.

node_name (str), command (str), timeout (float, по умолчанию 30s)

brancher_put

Синхронизирует локальный файл/каталог с узлом Brancher через rsync -az --protect-args по SSH. Такая же защита по шаблону -eph и модель подключения через локальный SSH-агент, как у brancher_exec. Вызывает SyncError при ненулевом коде выхода rsync.

node_name (str), local_path (str), remote_path (str), port (int, по умолчанию 22)

Навыки

  • brancher-spinup — создает одноразовый превью-узел Brancher, клонированный с продакшена, с обязательной автоматической санитарной обработкой, и сообщает его URL доступа. Используйте, когда клиент просит предварительно просмотреть изменения на реальной копии продакшена перед развертыванием. Оборачивает единственный вызов инструмента brancher_create — никогда не воспроизводит последовательность create/wait/sanitize вручную.

  • brancher-preview — полный цикл: создание узла (через навык brancher-spinup), применение изменений кода (отправка локального diff через brancher_put или редактирование на месте через brancher_exec), запуск только тех команд сборки Magento, которые действительно нужны для изменений (decide_build_commands() в src/pb_hypernode_mcp/preview_logic.py), просмотр результата через любой браузерный MCP-инструмент, уже доступный в сессии, и затем явное напоминание пользователю, что узел продолжает тарифицировать минуты Brancher. Используйте, когда клиент хочет полностью оценить изменения в одноразовом окружении. Никогда не удаляет сам узел.

  • brancher-cleanup — выводит список активных узлов с помощью brancher_list, помечает узлы, достигшие или превысившие порог времени (minutes >= threshold_minutes, по умолчанию 240 минут / 4 часа, через flag_stale_nodes() в src/pb_hypernode_mcp/cleanup_logic.py), и удаляет помеченные узлы (по одному или все сразу) только после явного подтверждения пользователя. Используйте, когда клиент хочет проверить или удалить оставшиеся узлы Brancher, чтобы остановить начисление минут. Brancher тарифицирует минуты с момента создания, независимо от того, использует ли кто-то узел.

Защитные ограничения

  • Обязательная санитизация — не может быть отключена. Каждый вызов brancher_create запускает полную последовательность санитизации (src/pb_hypernode_mcp/sanitization/) на узле, прежде чем он будет сообщен как "ready" или вернет access_url. Нет ни флага, ни опции конфигурации, ни пути обхода — brancher_create является ЕДИНСТВЕННЫМ инструментом MCP для создания узлов, зарегистрированным этим плагином (нет отдельного, несанитизированного инструмента создания), и spinup_sanitized_brancher_node() в src/pb_hypernode_mcp/tools/brancher_spinup_flow.py (функция за ним) структурно не может вернуть access URL, пока все команды санитизации не завершатся с кодом 0. Если команда санитизации завершается ошибкой на полпути, инструмент вызывает SanitizationFailedError и умышленно скрывает access URL — исключение даже не содержит его, поэтому перехватывающий вызывающий код не может случайно его раскрыть.

    Последовательность (управляемая конфигурацией, с настройками по умолчанию для Magento в sanitization/config.py::DEFAULT_MAGENTO_SANITIZATION_CONFIG):

    1. Анонимизация PII — операторы UPDATE (через n98-magerun2 db:query) против customer_entity, customer_address_entity, sales_order, sales_order_address (имена/email/телефоны/улицы заменяются анонимизированными заглушками) и сохраненные данные карт (quote_payment, sales_order_payment: cc_number_enc, cc_cid_enc, cc_owner, additional_data обнуляются).

    2. Сброс учетных данных администратораadmin_user имя пользователя/email сбрасываются на значения-заглушки, а пароль перезаписывается хешем, который заведомо недействителен для любого реального пароля (блокирует вход через форму, пока оператор не установит реальный пароль через bin/magento admin:user:create).

    3. Принудительный перевод платежного шлюза в песочницуbin/magento config:set принудительно устанавливает, например, payment/braintree/environment=sandbox, paypal/general/sandbox_flag=1.

    4. Замена ключей API третьих сторонbin/magento config:set заменяет живые ключи (например, ShipperHQ, AvaTax) на фиктивные значения песочницы, чтобы ни один узел предпросмотра не мог совершить реальный платеж или реальный вызов API третьей стороны под производственными учетными данными.

    Точная структура таблиц и установленные интеграции реального клиентского приложения должны переопределять/расширять SanitizationConfig, а не полагаться на поставляемый по умолчанию вариант в продакшене — он существует как безопасная отправная точка, а не как обещание соответствия каждой схеме.

  • Белый список приложений (HYPERNODE_APP_ALLOWLIST) — когда установлен, brancher_create, brancher_list и brancher_delete отказывают любому appname, не входящему в список.

  • Проверка соответствия плану Falconsbrancher_create отклоняет приложения, не соответствующие плану, поддерживающему Brancher, до создания чего-либо.

  • Защита только для -ephbrancher_exec и brancher_put проверяют node_name на соответствие шаблону <appname>-eph<id> (tools/_guards.py::validate_eph_node_name, .fullmatch() — без частичного совпадения или пропуска символов в конце) перед открытием любого SSH-соединения или подпроцесса. Структурно невозможно направить любой из этих инструментов на производственное имя хоста.

  • Подтверждение перед удалениемbrancher_delete никогда не удаляет при первом вызове. Он требует явного повторного вызова с confirm=True после отображения деталей целевого узла; настроенный порог или пометка узла как устаревшего сами по себе не являются подтверждением.

  • Обязательная меткаbrancher_create отклоняет вызовы без labels, поэтому каждый узел можно отследить до причины/заявки.

  • Обработка токеновHYPERNODE_API_TOKEN считывается только из окружения и никогда не записывается на диск или в конфигурацию плагина этим плагином.

  • Усиление аргументов brancher_putremote_path/local_path заключаются в кавычки для оболочки, а rsync запускается с --protect-args, поэтому оболочка удаленного хоста никогда не перепарсит аргумент пути, закрывая внедрение метасимволов через подделанный путь.

Эта конструкция была проверена в ходе аудита безопасности тремя специалистами перед выпуском (статический анализ, тестирование на проникновение, защитная проверка). Он выявил реальный критический пробел в более раннем черновике — санитизированный поток был построен как второй инструмент наряду с все еще открытым необработанным, несанитизированным путем создания — поэтому "один инструмент создания, никаких исключений" так настойчиво выделяется выше. Нашли проблему безопасности? Откройте issue, а не PR с деталями эксплуатации.

Ограничения (v1)

  • Только Magento/Mage-OS. Конфигурация по умолчанию для слоя санитизации (DEFAULT_MAGENTO_SANITIZATION_CONFIG) и логика принятия решений о командах сборки навыка brancher-preview (decide_build_commands()) ориентированы на Magento. Это не универсальный многоплатформенный инструмент — WooCommerce, Shopware, Laravel и другие платформы, размещаемые на Hypernode, выходят за рамки v1. Для приложения, не основанного на Magento, потребуется как минимум собственноручно написанный SanitizationConfig, а последовательность сборки навыка предпросмотра не будет применяться.

  • Нет SSH-ключей, управляемых MCP. brancher_exec/brancher_put обращаются к системным программам ssh/rsync и полностью полагаются на то, что ваш локальный SSH-агент/ключ уже имеет доступ к узлам Brancher (которые наследуют доступ автоматически через полное клонирование файловой системы Brancher с продакшена). Этот плагин никогда не предоставляет, не хранит и не передает ключевой материал.

  • Только транспорт stdio. Нет удаленного/HTTP-транспорта MCP в v1 — это локальный плагин Claude Code, запускаемый каждым разработчиком с собственным HYPERNODE_API_TOKEN. Нет хостируемой/управляемой версии этого MCP. Токен и SSH-доступ полностью принадлежат клиенту.

  • Только REST API. Нет интеграции с Hypernode Deploy (deploy.php) в v1.

  • Учет минут по астрономическому времени, а не по бездействию. Проверка устаревания brancher-cleanup использует minutes, сообщаемые API Hypernode (время работы с момента создания) — он не может отличить бездействующий узел от активно используемого.

  • Непроверенные формы ответов API. Ожидаемая форма ответа brancher_list ({"nodes": [{"name", "host", "minutes"}, ...]}) и имена полей плана/минут brancher_create (plan_type, brancher_minutes_remaining) являются задокументированными предположениями, еще не подтвержденными по контракту живого API Hypernode — см. строки документации модулей в src/pb_hypernode_mcp/tools/brancher_list.py и src/pb_hypernode_mcp/tools/brancher_create.py, если ответы API не совпадают во время выполнения. Выполните реальный дымовой тест create -> brancher_exec whoami на аккаунте с планом Falcons, прежде чем направлять это на клиента.

  • Выгрузка тестов Playwright еще не реализована. Запуск функционального тестового набора на узле Brancher вместо локального/CI отслеживается отдельно — см. ProxiBlue/pb-hypernode-mcp#1 или исходный проектный тикет.

Разработка

git clone https://github.com/ProxiBlue/pb-hypernode-mcp
cd pb-hypernode-mcp
uv sync --extra dev

uv run pytest -v                     # 84 tests, mocked HTTP/SSH — no real Hypernode account touched
uv run ruff check src tests          # lint
uv run ruff format --check src tests # format check
uv run pyright src tests             # type check

Интеграционные тесты не запускаются автоматически на реальном аккаунте Hypernode. Если вы изменяете tools/brancher_exec.py или логику опроса достижимости в tools/brancher_spinup_flow.py, выполните ручной дымовой тест на реальном узле с планом Falcons перед слиянием — имитации не могут поймать неверное предположение о пользователе SSH или несоответствие формы в реальном ответе API.

Чтобы установить собственную копию для локальной разработки вместо опубликованной версии, укажите Claude Code прямо на папку:

claude plugin marketplace add pb-hypernode-mcp /path/to/your/clone
claude plugin install pb-hypernode-mcp@pb-hypernode-mcp

После редактирования навыков или серверного кода выполните claude plugin update pb-hypernode-mcp@pb-hypernode-mcp, чтобы применить изменения без повторного добавления на маркетплейс.

Если плагин не отображается после установки, проверьте: claude plugin list показывает pb-hypernode-mcp как включенный; новый сеанс Claude Code перечисляет инструменты brancher_* и три навыка brancher-*; HYPERNODE_API_TOKEN установлен в той же оболочке, из которой вы запустили Claude Code.

Лицензия

Apache-2.0. См. LICENSE и NOTICE для указания атрибуции сторонних зависимостей/служб (API Hypernode Brancher, системные ssh/rsync, MCP Python SDK).

Available Tools

7 tools
brancher_appsA

List every Hypernode <appname> with a configured API token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It clearly indicates this is a read-only listing operation, but it does not disclose any potential edge cases (e.g., output size, pagination, or error behavior). The mention of 'every' suggests comprehensiveness, but no additional behavioral traits are described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that precisely conveys the tool's purpose without any redundant information. It is perfectly front-loaded and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with no parameters and an output schema available, the description is complete. It specifies exactly what is listed (Hypernode app names) and the filtering condition (with a configured API token). No further details are necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is nothing for the description to clarify. The baseline score of 4 applies, and the description correctly avoids any unnecessary parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (List), the resource (Hypernode appname), and a specific condition (with a configured API token). It effectively distinguishes from sibling tools like brancher_list by specifying the token requirement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool—when you need to list Hypernode apps that have API tokens. It does not explicitly mention alternatives or exclusions, but the purpose is self-evident enough for basic selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brancher_createC

Create a Brancher node, wait for it, sanitize it, and report it ready.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelsYes
appnameYes
clear_servicesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavioral traits. It mentions waiting, sanitizing, and reporting, hinting at a non-instant operation, but fails to explain what 'sanitize' means, whether it's destructive, what permissions are needed, or what 'report it ready' entails. The description is too vague to make the tool's behavior predictable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise in length, but it packs multiple actions without clear separation or explanation. It is not well-structured for quick comprehension of the tool's purpose and behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters (2 required), no schema descriptions, and an output schema (content unknown), the description is severely incomplete. It does not explain the parameters, the return value, or the actual behavior beyond vague steps. The agent cannot reliably invoke this tool based on the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention any of the three parameters (appname, labels, clear_services). The description adds no meaning beyond the schema, leaving the agent without any guidance on how to populate the inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create' and the resource 'Brancher node', distinguishing it from sibling tools like list, delete, exec, put, and ssh_info. It adds procedural steps (wait, sanitize, report ready) which, while vague, still clarify the tool's multi-step nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor any prerequisites, exclusions, or context. The description only states what it does, not when it should be chosen.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brancher_deleteA

Delete a Brancher node, gated behind a confirm=True re-call.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
node_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral disclosure. It reveals that deletion is not immediate but requires a second call with confirm=True, which is a critical behavioral trait. However, it does not elaborate on what happens on the first call (e.g., no-op or preview) or whether deletion is reversible, which keeps it from being a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the core action ('Delete a Brancher node') and immediately follows with the critical behavioral constraint. Every word earns its place; there is no redundancy or unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (2 parameters, no nested objects) and the presence of an output schema, the description is nearly adequate but lacks clarity on what the first call (without confirm=True) does. This omission could confuse an agent about the tool's behavior. The description is otherwise sufficient for the basic delete operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only partially addresses the confirm parameter by explaining its role in the gating mechanism. The node_name parameter is not described at all. This leaves a significant gap for the required parameter, limiting the agent's ability to correctly invoke the tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete a Brancher node') with a specific verb and resource. It also distinguishes from sibling tools (brancher_create, brancher_list, etc.) by implying deletion rather than creation, listing, or execution. The mention of the confirmation gating adds specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used when a node needs to be deleted, but it does not provide explicit guidance on when to use it versus alternatives (e.g., when not to delete, or that brancher_create might be needed to recreate). No exclusions or alternative tools are mentioned, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brancher_execA

Execute command on a Brancher node over SSH; return stdout/stderr/exit_code.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYes
timeoutNo
node_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description effectively discloses the tool's behavior: it executes a command via SSH on a specific node and returns standard output, error, and exit code. It implicitly informs the agent that this is a potentially impactful action (remote command execution) and that it requires SSH access, which is transparent enough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, just one sentence with 11 words. It front-loads the main action and return value, leaving no wasted words. Every element (execute, command, SSH node, return) is necessary and adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a relatively simple tool with a clear action and an output schema (implied return of stdout/stderr/exit_code), the description covers the essential purpose and behavior. It does not specify failure modes or SSH configuration requirements, but given the context (no nested objects, few parameters) and the presence of an output schema, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema description coverage is 0%, the description briefly adds context by naming the two required parameters (command, node_name) within its purpose. However, it does not explain the optional timeout parameter (default 30 seconds) or provide details on valid formats or constraints for the parameters beyond what is in the schema. Given low coverage, the description compensates somewhat.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Execute over SSH), the target (Brancher node), and the return values (stdout/stderr/exit_code). It effectively distinguishes from sibling tools like brancher_list, brancher_put, etc., which are about managing files or listing, not executing commands.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when or when not to use this tool versus alternatives. Since there are siblings like brancher_ssh_info which might provide connection info, but no instructions on when to prefer one over the other or any prerequisites (e.g., SSH setup) are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brancher_listB

List active Brancher nodes for appname.

ParametersJSON Schema
NameRequiredDescriptionDefault
appnameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. 'List active Brancher nodes' suggests a read-only operation, but does not clarify if the list is paginated, limited, or includes metadata (e.g., status, uptime). The description minimally conveys safety (read-only) but omits specifics like authentication needs or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at just one line with no wasted words. It appropriately front-loads the action and target resource, making it easy for an AI agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is only one parameter and an output schema exists, the description is somewhat complete for a simple listing tool. However, it lacks details on what the list contains (e.g., node IDs, IPs, status) and does not clarify if the tool returns only active nodes or all nodes filtered by activity. With no annotations, more context on behavior would be valuable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes only one parameter (`appname`) with 0% schema description coverage, meaning the description must add meaning. However, the description only mentions `appname` in context without elaborating on its format, acceptable values, or examples. It merely restates that `appname` is needed, adding little beyond the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list) and the resource (active Brancher nodes), and it specifies the required parameter `appname`. However, it does not differentiate from sibling tools like `brancher_ssh_info` or `brancher_create` in terms of what makes this specific listing distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by requiring `appname`, but provides no explicit guidance on when to use this tool versus alternatives (e.g., `brancher_ssh_info` for SSH info or `brancher_delete` for deletion). There is no mention of prerequisites or conditions for using the list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brancher_putB

Sync local_path to remote_path on a Brancher node via rsync.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNo
node_nameYes
local_pathYes
remote_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. It only mentions 'via rsync', but does not disclose overwrite behavior, directory creation, error handling, or any side effects. The agent is left guessing about important safety-relevant behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff or repetition. It is front-loaded and efficient, containing exactly the core information without wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema (content unknown), the description fails to address many aspects relevant to a file sync tool: return values, error conditions, whether directories are created, handling of existing files, permission requirements, or rsync flags. The brevity leaves significant gaps for practical usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% — none of the parameters have descriptions in the schema. The tool description merely restates the role of local_path and remote_path ('sync local_path to remote_path') but does not clarify their format, constraints, or the purpose of node_name and port. The linking of path parameters is the only semantic addition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('sync'), the source ('local_path'), destination ('remote_path'), the mechanism ('via rsync'), and the target ('on a Brancher node'). This distinguishes it from sibling tools like brancher_list, brancher_delete, and brancher_exec, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. For example, it doesn't mention when to use brancher_put instead of brancher_exec for file transfer, or if there are size or permission limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brancher_ssh_infoC

Return SSH connection details (host, user, port) for a Brancher node.

ParametersJSON Schema
NameRequiredDescriptionDefault
node_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full responsibility for behavioral disclosure. It only states the return value, omitting whether the operation is read-only, requires authentication, what happens if the node does not exist, or any error conditions. This is insufficient for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. However, it is too brief to cover necessary details, making it merely adequate rather than excellent. It earns its place but misses opportunities to add value without much extra length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple info retrieval tool with an existing output schema, the description covers the essential return fields (host, user, port). However, it does not address error scenarios, preconditions (node existence), or side effects. Annotations are absent, leaving behavioral gaps. Completeness is acceptable but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage for the required node_name parameter. The description adds only 'for a Brancher node', implying node_name identifies a node but failing to explain valid values, case sensitivity, or where to obtain the name. It does not compensate for the schema's lack of documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns SSH connection details (host, user, port) for a Brancher node, which is a specific verb and resource. It differentiates well from siblings like brancher_list (listing) or brancher_exec (executing commands), leaving no ambiguity about this tool's role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., use it after listing nodes to get connection info, or before executing SSH commands). No when-not-to-use or exclusion criteria are mentioned, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool update
    • Addedbrancher_apps
  2. 6 tool updatesv0.1.0
    • First observedbrancher_create
    • First observedbrancher_delete
    • First observedbrancher_exec
    • First observedbrancher_list
    • First observedbrancher_put
    • First observedbrancher_ssh_info

TDQS

B3.4/5.0
Disambiguation5/5

Each tool serves a unique purpose: ssh_info retrieves connection details, list enumerates nodes, delete removes a node, exec runs commands, put syncs files, create provisions a node, and apps lists configured apps. There is no functional overlap or ambiguity.

Naming Consistency3/5

All tools share the 'brancher_' prefix, but the naming pattern is inconsistent: most use verb-noun (list, delete, exec, put, create) while two are noun-only (ssh_info, apps). This creates minor inconsistency in verb usage and clarity.

Tool Count5/5

Seven tools is a reasonable number for managing Brancher nodes—covering core CRUD operations plus execution, file sync, and SSH info. It is neither sparse nor overwhelming for the domain.

Completeness5/5

The tool surface covers the full lifecycle of a node: create, list, delete, execute commands, sync files, retrieve SSH details, and list apps. No essential operation appears missing for the stated purpose of managing Brancher nodes.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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/ProxiBlue/pb-hypernode-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server