Skip to main content
Glama
ProxiBlue

pb-hypernode-mcp

by ProxiBlue

pb-hypernode-mcp

Claude Code 的客户端插件,用于 Hypernode Brancher — 快速创建可丢弃的生产环境克隆预览节点,通过 SSH 驱动 AI 辅助更改,并通过你现有的浏览器 MCP 查看。

为什么需要它

Brancher 会为你提供一个可变、临时的生产环境 Hypernode 副本(包含 ≤24小时前的数据、完整的工具链、真实的基础设施 — 而非 Docker 模拟)。问题在于:它会完整克隆生产环境,这意味着真实的客户 PII(个人身份信息)以及真实的支付/API 凭证也会默认被包含进来,并且该节点会获得一个公开 URL。本插件弥补了这一差距 — 它创建的每一个节点都会自动进行匿名化和沙箱化处理,在报告就绪之前完成,因此“让客户端的 AI 在一个真实的克隆生产环境中操作”并不意味着“将真实的客户数据暴露在互联网上”。

Related MCP server: live-preview-mcp

设置

三个步骤:安装插件、告诉它你的 Hypernode Token、重启 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. 添加你的 Hypernode API Token

本插件需要你的 Hypernode API Token 才能代表你与你的 Hypernode 账户通信。它不会被插件存储在任何地方 — 你将其设置为环境变量,就像设置任何密码类值一样。

在你的 Hypernode 控制面板中查找你的 Token,然后在你的终端中(在打开 Claude Code 之前)执行:

export HYPERNODE_API_TOKEN="your-token-here"

(可选但推荐)限制此插件允许操作的 Hypernode 应用,以防止因输入错误而误操作到错误的站点:

export HYPERNODE_APP_ALLOWLIST="myapp"

(如果管理多个应用,请用逗号分隔多个应用名称,例如 "myapp,myapp2"。)

提示:将这两行添加到你的 shell 启动文件(~/.zshrc 或 ~/.bashrc)中,这样你就不必每次都重新输入了。

3. 重启 Claude Code

关闭并重新打开 Claude Code,以便它获取 Token 并与插件建立连接。一切准备就绪。

快速开始

只需用普通英文提问:

“为 myapp 创建一个 Brancher 预览环境,以便我可以向客户展示新的分类页面布局。”

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

要求

  • 一个 Falcons 计划中的 Hypernode 账户,并具有来自控制面板的 API Token(Brancher 是 Falcons 独有的功能)。

  • 你用于连接 Hypernode 的 SSH 密钥 — 无需额外设置,Brancher 预览节点会自动继承访问权限。

  • 在运行 Claude Code 的机器上安装 Python 3.11+ 和 uv(Claude Code 插件本质上是代码 — 这是它们所需的运行时环境)。

MCP 工具

所有 6 个工具都在 pb-hypernode-mcp 服务器(src/pb_hypernode_mcp/server.py)上注册。brancher_exec 和 brancher_put 使用你已经配置好的本地 SSH agent/密钥调用系统 ssh/rsync 二进制文件 — 本插件本身不持有或存储密钥材料。

工具

目的

关键参数

brancher_create

唯一的节点创建工具:强制要求标签、应用允许列表和 Falcons 计划资格,然后封装 创建 -> 等待直到 SSH 可达 -> 运行强制清理 -> 报告就绪 为一个不可绕过的调用。没有独立的“原始创建”工具 — 通过此插件创建 Brancher 节点时,在结构上不可能绕过清理步骤。对于未完成清理的节点,绝不返回 access_url。如果节点在 300 秒内无法通过 SSH 访问,则抛出 NodeUnreachableTimeoutError;如果清理命令中途失败,则抛出 SanitizationFailedError(访问 URL 将被保留)。

appname (str), labels (list[str], 必需, 至少一个), clear_services (list[str], 可选, 默认为 ["cron"])

brancher_list

列出 appname 的活动 Brancher 节点。返回每个节点的 name、host 和 minutes(自创建以来的运行时间,而非空闲时间)。拒绝任何不在允许列表中的 appname。

appname (str)

brancher_delete

删除一个 Brancher 节点。需要 confirm=True 重新调用:第一次调用(默认为 confirm=False)会查找并返回目标节点的详细信息以及一个确认提示,但不执行删除操作;只有第二次调用 confirm=True 才会真正执行 DELETE 请求。首先验证节点名称是否符合 -eph<id> 模式。

node_name (str, <appname>-eph<id>), confirm (bool, 默认 False)

brancher_ssh_info

返回一个节点的 SSH 连接详细信息(host、user、port),而不自行建立连接。如果节点尚未分配 IP,则抛出 NodeNotReadyError。

node_name (str)

brancher_exec

通过 SSH 在 Brancher 节点上运行 Shell 命令(调用系统 ssh 二进制文件)。这是“变更”层唯一的安全关键检查点:在任何子进程启动之前,拒绝任何不匹配 -eph<id> 模式的 node_name — 在结构上不可能将此工具指向生产主机。返回 stdout/stderr/exit_code;如果 ssh 自身的退出码为 255,则抛出 SshConnectionError;如果超时,则抛出 SshCommandTimeoutError。

node_name (str), command (str), timeout (float, 默认 30s)

brancher_put

通过 SSH 使用 rsync -az --protect-args 将本地文件/目录同步到 Brancher 节点。与 brancher_exec 相同的 -eph 唯一性保护和本地 SSH agent 连接模型。如果 rsync 退出码非零,则抛出 SyncError。

node_name (str), local_path (str), remote_path (str), port (int, 默认 22)

技能

  • brancher-spinup — 从生产环境克隆创建一个可丢弃的 Brancher 预览节点,包含强制自动清理,并报告其访问 URL。当客户希望在变更上线前,在真实的克隆生产环境中预览变更时使用。封装了单一的 brancher_create 工具调用 — 绝不手动重复创建/等待/清理序列。

  • brancher-preview — 完整流程:启动一个节点(通过 brancher-spinup 技能),应用代码变更(使用 brancher_put 推送本地差异,或使用 brancher_exec 就地编辑),仅运行变更实际需要的 Magento 构建命令(src/pb_hypernode_mcp/preview_logic.py 中的 decide_build_commands()),通过会话中已有的任何浏览器 MCP 工具查看结果,然后明确提醒用户该节点仍在消耗 Brancher 分钟数。当客户希望在一个可丢弃的环境中端到端查看变更时使用。绝不自行删除节点。

  • brancher-cleanup — 使用 brancher_list 列出活动节点,标记任何已达到或超过某个时间阈值(minutes >= threshold_minutes,默认 240 分钟/4 小时,通过 src/pb_hypernode_mcp/cleanup_logic.py 中的 flag_stale_nodes() 实现),仅在获得用户明确确认后删除被标记的节点(单个或批量)。当客户希望检查或移除剩余的 Brancher 节点以停止分钟数累积时使用。Brancher 按自创建以来的运行时间计费,无论是否有人正在使用该节点。

安全护栏

  • 强制净化——不可禁用。 每次调用 brancher_create 都会在节点被报告为 "ready" 或返回 access_url 之前,对其执行完整的净化序列(src/pb_hypernode_mcp/sanitization/)。没有标志、配置选项或绕过路径——brancher_create 是该插件注册的唯一节点创建 MCP 工具(没有单独的、未净化的创建工具),并且 src/pb_hypernode_mcp/tools/brancher_spinup_flow.py 中的 spinup_sanitized_brancher_node()(其背后的函数)在结构上无法在每条净化命令都成功退出(退出码为 0)之前返回访问 URL。如果净化命令中途失败,该工具会引发 SanitizationFailedError 并故意不提供访问 URL——异常本身甚至不携带该 URL,因此捕获它的调用方无法意外地将其暴露出来。

    该序列(由配置驱动,默认的 Magento 形状配置位于 sanitization/config.py::DEFAULT_MAGENTO_SANITIZATION_CONFIG):

    1. PII 匿名化——针对 customer_entity、customer_address_entity、sales_order、sales_order_address 执行 UPDATE 语句(通过 n98-magerun2 db:query)(姓名/电子邮件/电话/街道被替换为匿名占位符),并将存储的卡数据(quote_payment、sales_order_payment:cc_number_enc、cc_cid_enc、cc_owner、additional_data)置空。

    2. 管理员凭据重置——admin_user 用户名/电子邮件重置为占位值,密码被覆盖为对任何真实密码都故意无效的哈希值(锁定基于表单的登录,直到操作员通过 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。

  • Falcons 计划资格检查——brancher_create 在创建任何内容之前,会拒绝不在 Brancher 合格计划中的应用。

  • -eph 唯一守卫——brancher_exec 和 brancher_put 在打开任何 SSH 连接或子进程之前,会针对 <appname>-eph<id> 模式(tools/_guards.py::validate_eph_node_name,.fullmatch()——无部分匹配或尾随字符间隙)验证 node_name。在结构上,不可能将任一工具指向生产主机名。

  • 确认后再删除——brancher_delete 在首次调用时从不删除。它需要在显示目标节点的详细信息后,进行显式的 confirm=True 重新调用;配置了阈值或节点被标记为过期本身绝不构成确认。

  • 强制标签——brancher_create 拒绝没有 labels 的调用,因此每个节点都可追溯到某个原因/工单。

  • 令牌处理——HYPERNODE_API_TOKEN 仅从环境变量读取,此插件从不将其写入磁盘或插件配置。

  • brancher_put 参数强化——remote_path/local_path 经过 shell 引用,并且 rsync 使用 --protect-args 运行,因此远程主机的 shell 永远不会重新解析路径参数,从而阻止通过精心构造的路径进行元字符注入。

此设计在发布前经过了 3 位专家的安全审查(静态分析、对抗性测试、防御性审计)。它发现了一个早期草案中的真实关键漏洞——净化流程是作为第二个工具构建的,同时还有一个仍然暴露的原始、未净化的创建路径——这就是上面如此坚持地指出“一个创建工具,没有例外”的原因。发现了安全问题?请提交一个包含漏洞详细信息的问题,而不是拉取请求。

局限性(v1)

  • 仅限 Magento/Mage-OS。 净化层的默认配置(DEFAULT_MAGENTO_SANITIZATION_CONFIG)和 brancher-preview 技能的构建命令决策逻辑(decide_build_commands())都是针对 Magento 的。这不是一个通用的多平台工具——WooCommerce、Shopware、Laravel 和其他 Hypernode 托管的平台不在 v1 的范围内。非 Magento 应用至少需要一个手写的 SanitizationConfig,并且预览技能的构建序列将不适用。

  • 无 MCP 管理的 SSH 密钥。 brancher_exec/brancher_put 调用系统 ssh/rsync 二进制文件,并完全依赖您自己的本地 SSH 代理/密钥已经有权访问 Brancher 节点(这些节点通过 Brancher 从生产环境进行的完整文件系统克隆自动继承访问权限)。此插件从不配置、存储或传输密钥材料。

  • 仅 stdio 传输。 v1 中没有远程/HTTP MCP 传输——这是一个本地 Claude Code 插件,每个开发者针对自己的 HYPERNODE_API_TOKEN 运行。此 MCP 没有托管/管理版本。令牌和 SSH 访问完全由客户端拥有。

  • 仅 REST API。 v1 中没有 Hypernode Deploy(deploy.php)集成。

  • 挂钟时间(非空闲感知)分钟计算。 brancher-cleanup 的过期检查使用 Hypernode API 报告的 minutes(自创建以来的运行时间)——它无法区分空闲节点和活跃使用的节点。

  • 未经验证的 API 响应结构。 brancher_list 的预期响应结构({"nodes": [{"name", "host", "minutes"}, ...]})和 brancher_create 的计划/分钟字段名称(plan_type、brancher_minutes_remaining)是文档化的假设,尚未针对实时 Hypernode API 合同进行确认——如果运行时 API 响应不匹配,请参阅 src/pb_hypernode_mcp/tools/brancher_list.py 和 src/pb_hypernode_mcp/tools/brancher_create.py 中的模块文档字符串。在将此工具指向客户端之前,请针对 Falcons 计划账户运行一次真实的创建 -> brancher_exec whoami 冒烟测试。

  • 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 的同一 shell 中设置。

许可证

Apache-2.0。有关第三方依赖项/服务归属(Hypernode Brancher API、系统 ssh/rsync、MCP Python SDK),请参阅 LICENSE 和 NOTICE。

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.

  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

Scored across 7 tools

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

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to start, manage, and embed live application previews in iframes, with support for multiple frameworks, Docker, tunnels, and authentication.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Connects AI assistants to GitHub repositories, pull requests, issues, commits, and code search while enabling repository visibility controls, CI/CD monitoring, sandboxed local filesystem access, and code quality/security analysis.
    13
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI coding agents to safely execute commands, run tests, and modify project files inside disposable, policy-enforced Docker sandboxes that are isolated from the host machine and its credentials.
    15
    MIT