mcpField
X
Xahau MCP

Xahau MCP

ローカル
github.com金融データ61 週間前に更新

Xahau MCP について

Xahau MCPは、Xahauネットワーク向けの読み取り専用MCPサーバーです。ローカルVMでHooks WASMを実行して静的セキュリティ分析を行うほか、台帳照会、トランザクションのシミュレーション、ガバナンスや報酬の情報、未署名トランザクションの作成に対応します。

主な機能

  1. 01ローカルVMでのHooks WASM実行
  2. 02Hookの静的セキュリティ分析
  3. 03台帳とHook状態の読み取り
  4. 04トランザクションのシミュレーションと失敗診断
  5. 05未署名トランザクションの作成

活用シーン

  1. 01デプロイ前のHook実行シミュレーション
  2. 02Hookバイトコードの監査
  3. 03アカウント報酬とガバナンス状態の確認
  4. 04失敗したトランザクションの調査と未署名取引の準備

MCP 対応

MCPサーバーはXahauの台帳、Hookの実行・分析、ガバナンス関連のツールを公開し、参照リソースとガイド付きプロンプトも提供します。ネットワークへのアクセスは読み取り専用で、トランザクション作成ツールが返すのは未署名の取引のみです。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"hugegreencandle-xahau": {
"command": "npx",
"args": [
"-y",
"xahau-mcp"
],
"env": {
"XAHAU_RPC_URLS": "<XAHAU_RPC_URLS>",
"XAHAU_TEST_RPC_URLS": "<XAHAU_TEST_RPC_URLS>"
}
}
}
}
起動コマンドnpx -y xahau-mcp
設定が必要な環境変数
XAHAU_RPC_URLSOptional comma-separated override of MAINNET Xahau JSON-RPC endpoints (defaults to built-in mainnet endpoints)
XAHAU_TEST_RPC_URLSOptional comma-separated override of TESTNET Xahau JSON-RPC endpoints (defaults to built-in testnet endpoints)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmxahau-mcp2.3.0

ツール

87

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
networkenumいいえmainnet | testnet

詳細

xahau-mcp

**Xahau ネットワーク**向けのModel Context Protocolサーバーです。2つの点で初めての試みです。Hook の実際の WebAssembly バイトコードをローカル VM で実行する(xahaud ノードは不要)ことと、Hooks 専用の静的解析/セキュリティルールエンジンで解析することです。どちらも完全にオフラインで動作します。さらに、読み取り専用のレジャーアクセス、Xahau 対応のバイナリーコーデック、命令数に基づく手数料見積もり、ネットワーク報酬の計算、ガバナンス用ヘルパー、未署名トランザクションのビルダーを備えています。

Xahau は XRPL のフォークで、目玉機能はHooks、つまりオンレジャーで動作する小さな WebAssembly スマートコントラクトです。Xahau 向けの MCP も Hooks 向けの静的アナライザーも存在しませんでした。このプロジェクトはその両方を実現します。

xahau-mcp v2.0 フライトシミュレーターのデモ

三位一体 — 安全な Hooks を最初から最後まで

3つのオープンソースツールで、1つのワークフローを実現します。作成 → 1件のトランザクションをシミュレーション → すべての入力を検証。 xahau-mcp はシミュレーションの段階を担います。

段階ツール機能
作成xahc安全な Hook を作成・コンパイルし、クリーンで lint 済みの WASM を生成します
1件をシミュレーションxahau-mcpライブトランザクション1件に対して実際のバイトコードを実行します
すべてを検証xahc-prover対象範囲内のすべての入力で不変条件が成立することを証明します。成立しない場合は反例を返します

有用な理由

このサーバーをMCP対応エージェント(Claudeなど)に指定すると、次のことができます。

  • 署名する前に将来を確認 — simulate_transaction は署名前のフライトシミュレーターです。署名されていないトランザクションが起動するすべてのフックを、ライブ台帳状態に対して実際のバイトコードとして実行し、フックごとの承認/ロールバック、デコード済みの出力トランザクション、シミュレートされた状態書き込み、ラベル付きの静的エンジン事前チェックを示します。兄弟機能の what_if はタイムマシンです。変更を加えたうえで、実際の過去のトランザクションを元の台帳上で再生できます。実際の請求で発生した GenesisMint の支払いを、最小単位まで正確に(72,251,963 drops)再現できることを検証済みで、テストで固定されています。

  • デプロイせずにフックを実行 — execute_hook は実際の CreateCode WASM をローカルVMでインスタンス化し、シミュレートされたトランザクションと台帳状態を通じて Hook API を提供し、実際の accept/rollback の判断、戻りコード/文字列、状態書き込み、出力トランザクション、呼び出しトレースを報告します。xahaud ノードは不要です。

  • インストール前にフックを監査 — CreateCode WASM(またはオンレジャーのフックハッシュ)を貼り付けると、SARIF-lite形式の検出結果が得られます。accept/rollback 終了処理の欠落、ガードされていないループ(_g)、不明な env インポート、危険な HookGrant、範囲が広すぎる HookOn などを検出します。

  • 難解な HookOn ビットマップを双方向にデコード — 256ビットの反転アクティブロー・マスク(アクティブハイの SetHook ビットを含む)は間違えやすいですが、ここでは検証され、往復テスト済みです。

  • Xahau の台帳状態を読み取り — アカウント、インストール済みフック、フック定義、フック状態、トランザクション(HookExecutions メタデータ付き)、台帳を読み取ります。

  • 小口利用者が最もよく尋ねる質問に回答 — reward_status は、アカウントが Xahau ネットワーク報酬(Balance Adjustments)にオプトインしているか、正確にどれだけの XAH が蓄積されているか(ジェネシス報酬フック独自の計算式とライブパラメーターを使用して算出し、実際のオンチェーン支払いを最小単位まで正確に再現できることを検証済み)、次回請求可能な時期、請求が期限を過ぎているか(請求が遅れると利回りを失います)を、あらゆるアカウントについて示します。

  • Evernode ホストを診断 — evernode_host_diagnostics は、Xahau 最大の運用者グループ向けの公式トラブルシューティングチェックリストを自動化します。登録、ハートビートの稼働状況(実際のオンチェーンのアクティブルール)、レピュテーション、EVR トラストライン、リースオファー、仕様、蓄積された報酬を、1回の読み取り専用呼び出しで確認できます。

  • 失敗したトランザクションを説明 — diagnose_failed_tx は、エンジン結果とフックの戻り文字列を、平易な原因説明と具体的な修正方法に変換します。

  • ガバナンスをリアルタイムで監視 — governance_state は、Genesis Governance Game のフック状態全体をデコードします。20の議席を誰が占めているか、未決のすべての投票と集計結果、変更(メンバー交代、報酬率変更)が実行されようとしているかを確認できます。これを表示できるエクスプローラーはありません。

  • 未署名トランザクションを構築(SetHook、ClaimReward、Payment)し、セキュリティの事前チェックを自動実行 — 返されるのは未署名のトランザクションであり、オフラインで署名できます。

これが私たちの知る限り最も高度なブロックチェーン MCP である理由

大胆な主張ですので、検証可能な根拠を示します(2026-06-11)。私たちの知る限り、Ethereum、Solana、Bitcoin、XRPL など、どのチェーンの MCP にも、以下のうち2つでさえ組み合わせたものはありません。最も近い比較対象はクラウドシミュレーション MCP(たとえば、ホスト環境でシミュレーションを行う Tenderly のもの)と、単体のアナライザー(たとえば、EVM 専用で MCP ではない Slither)です。

  1. オンチェーンのコントラクトバイトコードをローカル VM で実行 — execute_hook は、ノードもクラウドもアカウントも使わず、実際の CreateCode WASM を実行します。ABI ラッパーでも、ホスト型シミュレーターでもありません。
  2. チェーンの実測値を正解データとする、回帰テストで固定された忠実度スコアを公開 — vm_fidelity_report は、実際のメインネットのフック実行を30件再生します。30/30件が一致(100%)、劣化は0件であり、ライブトラフィックの大半を占める外部状態を読み取るフックも含まれます。この30件はすべてaccept 方向です(ライブの Xahau トラフィックはハートビートが大半を占めます)。この指標自体がそのことを示し、accept/rollback の構成を報告するとともに、accept のみのコーパスでは VM と常に accept するスタブを区別できないと警告します。rollback 方向は、実際のジェネシスバイトコード(ガバナンスの Invoke → rollback)で検証しています(tests/regression.test.ts)。コーパス、手法、そして率直な履歴(25% → 0% → 100%)はdocs/FIDELITY.mdにあります。この検証を試みる他のブロックチェーン MCP を、私たちは知りません。
  3. プロトコル内の静的セキュリティ分析 — ネットワーク独自のジェネシスフックを基準に調整した、Hooks 専用のルールエンジン(SARIF-lite の検出結果)です。
  4. プロトコル内の差分ファジング — fuzz_hook は、ローカル VM でコントラクトの accept/reject の判定境界を特定します。
  5. 実際のバイトコードを使った実トランザクションの事後分析 — hook_execution_postmortem は、チェーン上で実際に発火した処理を再生して比較します。
  6. オンチェーンの経済的な仕組みを正確に再現 — reward_status は、ジェネシスの報酬フックの計算式を再実装し、実際に発行された報酬を最小単位まで再現します(検証済みで、テストにより固定されています)。
  7. ライブのガバナンスをエンドツーエンドでデコード — governance_state は、Governance Game のすべての席、投票、集計、しきい値をリアルタイムで表示します。
  8. エコシステムの実際の課題に対応する運用診断ツール:失敗したトランザクションの原因と修正方法の診断、Evernode ホストの健全性確認、請求期限超過の検出。

上記の主張はすべて、このリポジトリから再現できます。コーパスはコミット済みで、テストは数値を検証し、正規の情報源(xahaud のジェネシスフック、evernode-js-client)はコード内で参照されています。

安全性に関する方針

  • ネットワークに対しては読み取り専用です。このサーバーにはsubmitもsignもありません。

  • 秘密鍵を保管しません。ビルダーツールがシークレット/シードを受け取ることはなく、オフラインで署名するための手順とともに、常に未署名のトランザクションを返します(例:xamanまたはxrpl-accountlibを使用)。デフォルトではテストネットを使用します。

  • 忠実性を正直に示します。execute_hookは、シミュレートされた環境で実際のバイトコードを実行します。VMは、78個あるHook API関数のうち大部分を実装しています。ほぼすべてのXFL浮動小数点API(float_oneとの照合で検証済み。float_root/float_logは例外で、NOT_IMPLEMENTEDを返します)、スロットテーブルとSTObjectサブフィールドの抽出(slot_subfield/sto_subfieldは実際のトランザクションとバイト単位で一致)、state、otxn_*/hook_*、util_accid/util_raddr/util_verify/util_sha512hなどを実装しています。STObjectの変更(sto_emplace/erase/validate)、util_keylet(accountとhookはライブ台帳インデックスとの照合で検証済み。offer/escrow/check/ticket/signersは標準形式でフェイルセーフ)、**slot_setと外部hook state(state_foreign/state_foreign_set)の非同期事前解決**(execute_hook resolveKeylets:trueは、hookが読み取る台帳オブジェクトと外部stateエントリを取得します。解決済みの読み取りによって次の読み取り先が判明する場合があるため、反復して取得し、再実行します)、slot_float/float_sto/float_sto_set(STAmount ⇄ XFLを**双方向**で変換。nativeまたはissued/IOUのAmountをfloatに解析し、再びシリアライズできます。以下のissuedレイアウトは、ビット63より下がXFLレイアウトそのものです)、および32バイトのstateキーのパディング(短いキーはオンレジャーと同じく左側をゼロで埋めます)もサポートされています。state_foreign_setは書き込みを記録しますが、オンチェーンのHookGrant要件はモデル化しません。etxn_detailsは開示済みの合成プレースホルダーを返します(syntheticCallsに記載され、accept/rollbackの判定には影響しません)。忠実に再現できないものは正直に記録されます。未検証のkeyletサブタイプ、meta_slot、その他モデル化されていない呼び出しは、実際のNOT_IMPLEMENTEDコードを返し、unsupportedCallsに記載され、実行結果にdegradedのマークが付きます。**決して偽装しません。**VMはガード予算をモデル化します(_gは各ガードで宣言されたmaxiterを適用し、超過するとGUARD_VIOLATIONを返します)。また、stateAppliedを報告します(stateの書き込みはaccept時にのみコミットされ、rollback時には破棄されます)。これはコンセンサスに忠実なxahaudのレプリカではありません。ガード以外の手数料/燃料の計量はなく、XFL演算は四捨五入ではなく切り捨てるため(float_mulratioの切り上げフラグや最下位有効桁の結果が異なる場合があります)、値レベルの演算もテスト済みの範囲でのみ検証されています。ループがあるにもかかわらず_gガードがないhookは、オンチェーンでは無効なため、実行前に**拒否されます**。また、ガード付きの実行も**VM予算**によって制限されます(累計ガード呼び出し100万回/実時間2秒。コンセンサス上の制限ではなく、ローカルVMの上限として明記)。金融/リソース関連のhookは、必ずテストネットで確認してください。hook_dry_runはSTATIC_ONLY、compute_rewardはDOCUMENTED_MODELです(レガシー。reward.cを正確に再実装し、実際のオンチェーンGenesisMintによるdropへの支払いを再現するREWARD_HOOK_FORMULAを備えたreward_statusを推奨します)。estimate_hook_feeはESTIMATE`です。

  • リソースとプロンプト。ツールに加えて、このサーバーはMCPリソース(xahau://rules、xahau://hook-api、xahau://tx-types)と、ガイド付きプロンプト(audit_hook、simulate_hook、explain_hook)を公開しているため、エージェントは参照データを取得し、一般的なワークフローを直接実行できます。

ツール

Hook インテリジェンス(オフライン — コア機能)

ツール目的
execute_hookローカル VM で実際の Hook バイトコードを実行し、シミュレーションしたトランザクション/状態に対して実行します → 実際の承認/ロールバック、戻り値コード、状態への書き込み、出力、トレース(LOCAL_VM)。
simulate_transaction署名前トランザクション・フライトシミュレーター — 未署名トランザクションの結果を予測します。起点となるアカウントとステークホルダーの Hook チェーン(順序は xahaud の Transactor.cpp/applyHook.cpp に準拠)が、ライブ状態に対して実際のバイトコードとして実行されます。Hook ごとの判定、デコード済みの出力、状態への書き込み、静的なエンジン事前チェック、詐欺スコアを確認できます。名前付き Hook:HookName を設定してインストールされた Hook は、トランザクションに同じ HookName が含まれる場合にのみ実行されます(それ以外の場合は not fired: hook requires HookName … と報告されます)。EscrowFinish/EscrowCancel:エスクロー所有者(Owner + OfferSequence)は強いステークホルダーとして実行されます。宛先はフラグ付けされますが、推測されません。
what_ifタイムマシン — 実際の過去のトランザクションを取得し、オーバーライドを適用して、元のレジャーで再シミュレーションします。実際の報酬請求における GenesisMint からドロップへの移転を再現します(テスト用にロックされています)。
fuzz_hook差分ファジング:生成された多数のトランザクションを VM で実行し、Hook が承認/ロールバックする判定境界(承認するトランザクションの種類/金額と、拒否するもの)を特定します。
annotate_hook_traceexecute_hook の trace[] をバイト幅に基づいて人が読める値にデコードします:正規 XFL 浮動小数点数(definite)、int64/native drops(両エンディアン)、UInt32 + Ripple エポック日時、候補アカウント ID → r アドレス(possible)、32 バイトのハッシュ。生の 16 進数は常に保持されます。オフラインで動作します。
hook_report1 回の呼び出しで完全なレポートを生成:構造 + 平易な英語での分類 + セキュリティ上の指摘 + 手数料。
hook_execution_postmortem実際のオンチェーントランザクションの Hook を事後分析:トランザクション、meta.HookExecutions、エンジン結果を取得し、実行された各 Hook の実際のバイトコードを VM で実行して、VM の承認/ロールバックをチェーンに記録された結果と比較します。オンチェーンの判定が正式な結果です。VM 実行は LOCAL_VM です。劣化状態または判定不能の場合、agree は false ではなく null になります。RPC はシリアルに実行されます:HookHash ごとに tx 1 回 + ledger_entry 1 回。
vm_fidelity_report誠実な忠実度指標:実際のメインネット HookExecutions の確定済みコーパスを VM で再生し、**比較可能な(劣化していない)**実行のみを対象に一致率を報告します。オフラインで動作します。
classify_hookHook が何をするかを平易な英語で推定します(ファイアウォール/出力/状態管理/金融など)。
hook_diff2 つの Hook バージョンを比較します — API/HookOn/サイズの差分と、新たに追加された機微な機能を確認できます。
scaffold_hookインテント(ファイアウォール/支払い上限/状態カウンターなど)に合わせた C 言語のスターター Hook を生成します。その後、analyze/execute で検証できます。
analyze_hook静的解析ルールエンジンで Hook を解析し、SARIF-lite の指摘を返します。
audit_account_hooksアカウントに設定されたすべての Hook を取得して解析します。
inspect_hook_wasmCreateCode WASM を解析します:インポート、エクスポート(hook/cbak)、メモリ、カスタムセクション、ループ、_g ガード、命令数。
estimate_hook_feeバイトサイズ(SetHook 手数料)+ 静的命令数(複雑さの指標)、ESTIMATE。
hook_dry_runSTATIC_ONLY のクイックチェック — トランザクションで実行されるか、終了呼び出しがあるかを確認します(実際の実行には execute_hook を使用してください)。
list_rules · hook_api_lookupアナライザールールを一覧表示 · Hook API 関数の役割と危険性を検索。
コーデック/デコード(オフライン)
ツール目的
------
decode_hook_on / encode_hook_onHookOn ビットマップ ⇄ トランザクションタイプのリスト。
decode_hook_can_emit / encode_hook_can_emitHookCanEmit ビットマップ ⇄ フックが 発行できる tx タイプ(HookCanEmit amendment。未設定の場合は、すべて発行できます)。
estimate_hook_state_costExtendedHookState の予約量計算:値のバイト数 + スケール(1–16)→ エントリーあたりの容量(256×スケール)、予約単位(= スケール)、合計、オーバーフローと最小スケールの警告、任意の XAH。
simulate_hook_triggerどのアカウントのフックが tx を呼び出すかを静的に(RPC なし、バイトコードなしで)予測し、強い予測(ロールバック可能)と弱い予測を示します。simulate_transaction を補完します。
decode_sethookSetHook tx → フック定義と、デコード済み HookOn。
decode_tx_blob / encode_tx_blobXahau tx blob ⇄ JSON(未署名)。
decode_uritoken_id · xah_amountURIToken ID の検証 · XAH⇄drops。
decode_xpopImport/Burn2Mint XPOP をデコード → ソースレジャー、内部 burn tx、焼却された drops、UNL バリデーター。
decode_resultEngine result コード ⇄ 名前(例:153 ⇄ tecHOOK_REJECTED)。
diagnose_failed_tx「トランザクションが失敗した理由は?」 — オンチェーンの事実に基づく平易な診断:engine result → 原因 + 具体的な修正方法(約30コードのカタログ)、フックのロールバック時に返される文字列をデコードして 解釈(報酬フックの「You must wait N seconds」を請求可能日時に変換)、一見「成功」した Payment に潜む一部支払いの落とし穴、見つからない場合の切り分け(期限切れの LastLedgerSequence /ネットワーク違い)。読み取りは1回です。
validate_address · xaddressクラシックアドレス/X-address の検証(タイプ、account-id、タグ) · X-address のエンコード/デコード。
currency_code · ripple_time3文字の ISO ⇄ 160ビット通貨 · Ripple 時刻 ⇄ Unix/ISO。
decode_amountネイティブ drops/8バイト/48バイトの発行済み STAmount/amount オブジェクトをデコード → 値 + 通貨 + 発行者。
decode_sign_requestXaman の txjson または tx_blob をデコード → 承認する内容を平易な英語で説明 + 安全上の警告。
decode_lease_uriEvernode リース URIToken(evrlease/LTV)をデコード → リースインデックス、EVR 額(XFL)、ToS ハッシュ、IP。
evernode_host_diagnosticsEvernode ホストのヘルスチェックを1回の呼び出しで実行(公式トラブルシューティングチェックリストを自動化):登録エントリー、オンチェーンのアクティブルールに対するハートビートの稼働状況、インスタンス負荷、評判、EVR トラストライン/残高、登録 URIToken、リースオファー、マシン仕様 + 累積 EVR 報酬。正規の evernode-js-client とライブのメインネットホストを基にレイアウトを検証済み(直列読み取り約9回)。
inspect_emitted_txフックの emit() blob をデコード → tx JSON + 平易な要約 + 危険度スコア。
scam_check署名リクエスト(txjson または tx_blob)にリスクの高いパターンがないか評価 → dangerScore(0~100)+ SAFE/CAUTION/DANGER の段階 + ルールごとの検出結果(SetHook、他者宛て AccountDelete、regular-key/signer-list の変更、高額なネイティブ送金、期限なし、事前署名済み)。tx の 形状のみ に基づくオフラインのヒューリスティックです。検出結果はすべて 潜在的な リスクであり、詐欺が確認されたことを意味しません。ブロックリストの照合や、オンチェーンの悪意チェックは行いません。

レジャー(読み取り専用 RPC)

ツール目的
xahau_server_info · get_account_info · get_account_objectsノード/アカウントの読み取り。
get_account_hooks · get_hook_definition · get_hook_stateフックの読み取り。get_account_hooks は各フックの HookName を表示します(名前付きフックは、その名前を含む tx に対してのみ実行されます)。
get_transaction · get_ledger · get_feetx(HookExecutions を含む) · レジャー · 現在のネットワーク手数料。
get_account_lines · get_account_offers · get_account_uritokensトラストライン · DEX オファー · URIToken(NFT、URI をデコード済み)。
explain_accountアカウントのスナップショットを1回の呼び出しで平易な英語で説明 — 残高、キーの安全性、フック、トラストライン、Evernode リース、最近のアクティビティ(直列読み取り5回)。
経済/ガバナンス
ツール目的
------
reward_status残高調整の診断 — オプトイン済みか、正確な獲得済み XAH(reward.c のジェネシス報酬フック独自の計算式。ジェネシスフックの状態からライブの RR/RD を読み取り、実際のオンチェーン GenesisMint 支払いをドロップに対して再現)、次回請求までのカウントダウン、請求期限超過の警告(請求が遅れると利回りを失います)、該当する場合は署名なしのオプトイン/請求用 ClaimReward(直列読み取り 3 回)。
compute_reward請求可能な XAH ネットワーク報酬の予測(DOCUMENTED_MODEL、レガシー — reward_status を優先してください)。
quantum_grade量子(HNDL)対応状況についてアカウントを評価 — マスターキー/レギュラーキー/マルチシグ+フックを基に、スコア、ティア、推奨事項を提示(フック/PQC の観点を含む)。
governance_stateガバナンスゲームを完全にライブデコード:全 20 議席とメンバー、メンバー数、ライブの報酬率/遅延、すべての投票中の項目(誰が何に投票したか)、各集計とそのしきい値(メンバーの 80%/それ以外は 100%)、およびしきい値到達フラグ。レイアウトは xahaud hook/genesis/govern.c を正とします。
decode_b2mBurn2Mint の分類。

アメンドメントのインテリジェンス(読み取り専用、管理ノード不要)

ツール目的
get_amendment_statusすべての有効なアメンドメント(判明しているものは人間が読める名前に変換し、それ以外は生のハッシュで表示)と、投票中のセットに含まれるもの(すでに 80% を超え、有効化に向けてカウント中)を表示します。オンレジャーの Amendments シングルトンを読み取るため、管理用の feature 呼び出しは不要です。
predict_amendment_activation過半数を得ている各アメンドメントについて、80% を超えた時期と推定有効化時期(過半数到達から Xahau の 5 日間のウィンドウまで)、残り日数、および現在有効化可能かどうかのフラグを表示します。
check_amendment_blocked設定されたノードがアメンドメントによってブロックされているか(有効なアメンドメントを読み取るには xahaud が古すぎる状態)を確認します。ビルドバージョン、検証済みレジャー、アップグレードによる解決策を表示します。
diff_node_amendments2 つのネットワーク間で有効なアメンドメントのセットを比較します(例:メインネットとテストネット)。トランザクション/フック機能が一方では動作し、もう一方では動作しない理由を説明します。

監査/フォレンジック

ツール目的
trace_transaction_stakeholdersメタデータに基づき、トランザクションが関与したすべてのアカウントを表示します。Touch アメンドメントにより、すべての関係者がメタデータに含まれるため、これが信頼できる参加者リストとなります(役割+エントリータイプ+実質的な変更を示すフラグ)。
verify_double_threadingトランザクションのメタデータスレッド構造を監査し、fixProvisionalDoubleThreading が対処した重複ノードの症状にフラグを立てます。
audit_account_remarksアカウントのオブジェクトに付属するRemarksをデコードします(名前/値の hex→テキスト変換、不変フラグ) — 動的 NFT や注釈のパターンに対応します。
署名なしビルダー(キー不要、デフォルトはテストネット)
ツール目的
------
build_sethook_unsigned自動の analyze_hook 事前チェックを備えた署名なしの SetHook です。重大な指摘がある場合、overrideCritical: true が指定されていない限り、トランザクションは保留され、指摘事項のみが返されます。
build_claimreward_unsigned · build_import_unsigned · build_payment_unsigned署名なしの ClaimReward · Import/B2M · Payment です。
build_remit_unsigned署名なしの Remit(XLS-55) — 複数通貨(ネイティブ通貨+発行通貨)の送金、および/または URIToken の転送、および/またはインラインでの URIToken のミントを、1 つの送信先に対して一括で実行します。すべて成功するか、すべて取り消されます。正規の AmountEntry/MintURIToken のネスト構造、自動のトラストライン/リザーブ/アカウント作成のセマンティクス、オプションの第三者 Inform に対応しています。ペイロードの事前チェックも含まれます。
build_set_remarks_unsigned署名なしの SetRemarks(Remarks amendment)— 自分が所有/発行するレジャーオブジェクトに、キーと値の形式の備考を追加/更新/削除します。immutable(tfImmutable)への対応、省略による削除、最大 32 件の制限+一意性+サイズのガードを備えています。ダイナミック NFT を実現します。
build_clawback_unsigned署名なしの Clawback — 発行者が保有者から発行トークンを取り消します(Amount.issuer = 保有者、という正規の落とし穴があります)。オプトイン+XAH のガードを備えています。
build_deepfreeze_unsigned署名なしの TrustSet 凍結切り替え — deep_freeze(送信+受信をブロック)、freeze とそれぞれの解除を、正しい tfSetDeepFreeze/tfSetFreeze フラグに割り当てます。
prepare_transaction稼働中のネットワークから Sequence/Fee/LastLedgerSequence/NetworkID を自動入力し、オフライン署名できる状態にします(署名は行いません)。

Cron(スケジュールされた Hook の実行)

ツール目的
build_cronset_unsigned署名なしの CronSet — Hook の将来の自己呼び出しをスケジュールします。StartTime(Ripple エポック、0=即時)または startInSeconds、RepeatCount(0~256)、DelaySeconds、または cancel(tfCronUnset)を指定します。事前チェックで、間隔が設定されていない繰り返しや Hook がないケースを検出します。
list_cron_jobsアカウントの Cron レジャーオブジェクトを読み取り、デコード済みの StartTime(ISO)、DelaySeconds、残りの RepeatCount、推定された次回実行時刻を返します(生のオブジェクトも含まれます)。
monitor_cron_health残りの繰り返し回数がしきい値以下になった Cron にフラグを付け、繰り返し実行されるガバナンス/ゲーム Hook が気付かないうちに停止するのを防ぎます。

インストール

初めての方、または技術に詳しくない方は、まず**わかりやすいチュートリアル**をご覧ください。できることや、気軽に頼める面白い使い方を紹介しています。

Node.js 20+ が必要です。サーバーは stdio 経由で MCP と通信し、MCP クライアントが起動します。

npm から
npx -y xahau-mcp --help      # run without installing (prints usage and exits)
npm install -g xahau-mcp     # or install the `xahau-mcp` command globally
xahau-mcp --smoke            # health check: local data + one live mainnet read

引数なしで実行すると、xahau-mcp は標準入力/標準出力で MCP クライアントからの接続を待ちます。対話型 CLI ではありません。

MCP クライアントへの追加

Claude Code:

claude mcp add xahau -- npx -y xahau-mcp

Claude Desktop(claude_desktop_config.json)、または mcpServers ブロックを受け付ける任意のクライアント:

{
  "mcpServers": {
    "xahau": { "command": "npx", "args": ["-y", "xahau-mcp"] }
  }
}

グローバルにインストールした場合は、"args" なしで "command": "xahau-mcp" と指定しても動作します。独自の RPC ノードを指定するには、"env": { "XAHAU_RPC_URLS": "https://your-node.example" } を追加します(カンマ区切り。テストネットには XAHAU_TEST_RPC_URLS を使用します)。

サーバーはネットワークに対して読み取り専用です。公開 JSON-RPC 経由でレジャー状態を読み取りますが、トランザクションへの署名や送信は行わず、キーも保持しません。オフラインツール(Hook VM、静的アナライザー、コーデック、HookOn)はネットワークをまったく必要としません。

GitHub/ソースから
npm install -g github:Hugegreencandle/xahau-mcp   # builds on install via `prepare`

または、クローンしてビルドします:

git clone https://github.com/Hugegreencandle/xahau-mcp && cd xahau-mcp
npm install        # the `prepare` script compiles dist/ automatically
npm run smoke      # health check + a live mainnet read
npm test           # offline test suite

旧バージョン(≤ 1.4.0)は GitHub Packages に @hugegreencandle/xahau-mcp として公開されていました。このスコープでは、公開パッケージのインストールにも GitHub トークンが必要です。上記のスコープなし npm パッケージを使用してください。

HTTP シム(ブラウザー、ウォレット、ウェブツール)

MCP サーバーは stdio で通信するため、ブラウザー、Xaman ウェブビュー、任意の Hook をシミュレーションする公開ウェブツールからは利用できません。HTTP シム(src/http.ts)は、同じフライトシミュレーターのコアをプレーンな HTTP 経由で公開します。読み取り専用で、署名や送信は行いません。

PORT=8787 npm run http        # or: PORT=8787 node dist/http.js
curl localhost:8787/health

# or deploy the container (non-root, healthchecked):
docker build --target http -t xahau-mcp-http .
docker run -p 8787:8787 -e MAX_INFLIGHT=2 -e XAHC_HOOK_MEM_MB=128 xahau-mcp-http

最後の Dockerfile ステージをビルドするプラットフォーム(Railway など)では、Dockerfile.http を使用してください(RAILWAY_DOCKERFILE_PATH=Dockerfile.http を設定します)。これは http ステージを最終ステージとして使用します。

エンドポイント
メソッド · パス本文戻り値
POST /simulate{ tx, network?, ledgerIndex?, candidateCode?, candidateHookOn?, candidateNamespace?, candidateHookName? }完全な Simulation — フックごとの accept/rollback、デコード済みの emits、state の書き込み、静的事前チェック
POST /what-if{ txHash, overrides?, network? }実際の過去の tx を元の ledger で再実行した Simulation(指定した overrides を適用)
POST /execute{ wasmHex, txType?, otxnFields?, hookAccountId?, state?, … }SandboxResult — フックのバイトコードを単独で実行(オフライン、RPC なし)
POST /analyze{ wasmHex, hookOn?, namespace?, … }{ findings, summary } — 静的ルールエンジン(オフライン、即時実行、手軽な一次スクリーニング)
GET /fidelity—VM の忠実度レポート + corpusHash + lastRun(accept-only の coverageWarning をそのまま返します)
GET /health—{ ok, inflight, endpoints }

未デプロイのフックをシミュレーションする — /simulate に candidateCode(ビルド済み wasm の hex)を渡します。これは tx.Account のオンレジャーのフックチェーンを置き換えるため、コンパイルしたばかりのフックを SetHook する前に、ライブレジャー + 完全な TSH チェーンに対して実行できます。(これは xahc verify や公開シミュレーションツールが呼び出す機能です。)

設定(env)
変数デフォルト用途
PORT8787リッスンするポート
RL_MAX20リクエスト数 / IP / 分
MAX_INFLIGHT4同時シミュレーション数
XAHC_HOOK_TIMEOUT_MS3000フック実行ごとのハードな実時間上限
XAHC_HOOK_MEM_MB256フック実行ごとのメモリ上限
XAHC_SIM_SPACING_MSsim default読み取り間の RPC 間隔 — 自前のノードでは 0、共有の公開ノード経由では約 300
TRUST_PROXY未設定X-Forwarded-For を設定するリバースプロキシの背後にいる場合にのみ設定します
XAHAU_RPC_URLSdata/endpoints.jsonカンマ区切りのメインネット RPC フェイルオーバーリスト
公開環境での実行

この shim は 信頼できないユーザー提供の wasm を処理するため、各フックの実行は上記のタイムアウトとメモリ上限を設定した使い捨ての worker_thread 内で行われます。停止するフックやメモリを大量に割り当てるフックは、メインプロセスをブロックしたりクラッシュさせたりすることなく終了します(セキュリティ監査済みです。無限ループや保護されていない再帰はダウンタイムではなく 422 を返します)。公開環境にデプロイする場合:

  • プロセススーパーバイザー(systemd / pm2 / コンテナの再起動ポリシー)の背後で実行し、多層防御を行ってください。
  • X-Forwarded-For を設定するプロキシの背後に実際にいる場合に限り、TRUST_PROXY を設定してください。それ以外の場合、レートリミッターはソケットアドレスをキーにします(設定すると、クライアントがヘッダーを偽装して制限を回避できるようになります)。
  • IP ごとのレート制限とグローバルな同時実行数の上限はデフォルトで有効です。env で調整してください。

セキュリティ

防御を重視して設計し、レビュー済みです(npm audit と危険性の高い箇所の確認を実施)。

  • 読み取り専用で、鍵を保持しません — sign/submit は一切なく、ビルダーツールがシークレットを受け取ることもありません。オフラインで署名するための未署名トランザクションのみを出力します。
  • コード実行の攻撃面はありません — eval/Function、child_process/シェル、ファイルシステムへの書き込み、動的な require はありません。RPC の fetch がアクセスするのは、固定エンドポイントである data/endpoints.json(または mainnet/testnet 向けの XAHAU_RPC_URLS/XAHAU_TEST_RPC_URLS による上書き先)のみです。ツール入力から構築された URL にアクセスすることはないため、SSRF は発生しません。
  • 信頼できない Hook WASM はサンドボックスで実行されます — execute_hook/fuzz_hook は Node の WebAssembly エンジンで Hook バイトコードを実行します。このエンジンにはシステムコール/ファイルシステム/ネットワークへのアクセスがありません。Hook が呼び出せるのはメモリ内の JS Hook-API シムのみで、メモリの読み書きは境界チェックされます。
  • 信頼できないバイトコードへの対策: Hook の実行前に、VM はガードされていないループ(_g ガード呼び出し箇所の数を超えるループ)、オペコードのスキャンでループを検証できなかったモジュール、128 KiB を超えるバイトコード、または 512 を超えるメモリページを宣言するモジュールを拒否します。ガードされたループには、累積ガード予算と実時間の上限が適用されます。そのため、攻撃者が用意した Hook によって実行が停止したり、メモリ不足になったりすることはありません。ツールの出力は指示ではなくデータです(他の MCP と同様に扱ってください)。
  • 依存関係: npm audit で報告されるのは、xrpl-accountlib の署名ライブラリ(elliptic/bip32/tiny-secp256k1)に間接的に含まれる低深刻度のアドバイザリのみです。このサーバーは、それらのコードパスを呼び出しません(バイナリーコーデックのみを使用します)。

仕組み

  • 重い依存関係はありません。 ランタイム依存関係は @modelcontextprotocol/sdk、zod、xrpl-accountlib の 3 つです(Xahau 対応のバイナリーコーデックにのみ使用し、署名機能は呼び出しません)。RPC には通常の fetch を使用します。WASM リーダーは手書きで、依存関係はゼロです。VM は Node 組み込みの WebAssembly エンジンを使い、JS Hook API シムでバイトコードを実行します。WASM ツールチェーンやネイティブ依存関係はありません。
  • 実データを使用し、再生成できます。 data/ は、稼働中の Xahau ノードの server_definitions と標準 Hook API リスト(Xahau/hooks-rs の c/extern.h)から、npm run fetch:all で生成されます。78 個の関数を含む Hook API カタログには関数ごとの危険性メタデータがあり、アナライザーがこれを使用します。
  • HookOn のセマンティクスは Xahau のドキュメント に照らして検証済みです。256 ビットで、ビット n はトランザクションタイプ n を表し、反転/アクティブロー(セットされていると実行されない)です。ただし、ビット 22(SetHook)は アクティブハイです。

ライセンス

MIT © 2026 Dane Brown。XRPL Labs または Xahau プロジェクトとは無関係です。アナライザーの検出結果はヒューリスティックな指針であり、セキュリティを保証するものではありません。mainnet で使用する前に、必ず testnet でテストし、Hook を個別にレビューしてください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。