Skip to main content
Glama
ProxiBlue

pb-hypernode-mcp

by ProxiBlue

pb-hypernode-mcp

クライアント側のClaude Codeプラグイン for Hypernode Brancher — 使い捨てのプロダクションクローンプレビュー環境を起動し、SSH経由でAI支援による変更を加え、既存のブラウザMCPを介して表示します。

なぜ必要か

Brancherは、本番Hypernodeの可変的な一時コピーを提供します(最大24時間前のデータ、完全なツールチェーン、実際のインフラ — Dockerの近似ではありません)。ただし欠点として、本番環境を丸ごとクローンするため、デフォルトでは実際の顧客の個人情報や本物の決済・API認証情報もそのまま含まれ、ノードには公開URLが割り当てられます。このプラグインはそのギャップを埋めるものです — 作成されるすべてのノードは、準備完了と報告される前に自動的に匿名化およびサンドボックス化されるため、「クライアントのAIに本番クローンを触らせる」という行為が「実際の顧客データをインターネット上にさらす」ことを意味しなくなります。

Related MCP server: live-preview-mcp

セットアップ

3つの手順:プラグインのインストール、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. Hypernode APIトークンの追加

このプラグインは、あなたのHypernodeアカウントとやり取りするためにHypernode APIトークンを必要とします。プラグインによってトークンが保存されることは一切ありません — 環境変数として設定する方法で、パスワードのような値を設定するのと同じ方法です。

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を閉じて再度開き、トークンを読み込んでプラグインに接続させます。準備完了です。

クイックスタート

あとは、普通の英語で質問するだけです:

"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トークン(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エージェント/キーを使用してシステムのssh/rsyncバイナリを呼び出します — このプラグイン自体が鍵素材を保持したり保存したりすることはありません。

ツール

目的

主な引数

brancher_create

唯一のノード作成ツール:必須ラベル、アプリ許可リスト、Falconsプラン適格性を強制し、作成→SSH接続可能になるまで待機→必須のサニタイズを実行→準備完了を報告する、1回のバイパス不可能な呼び出しにまとめます。独立した「生の作成」ツールは存在しません — このプラグインを通じてBrancherノードを作成する際に、サニタイズを先に実行せずに作成することは構造的に不可能です。サニタイズが完了していないノードのaccess_urlを返すことはありません。ノードが300秒以内にSSH接続可能にならない場合はNodeUnreachableTimeoutErrorを、サニタイズコマンドが途中で失敗した場合はSanitizationFailedError(アクセスURLは提供されません)を発生させます。

appname (str), labels (list[str], 必須、少なくとも1つ), clear_services (list[str], オプション、デフォルトは["cron"])

brancher_list

appnameのアクティブなBrancherノードを一覧表示します。各ノードのname、host、minutes(作成からの経過時間(壁時計)、アイドル時間は考慮しません)を返します。許可リストにないappnameは拒否します。

appname (str)

brancher_delete

Brancherノードを削除します。confirm=Trueの再呼び出しが必要:最初の呼び出し(デフォルトconfirm=False)は削除せずにターゲットノードの詳細と確認プロンプトを検索・返します。2回目の呼び出しで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ノード上でシェルコマンドを実行します(システムのsshバイナリを呼び出します)。「変更を加える」レイヤーの唯一の安全臨界チョークポイント:サブプロセスを起動する前に、node_nameが-eph<id>パターンに一致しない場合は拒否します — このツールを本番ホストに向けることは構造的に不可能です。stdout/stderr/exit_codeを返します。sshの終了コード255の場合はSshConnectionError、タイムアウトの場合はSshCommandTimeoutErrorを発生させます。

node_name (str), command (str), timeout (float, デフォルト30秒)

brancher_put

SSH経由でrsync -az --protect-argsを使ってローカルファイル/ディレクトリをBrancherノードに同期します。-eph限定ガードとローカルSSHエージェント接続モデルはbrancher_execと同じです。rsyncの終了コードが0以外の場合は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 呼び出しは、ノードが "準備完了" と報告されるか access_url を返す前に、完全なサニタイゼーションシーケンス (src/pb_hypernode_mcp/sanitization/) を実行します。フラグ、設定オプション、バイパスパスはありません — brancher_create はこのプラグインが登録する唯一のノード作成MCPツールです(別のサニタイズされていない作成ツールはありません)。また、その背後にある関数 spinup_sanitized_brancher_node() (src/pb_hypernode_mcp/tools/brancher_spinup_flow.py) は、すべてのサニタイゼーションコマンドが終了コード0で終了するまで、構造的に access_url を返すことができません。サニタイゼーションコマンドが途中で失敗した場合、ツールは SanitizationFailedError を発生させ、意図的に access_url を隠蔽します — 例外はそれを保持していないため、キャッチする呼び出し元が誤ってそれを表面化する方法はありません。

    シーケンス(設定駆動、sanitization/config.py::DEFAULT_MAGENTO_SANITIZATION_CONFIG にMagento向けデフォルト):

    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 をNULL化)。

    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接続やサブプロセスを開く前に、node_name を <appname>-eph<id> パターンに対して検証します(tools/_guards.py::validate_eph_node_name、.fullmatch() — 部分一致や末尾文字のギャップはありません)。どちらのツールも本番ホスト名を指すことは構造的に不可能です。

  • 削除前確認 — brancher_delete は最初の呼び出しでは決して削除しません。ターゲットノードの詳細を表示した後、明示的な confirm=True の再呼び出しが必要です。しきい値が設定されていることやノードが古いとフラグが立っていることは、それ自体が確認にはなりません。

  • 必須ラベル — brancher_create は labels がない呼び出しを拒否するため、すべてのノードは理由/チケットにトレース可能です。

  • トークン処理 — HYPERNODE_API_TOKEN は環境からのみ読み取られ、このプラグインによってディスクやプラグイン設定に書き込まれることはありません。

  • brancher_put 引数の強化 — remote_path/local_path はシェルクォートされ、rsync は --protect-args で実行されるため、リモートホストのシェルがパス引数を再解析することはなく、細工されたパスによるメタキャラクタインジェクションを遮断します。

この設計はリリース前に3人の専門家によるセキュリティレビュー(静的解析、敵対的テスト、防御的監査)でチェックされました。初期のドラフトで実際の重大なギャップを発見しました — サニタイズされたフローが、まだ露出している生のサニタイズされていない作成パスと並んで2番目のツールとして構築されていたため、上記で「作成ツールは1つ、例外なし」としつこく強調されています。セキュリティ問題を発見しましたか? エクスプロイトの詳細を含むPRではなく、Issueを開いてください。

制限事項 (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_* ツールと3つの brancher-* スキルがリストされること;HYPERNODE_API_TOKEN がClaude Codeを起動したシェルで設定されていること。

ライセンス

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