xrpl-identity-mcp について
xrpl-identity-mcpは、DID、クレデンシャル、マルチシグの署名者リストを扱うXRPL向けMCPサーバーです。未署名トランザクションを準備し、送信前に署名済みトランザクションの意図を検証します。鍵を預かったり署名したりしません。
主な機能
- 01DIDの解決とドキュメント取得
- 02DID・クレデンシャル取引の準備
- 03クレデンシャルの一覧表示と検証
- 04アカウントのID・署名者状態の要約
- 05マルチシグ署名者リスト変更の準備
- 06署名済み取引の検証と送信
活用シーン
- 01XRPL DIDとそのドキュメントの確認
- 02外部署名を使ったクレデンシャルの作成・承認
- 03アカウントのIDと署名者設定の確認
- 04送信前の署名済み取引の照合
MCP 対応
DID解決、クレデンシャル操作、取引の準備・検証・送信などのXRPL ID関連ツールをMCPクライアントに提供します。鍵の保管や署名は行いません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y xrpl-identity-mcpXRPL_NETWORKXRPL network to target: mainnet, testnet, or devnet (default: testnet)XRPL_ENDPOINTCustom XRPL websocket endpoint override (default: public endpoint for the selected network)ALLOW_MAINNET_SUBMITMust be set to 'true' to allow tx_submit_signed on mainnet (default: blocked)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
12掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| address | string | はい | 従来の XRPL アドレス、did:xrpl:<address>、または did:xrpl:1:<address>。 |
詳細
xrpl-identity-mcp
xrpl-identity-mcp は、XRP Ledger 向けの初のアイデンティティ特化型 MCP サーバーです。DID(XLS-40)、認証情報(XLS-70)、マルチシグの署名者リスト、安全なトランザクションの準備/検証/送信ワークフローに対応しています。署名されていないトランザクションを準備し、レジャーの状態を読み取り、署名済みのデータを意図と照合して検証できます。また、鍵を預かることなく、事前署名済みのデータを送信できます。
SciPHR を開発したチームのメンバーである Jarod Vyent が開発しました。
セキュリティモデル
次の不変条件は、基本的な動作として組み込まれています。
- 鍵を預かりません。 サーバーにはシード、秘密鍵、ニーモニック、ウォレットのインポート機能、署名機能がありません。署名はユーザーのウォレットまたはエージェントで行います。
- ネットワークを明示します。
XRPL_NETWORKはmainnet、testnet、devnetのいずれかです。デフォルトはtestnetです。すべてのツールの結果にnetworkが含まれます。 - メインネットへの送信はオプトインです。 メインネットでの
tx_submit_signedは、ALLOW_MAINNET_SUBMIT=trueが設定されていない限りブロックされます。 - 準備、検証、送信の順に行います。 書き込みワークフローでは、外部で署名するための手順を含む署名されていない JSON が返されます。その後、
tx_decode_verifyを呼び出して検証し、最後にtx_submit_signedを呼び出します。
クイックスタート
Claude MCP:
claude mcp add xrpl-identity -- npx -y xrpl-identity-mcp
汎用 MCP クライアントの設定:
{
"mcpServers": {
"xrpl-identity": {
"command": "npx",
"args": ["-y", "xrpl-identity-mcp"],
"env": {
"XRPL_NETWORK": "testnet"
}
}
}
}
環境変数:
| 変数 | 値 | デフォルト | 用途 |
|---|---|---|---|
XRPL_NETWORK | mainnet、testnet、devnet | testnet | XRPL ネットワークを選択します。 |
XRPL_ENDPOINT | WebSocket URL | ネットワークのデフォルト | rippled の WebSocket エンドポイントを上書きします。 |
ALLOW_MAINNET_SUBMIT | true または未設定 | 未設定 | メインネットで tx_submit_signed を実行するために必要です。 |
デフォルトのエンドポイント:
| ネットワーク | エンドポイント |
|---|---|
mainnet | wss://xrplcluster.com |
testnet | wss://s.altnet.rippletest.net:51233 |
devnet | wss://s.devnet.rippletest.net:51233 |
ツール
| ツール | 機能 | ネットワークへの書き込み |
|---|---|---|
did_resolve | XLS-40 DID オブジェクトを解決し、存在する場合は ipfs:// または https:// の DID ドキュメントを取得します。 | いいえ |
did_prepare_set | 署名されていない DIDSet トランザクションを準備します。 | いいえ |
did_prepare_delete | 署名されていない DIDDelete トランザクションを準備します。 | いいえ |
credential_prepare_create | 署名されていない CredentialCreate トランザクションを準備します。 | いいえ |
credential_prepare_accept | 署名されていない CredentialAccept トランザクションを準備します。 | いいえ |
credential_prepare_delete | 署名されていない CredentialDelete トランザクションを準備します。 | いいえ |
credential_verify | 認証情報オブジェクトを読み取り、その存在、受諾状況、有効期限を報告します。 | いいえ |
credential_list | 発行者/対象者で絞り込んで、アカウントから確認できる認証情報オブジェクトを最大400件一覧表示します。 | いいえ |
account_identity_summary | アカウントの認証状況、署名者リスト、DID の有無、認証情報の件数を要約します。 | いいえ |
signer_list_prepare_set | マルチシグの作成、置き換え、削除に使用する署名されていない SignerListSet トランザクションを準備します。 | いいえ |
tx_decode_verify | 署名済みデータをデコードしてハッシュを計算し、想定される意図と照合します。 | いいえ |
tx_submit_signed | 事前署名済みのデータを送信し、検証されるまでポーリングします。メインネットでは ALLOW_MAINNET_SUBMIT=true が必要です。 | はい |
エージェントのフロー例
DID を解決してドキュメントを読み取る:
addressにクラシック XRPL アドレスまたはdid:xrpl:<address>を設定して、did_resolveを呼び出します。decoded.URI、decoded.Data、decoded.DIDDocumentを確認します。- URI が
ipfs://またはhttps://の場合は、documentとdocumentSourceを確認します。インラインで表示されるのはテキストと JSON ドキュメントのみです。バイナリコンテンツ(画像など)の場合は、本文が省略された理由を示すdocumentSkippedとともに、documentSource、documentContentType、documentByteLengthが返されます。
テストネットでクレデンシャルを発行して受け入れる:
XRPL_NETWORK=testnetを設定します。- 発行者、サブジェクト、クレデンシャルタイプ、有効期限(任意)、URI(任意)を指定して、
credential_prepare_createを呼び出します。 - 返された
unsignedTxに、発行者のアカウントを使って外部で署名します。 - 署名済みの blob と期待されるインテントを指定して、
tx_decode_verifyを呼び出します。 tx_submit_signedを呼び出します。- サブジェクトに対して
credential_prepare_acceptを呼び出し、外部で署名してから、tx_decode_verifyで検証し、送信します。 credential_verifyを呼び出して、accepted: trueとexpired: falseを確認します。
送信前に署名済み blob を検証する:
signedBlobと、トランザクション JSON の一部を指定したexpectedIntentを使って、tx_decode_verifyを呼び出します。matchesと、あればmismatchesを確認します。- デコードされたトランザクションがユーザーのインテントと一致する場合にのみ送信します。
開発
npm install
npm run typecheck
npm run build
SKIP_INTEGRATION=1 npm test
統合テストはテストネットを対象としており、SKIP_INTEGRATION=1 の場合はスキップされます。アカウント概要の統合テストを実行するには、資金があるテストネットアカウントのアドレスを XRPL_INTEGRATION_ACCOUNT に設定します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。