Xahau MCP について
Xahau MCPは、Xahauネットワーク向けの読み取り専用MCPサーバーです。ローカルVMでHooks WASMを実行して静的セキュリティ分析を行うほか、台帳照会、トランザクションのシミュレーション、ガバナンスや報酬の情報、未署名トランザクションの作成に対応します。
主な機能
- 01ローカルVMでのHooks WASM実行
- 02Hookの静的セキュリティ分析
- 03台帳とHook状態の読み取り
- 04トランザクションのシミュレーションと失敗診断
- 05未署名トランザクションの作成
活用シーン
- 01デプロイ前のHook実行シミュレーション
- 02Hookバイトコードの監査
- 03アカウント報酬とガバナンス状態の確認
- 04失敗したトランザクションの調査と未署名取引の準備
MCP 対応
MCPサーバーはXahauの台帳、Hookの実行・分析、ガバナンス関連のツールを公開し、参照リソースとガイド付きプロンプトも提供します。ネットワークへのアクセスは読み取り専用で、トランザクション作成ツールが返すのは未署名の取引のみです。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y xahau-mcpXAHAU_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
87掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| network | enum | いいえ | mainnet | testnet |
詳細
xahau-mcp
**Xahau ネットワーク**向けのModel Context Protocolサーバーです。2つの点で初めての試みです。Hook の実際の WebAssembly バイトコードをローカル VM で実行する(xahaud ノードは不要)ことと、Hooks 専用の静的解析/セキュリティルールエンジンで解析することです。どちらも完全にオフラインで動作します。さらに、読み取り専用のレジャーアクセス、Xahau 対応のバイナリーコーデック、命令数に基づく手数料見積もり、ネットワーク報酬の計算、ガバナンス用ヘルパー、未署名トランザクションのビルダーを備えています。
Xahau は XRPL のフォークで、目玉機能はHooks、つまりオンレジャーで動作する小さな WebAssembly スマートコントラクトです。Xahau 向けの MCP も Hooks 向けの静的アナライザーも存在しませんでした。このプロジェクトはその両方を実現します。

三位一体 — 安全な 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)です。
- オンチェーンのコントラクトバイトコードをローカル VM で実行 —
execute_hookは、ノードもクラウドもアカウントも使わず、実際の CreateCode WASM を実行します。ABI ラッパーでも、ホスト型シミュレーターでもありません。 - チェーンの実測値を正解データとする、回帰テストで固定された忠実度スコアを公開 —
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 を、私たちは知りません。 - プロトコル内の静的セキュリティ分析 — ネットワーク独自のジェネシスフックを基準に調整した、Hooks 専用のルールエンジン(SARIF-lite の検出結果)です。
- プロトコル内の差分ファジング —
fuzz_hookは、ローカル VM でコントラクトの accept/reject の判定境界を特定します。 - 実際のバイトコードを使った実トランザクションの事後分析 —
hook_execution_postmortemは、チェーン上で実際に発火した処理を再生して比較します。 - オンチェーンの経済的な仕組みを正確に再現 —
reward_statusは、ジェネシスの報酬フックの計算式を再実装し、実際に発行された報酬を最小単位まで再現します(検証済みで、テストにより固定されています)。 - ライブのガバナンスをエンドツーエンドでデコード —
governance_stateは、Governance Game のすべての席、投票、集計、しきい値をリアルタイムで表示します。 - エコシステムの実際の課題に対応する運用診断ツール:失敗したトランザクションの原因と修正方法の診断、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_trace | execute_hook の trace[] をバイト幅に基づいて人が読める値にデコードします:正規 XFL 浮動小数点数(definite)、int64/native drops(両エンディアン)、UInt32 + Ripple エポック日時、候補アカウント ID → r アドレス(possible)、32 バイトのハッシュ。生の 16 進数は常に保持されます。オフラインで動作します。 |
hook_report | 1 回の呼び出しで完全なレポートを生成:構造 + 平易な英語での分類 + セキュリティ上の指摘 + 手数料。 |
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_hook | Hook が何をするかを平易な英語で推定します(ファイアウォール/出力/状態管理/金融など)。 |
hook_diff | 2 つの Hook バージョンを比較します — API/HookOn/サイズの差分と、新たに追加された機微な機能を確認できます。 |
scaffold_hook | インテント(ファイアウォール/支払い上限/状態カウンターなど)に合わせた C 言語のスターター Hook を生成します。その後、analyze/execute で検証できます。 |
analyze_hook | 静的解析ルールエンジンで Hook を解析し、SARIF-lite の指摘を返します。 |
audit_account_hooks | アカウントに設定されたすべての Hook を取得して解析します。 |
inspect_hook_wasm | CreateCode WASM を解析します:インポート、エクスポート(hook/cbak)、メモリ、カスタムセクション、ループ、_g ガード、命令数。 |
estimate_hook_fee | バイトサイズ(SetHook 手数料)+ 静的命令数(複雑さの指標)、ESTIMATE。 |
hook_dry_run | STATIC_ONLY のクイックチェック — トランザクションで実行されるか、終了呼び出しがあるかを確認します(実際の実行には execute_hook を使用してください)。 |
list_rules · hook_api_lookup | アナライザールールを一覧表示 · Hook API 関数の役割と危険性を検索。 |
| コーデック/デコード(オフライン) | |
| ツール | 目的 |
| --- | --- |
decode_hook_on / encode_hook_on | HookOn ビットマップ ⇄ トランザクションタイプのリスト。 |
decode_hook_can_emit / encode_hook_can_emit | HookCanEmit ビットマップ ⇄ フックが 発行できる tx タイプ(HookCanEmit amendment。未設定の場合は、すべて発行できます)。 |
estimate_hook_state_cost | ExtendedHookState の予約量計算:値のバイト数 + スケール(1–16)→ エントリーあたりの容量(256×スケール)、予約単位(= スケール)、合計、オーバーフローと最小スケールの警告、任意の XAH。 |
simulate_hook_trigger | どのアカウントのフックが tx を呼び出すかを静的に(RPC なし、バイトコードなしで)予測し、強い予測(ロールバック可能)と弱い予測を示します。simulate_transaction を補完します。 |
decode_sethook | SetHook tx → フック定義と、デコード済み HookOn。 |
decode_tx_blob / encode_tx_blob | Xahau tx blob ⇄ JSON(未署名)。 |
decode_uritoken_id · xah_amount | URIToken ID の検証 · XAH⇄drops。 |
decode_xpop | Import/Burn2Mint XPOP をデコード → ソースレジャー、内部 burn tx、焼却された drops、UNL バリデーター。 |
decode_result | Engine 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_time | 3文字の ISO ⇄ 160ビット通貨 · Ripple 時刻 ⇄ Unix/ISO。 |
decode_amount | ネイティブ drops/8バイト/48バイトの発行済み STAmount/amount オブジェクトをデコード → 値 + 通貨 + 発行者。 |
decode_sign_request | Xaman の txjson または tx_blob をデコード → 承認する内容を平易な英語で説明 + 安全上の警告。 |
decode_lease_uri | Evernode リース URIToken(evrlease/LTV)をデコード → リースインデックス、EVR 額(XFL)、ToS ハッシュ、IP。 |
evernode_host_diagnostics | Evernode ホストのヘルスチェックを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_fee | tx(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_b2m | Burn2Mint の分類。 |
アメンドメントのインテリジェンス(読み取り専用、管理ノード不要)
| ツール | 目的 |
|---|---|
get_amendment_status | すべての有効なアメンドメント(判明しているものは人間が読める名前に変換し、それ以外は生のハッシュで表示)と、投票中のセットに含まれるもの(すでに 80% を超え、有効化に向けてカウント中)を表示します。オンレジャーの Amendments シングルトンを読み取るため、管理用の feature 呼び出しは不要です。 |
predict_amendment_activation | 過半数を得ている各アメンドメントについて、80% を超えた時期と推定有効化時期(過半数到達から Xahau の 5 日間のウィンドウまで)、残り日数、および現在有効化可能かどうかのフラグを表示します。 |
check_amendment_blocked | 設定されたノードがアメンドメントによってブロックされているか(有効なアメンドメントを読み取るには xahaud が古すぎる状態)を確認します。ビルドバージョン、検証済みレジャー、アップグレードによる解決策を表示します。 |
diff_node_amendments | 2 つのネットワーク間で有効なアメンドメントのセットを比較します(例:メインネットとテストネット)。トランザクション/フック機能が一方では動作し、もう一方では動作しない理由を説明します。 |
監査/フォレンジック
| ツール | 目的 |
|---|---|
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)
| 変数 | デフォルト | 用途 |
|---|---|---|
PORT | 8787 | リッスンするポート |
RL_MAX | 20 | リクエスト数 / IP / 分 |
MAX_INFLIGHT | 4 | 同時シミュレーション数 |
XAHC_HOOK_TIMEOUT_MS | 3000 | フック実行ごとのハードな実時間上限 |
XAHC_HOOK_MEM_MB | 256 | フック実行ごとのメモリ上限 |
XAHC_SIM_SPACING_MS | sim default | 読み取り間の RPC 間隔 — 自前のノードでは 0、共有の公開ノード経由では約 300 |
TRUST_PROXY | 未設定 | X-Forwarded-For を設定するリバースプロキシの背後にいる場合にのみ設定します |
XAHAU_RPC_URLS | data/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 を個別にレビューしてください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。