Skip to main content
Glama
ProxiBlue

pb-hypernode-mcp

by ProxiBlue

pb-hypernode-mcp

Plugin de Claude Code del lado del cliente para Hypernode Brancher: crea entornos de vista previa desechables, clones de producción, realiza cambios asistidos por IA a través de SSH y visualiza el resultado a través de tu MCP de navegador existente.

Por qué

Brancher te proporciona una copia mutable y temporal de tu Hypernode de producción (datos de hasta 24 horas de antigüedad, cadena de herramientas completa, infraestructura real, no una aproximación con Docker). El inconveniente: clona la producción al completo, lo que significa que los datos personales de clientes reales y las credenciales de pago/API reales se incluyen por defecto, y el nodo obtiene una URL pública. Este plugin cierra esa brecha: cada nodo que crea se anonimiza y se aísla automáticamente, antes de que se informe como listo, para que «permitir que la IA del cliente manipule un clon de producción real» no signifique también «exponer datos reales de clientes en internet».

Related MCP server: hostwares-mcp

Configuración

Tres pasos: instala el plugin, indica tu token de Hypernode, reinicia Claude Code.

1. Instala el plugin

Escribe esto directamente en Claude Code (no necesitas terminal):

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

Claude Code obtiene todo directamente desde GitHub: sin descargas, sin servidores separados que ejecutar, nada que clonar manualmente.

(Si prefieres ejecutarlo desde una terminal, los mismos comandos funcionan como claude plugin marketplace add ... / claude plugin install ...).

2. Añade tu token de API de Hypernode

Este plugin necesita tu token de API de Hypernode para comunicarse con tu cuenta de Hypernode en tu nombre. Nunca se almacena en el plugin: lo estableces como una variable de entorno, de la misma manera que establecerías cualquier valor similar a una contraseña.

Encuentra tu token en el Panel de Control de tu Hypernode, luego en tu terminal (antes de abrir Claude Code):

export HYPERNODE_API_TOKEN="your-token-here"

Opcional pero recomendado: restringe qué aplicaciones de Hypernode puede tocar este plugin, para que un error tipográfico nunca pueda afectar al sitio equivocado:

export HYPERNODE_APP_ALLOWLIST="myapp"

(Separa con comas varios nombres de aplicación, ej. "miapp,miapp2", si gestionas más de una).

Consejo: añade ambas líneas al archivo de inicio de tu shell (~/.zshrc o ~/.bashrc) para no tener que reescribirlas cada vez.

3. Reinicia Claude Code

Cierra y vuelve a abrir Claude Code para que reconozca el token y se conecte al plugin. Ya estás listo.

Inicio rápido

Simplemente pregunta, en lenguaje natural:

«Crea una vista previa de Brancher para miapp para que pueda mostrar al cliente el nuevo diseño de la página de categorías.»

Claude crea el nodo, espera a que esté en línea, lo sanitiza (consulta Certificados de seguridad) e informa:

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

A partir de ahí, pídele que haga un cambio y te muestre el resultado, o simplemente di «limpia los nodos de vista previa sobrantes» cuando hayas terminado. Brancher factura por minuto, tanto si alguien lo está viendo como si no.

Qué incluye el plugin

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

Requisitos

  • Una cuenta de Hypernode en un plan Falcons, con un token de API del Panel de Control (Brancher es una función exclusiva de Falcons).

  • La clave SSH que ya usas para acceder a tu Hypernode: no hay nada extra que configurar, los nodos de vista previa de Brancher heredan el acceso automáticamente.

  • Python 3.11+ y uv instalados en la máquina que ejecuta Claude Code (los plugins de Claude Code son solo código; este es el entorno de ejecución que necesitan).

Herramientas MCP

Las 6 herramientas están registradas en el servidor pb-hypernode-mcp (src/pb_hypernode_mcp/server.py). brancher_exec y brancher_put ejecutan los binarios del sistema ssh/rsync utilizando tu agente/clave SSH local ya configurada; este plugin nunca almacena ni retiene material de clave por sí mismo.

Herramienta

Propósito

Argumentos clave

brancher_create

La única herramienta de creación de nodos: impone una etiqueta obligatoria, la lista blanca de aplicaciones y la elegibilidad del plan Falcons, luego envuelve crear -> esperar hasta que sea accesible por SSH -> ejecutar sanitización obligatoria -> informar como listo en una única llamada no evitable. No existe una herramienta separada de «creación en bruto»: es estructuralmente imposible crear un nodo Brancher a través de este plugin sin que se ejecute primero la sanitización. Nunca devuelve una access_url para un nodo que no haya terminado de sanitizarse. Lanza NodeUnreachableTimeoutError si el nodo nunca se vuelve accesible por SSH en 300s, o SanitizationFailedError (access_url retenida) si un comando de sanitización falla a mitad de camino.

appname (str), labels (list[str], obligatorio, al menos uno), clear_services (list[str], opcional, por defecto ["cron"])

brancher_list

Lista los nodos Brancher activos para appname. Devuelve el name, host y minutes de cada nodo (tiempo de actividad de pared desde la creación, no consciente de inactividad). Rechaza cualquier appname que no esté en la lista blanca.

appname (str)

brancher_delete

Elimina un nodo Brancher. Protegido detrás de una re-llamada con confirm=True: la primera llamada (por defecto confirm=False) busca y devuelve los detalles del nodo objetivo más un aviso de confirmación sin eliminar nada; solo una segunda llamada con confirm=True emite la eliminación real. Primero valida el nombre del nodo con el patrón -eph<id>.

node_name (str, <appname>-eph<id>), confirm (bool, por defecto False)

brancher_ssh_info

Devuelve los detalles de conexión SSH (host, user, port) para un nodo, sin abrir una conexión por sí mismo. Lanza NodeNotReadyError si el nodo no tiene una IP asignada aún.

node_name (str)

brancher_exec

Ejecuta un comando de shell en un nodo Brancher a través de SSH (ejecuta el binario ssh del sistema). El único punto de estrangulamiento crítico para la seguridad de la capa de «cambiarlo»: rechaza cualquier node_name que no coincida con el patrón -eph<id>, antes de generar cualquier subproceso; es estructuralmente imposible apuntar esta herramienta a un host de producción. Devuelve stdout/stderr/exit_code; lanza SshConnectionError en el código de salida 255 de ssh, SshCommandTimeoutError en tiempo de espera.

node_name (str), command (str), timeout (float, por defecto 30s)

brancher_put

Sincroniza un archivo/directorio local a un nodo Brancher mediante rsync -az --protect-args a través de SSH. La misma protección de solo -eph y modelo de conexión de agente SSH local que brancher_exec. Lanza SyncError en caso de salida de rsync distinta de cero.

node_name (str), local_path (str), remote_path (str), port (int, por defecto 22)

Habilidades

  • brancher-spinup — crea un nodo de vista previa Brancher desechable clonado de producción, con sanitización automática obligatoria, e informa de su URL de acceso. Úsalo cuando un cliente quiera previsualizar un cambio en un entorno clonado de producción real antes de implementarlo. Envuelve la única llamada a la herramienta brancher_create: nunca reproduce la secuencia de crear/esperar/sanitizar manualmente.

  • brancher-preview — el bucle completo: crea un nodo (mediante la habilidad brancher-spinup), aplica un cambio de código (envía un diff local con brancher_put, o edita en el lugar con brancher_exec), ejecuta solo los comandos de compilación de Magento que el cambio realmente necesita (decide_build_commands() en src/pb_hypernode_mcp/preview_logic.py), visualiza el resultado a través de la herramienta MCP del navegador que ya esté en la sesión, y luego recuerda explícitamente al usuario que el nodo sigue facturando minutos de Brancher. Úsalo cuando un cliente quiera una visión integral de un cambio en un entorno desechable. Nunca elimina el nodo por sí mismo.

  • brancher-cleanup — lista los nodos activos con brancher_list, marca cualquier nodo que esté o supere un umbral de edad (minutes >= threshold_minutes, por defecto 240 minutos / 4 horas, mediante flag_stale_nodes() en src/pb_hypernode_mcp/cleanup_logic.py), y elimina los nodos marcados (individualmente o en lote) solo después de la confirmación explícita del usuario. Úsalo cuando un cliente quiera buscar o eliminar nodos Brancher sobrantes para detener la acumulación de minutos. Brancher factura minutos de pared desde la creación, independientemente de si alguien está usando activamente el nodo.

Certificados de seguridad

  • Desinfección obligatoria: no se puede desactivar. Cada llamada brancher_create ejecuta la secuencia completa de desinfección (src/pb_hypernode_mcp/sanitization/) en el nodo antes de que se informe como "ready" o devuelva un access_url. No hay bandera, opción de configuración ni ruta de omisión: brancher_create es la ÚNICA herramienta MCP de creación de nodos que registra este plugin (no hay una herramienta de creación independiente sin desinfección), y spinup_sanitized_brancher_node() en src/pb_hypernode_mcp/tools/brancher_spinup_flow.py (la función que hay detrás) no puede devolver estructuralmente una URL de acceso sin que todos los comandos de desinfección hayan salido con 0 primero. Si un comando de desinfección falla a mitad del proceso, la herramienta lanza SanitizationFailedError y retiene deliberadamente la URL de acceso; la excepción ni siquiera la lleva, por lo que una persona que la recopte no tiene forma de exponerla accidentalmente.

    La secuencia (impulsada por configuración, con valores predeterminados con forma de Magento en sanitization/config.py::DEFAULT_MAGENTO_SANITIZATION_CONFIG):

    1. Anonimización de PII — Sentencias UPDATE (a través de n98-magerun2 db:query) contra customer_entity, customer_address_entity, sales_order, sales_order_address (nombres/correos electrónicos/teléfonos/calle reemplazados con marcadores de posición anonimizados) y datos de tarjetas almacenados (quote_payment, sales_order_payment: cc_number_enc, cc_cid_enc, cc_owner, additional_data anulados).

    2. Restablecimiento de credenciales de administrador — nombre de usuario/correo electrónico de admin_user restablecido a valores de marcador de posición y contraseña sobrescrita con un hash que es deliberadamente inválido para cualquier contraseña real (bloquea el inicio de sesión basado en formularios hasta que un operador establezca una contraseña real a través de bin/magento admin:user:create).

    3. Forzar modo de prueba para pasarela de pagobin/magento config:set fuerza, por ejemplo, payment/braintree/environment=sandbox, paypal/general/sandbox_flag=1.

    4. Sustitución de claves API de tercerosbin/magento config:set reemplaza claves reales (por ejemplo, ShipperHQ, AvaTax) con valores de prueba ficticios para que ningún nodo de vista previa pueda realizar un cobro real o una llamada API real de terceros con credenciales de producción.

    La forma exacta de las tablas y las integraciones instaladas de una aplicación cliente real deben sobrescribir/extender SanitizationConfig, no depender del valor predeterminado incluido en producción; existe como punto de partida seguro por defecto, no como una promesa de que coincida con cada esquema.

  • Lista blanca de aplicaciones (HYPERNODE_APP_ALLOWLIST): cuando está configurada, brancher_create, brancher_list y brancher_delete rechazan cualquier appname que no esté en la lista.

  • Comprobación de elegibilidad del plan Falconsbrancher_create rechaza aplicaciones que no estén en un plan elegible para Brancher antes de crear nada.

  • Protección exclusiva -ephbrancher_exec y brancher_put validan node_name contra el patrón <appname>-eph<id> (tools/_guards.py::validate_eph_node_name, .fullmatch() — sin coincidencias parciales ni espacios de caracteres finales) antes de abrir cualquier conexión SSH o subproceso. Es estructuralmente imposible apuntar cualquiera de las herramientas a un nombre de host de producción.

  • Confirmar antes de eliminarbrancher_delete nunca elimina en la primera llamada. Requiere una nueva llamada explícita con confirm=True después de mostrar los detalles del nodo de destino; el hecho de que se haya configurado un umbral o que un nodo se haya marcado como obsoleto nunca es en sí mismo una confirmación.

  • Etiqueta obligatoriabrancher_create rechaza llamadas sin labels, por lo que cada nodo se puede rastrear hasta un motivo/ticket.

  • Manejo de tokensHYPERNODE_API_TOKEN se lee solo del entorno y este plugin nunca lo escribe en el disco ni en la configuración del plugin.

  • Protección de argumentos de brancher_putremote_path/local_path se entrecomillan para el shell y rsync se ejecuta con --protect-args, por lo que el shell del host remoto nunca vuelve a analizar un argumento de ruta, bloqueando la inyección de metacaracteres a través de una ruta manipulada.

Este diseño fue verificado por una revisión de seguridad de 3 especialistas antes del lanzamiento (análisis estático, pruebas adversarias, auditoría defensiva). Detectó una brecha crítica real en un borrador anterior: el flujo desinfectado se había creado como una segunda herramienta junto a una ruta de creación sin desinfección aún expuesta, por lo que se insiste tanto en "una herramienta de creación, sin excepciones". ¿Encontraste un problema de seguridad? Abre un issue en lugar de un PR con los detalles del exploit.

Limitaciones (v1)

  • Solo Magento/Mage-OS. La configuración predeterminada de la capa de desinfección (DEFAULT_MAGENTO_SANITIZATION_CONFIG) y la lógica de decisión del comando de compilación de la habilidad brancher-preview (decide_build_commands()) tienen ambas forma de Magento. Esta no es una herramienta genérica multiplataforma: WooCommerce, Shopware, Laravel y otras plataformas alojadas en Hypernode están fuera del alcance de la v1. Una aplicación que no sea de Magento necesitaría como mínimo un SanitizationConfig escrito a mano, y la secuencia de compilación de la habilidad de vista previa no se aplicaría.

  • Sin claves SSH gestionadas por MCP. brancher_exec/brancher_put invocan los binarios ssh/rsync del sistema y dependen completamente de que tu propio agente SSH local/clave ya tenga acceso a los nodos Brancher (que heredan el acceso automáticamente a través del clon completo del sistema de archivos de Brancher desde producción). Este plugin nunca aprovisiona, almacena ni transmite material de clave.

  • Solo transporte stdio. Sin transporte MCP remoto/HTTP en v1: este es un plugin local de Claude Code, ejecutado por cada desarrollador contra su propio HYPERNODE_API_TOKEN. No existe una versión alojada/gestionada de este MCP. El token y el acceso SSH son propiedad total del cliente.

  • Solo API REST. Sin integración de Hypernode Deploy (deploy.php) en v1.

  • Contabilidad de minutos de tiempo real, no consciente de inactividad. La comprobación de obsolescencia de brancher-cleanup usa minutes según lo informado por la API de Hypernode (tiempo de actividad desde la creación); no puede distinguir un nodo inactivo de uno activo.

  • Formas de respuesta de API no verificadas. La forma de respuesta esperada de brancher_list ({"nodes": [{"name", "host", "minutes"}, ...]}) y los nombres de los campos de plan/minutos de brancher_create (plan_type, brancher_minutes_remaining) son suposiciones documentadas, aún no confirmadas con el contrato real de la API de Hypernode en vivo; consulta los docstrings de los módulos en src/pb_hypernode_mcp/tools/brancher_list.py y src/pb_hypernode_mcp/tools/brancher_create.py si las respuestas de la API no coinciden en tiempo de ejecución. Ejecuta una prueba de humo real de create -> brancher_exec whoami contra una cuenta del plan Falcons antes de apuntar esto a un cliente.

  • Descarga de pruebas de Playwright aún no implementada. Ejecutar el conjunto de pruebas funcionales contra un nodo Brancher en lugar de local/CI se rastrea por separado; consulta ProxiBlue/pb-hypernode-mcp#1 o el ticket de diseño original.

Desarrollo

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

No se ejecutan pruebas de integración automáticamente contra una cuenta real de Hypernode. Si estás cambiando tools/brancher_exec.py o la lógica de sondeo de capacidad de alcance en tools/brancher_spinup_flow.py, realiza una prueba de humo manual contra un nodo real del plan Falcons antes de fusionar; los simulacros no pueden detectar una suposición incorrecta de usuario SSH o un desajuste de forma en la respuesta real de la API.

Para instalar tu propio clon para desarrollo local en lugar de la versión publicada, apunta Claude Code directamente a la carpeta:

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

Después de editar las habilidades o el código del servidor, ejecuta claude plugin update pb-hypernode-mcp@pb-hypernode-mcp para aplicar el cambio sin volver a agregar el marketplace.

Si el plugin no aparece después de la instalación, verifica: claude plugin list muestra pb-hypernode-mcp como habilitado; una sesión nueva de Claude Code enumera las herramientas brancher_* y las tres habilidades brancher-*; HYPERNODE_API_TOKEN está configurado en el mismo shell desde el que iniciaste Claude Code.

Licencia

Apache-2.0. Consulta LICENSE y NOTICE para conocer la atribución de dependencias/servicios de terceros (API de Hypernode Brancher, ssh/rsync del sistema, SDK MCP de Python).

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