缩写
一个MCP服务器, @florent-uzio/xrpl-mcp,这样可以让一个AI客户端,如克洛德代码查询和在XRP Ledger上进行交易. 它运行在 Stdio 并且与 马斯特拉 财务报告和审定财务报表 页:1。见 GLOSSARY.md 用于词汇.
- 120多个工具数字 :
- 查询分类账(账户、分类账、交易、订单簿、AMM、NFT、金库、服务器、收费)
- 提交XRPL交易类型(付款、信托、DEX报价、AMM、NFT、MPT、代管、支票、支付渠道、证书、金库、出借、甲骨文、批发、保密的MPT)
- 创建和资助钱包
- 转换单位和货币代码
- 4个工作流程 用于测试网络的多步骤设置:IOU发行,MPT发行,保密的MPT和出借设置.
用克劳德代码的
你只需要22.13节节点 不需要模型 API 键: Claude Code 进行推理并调用工具.
claude mcp add xrpl -- npx -y @florent-uzio/xrpl-mcp@latest
然后问克洛德诸如"主网上rXXX的平衡是什么"或"测试网上是否有有2个持有人的MPT"等.
@latest 制造 npx 检查 npm 每次 Claude Code 启动服务器, 因此在您的下个会话中, 或在您重新连接时, 都会有新的释放负载 xrpl 从 /mcp。要保持一个版本,就把它固定起来,例如. @florent-uzio/[email protected]。 。 。 .
要从此 repo 的克隆运行服务器 :
claude mcp add xrpl -- npm --prefix "$(pwd)" run --silent mcp
网络和秘密
- 主网为默认. 说"testnet"或"devnet",或给一个
wss://URL,用于使用另一个网络. 每个已知的网络都列在src/helpers/networks.ts。 。 。 . - 种子在测试网络外被拒绝,在连接之前。 在主网上,你自己在交易上签名,并提交blob
submitSignedBlob。 。 。 . - 流动记录 保留会话所创建的内容(钱包,MPT ID,密钥,散列),所以后会话可以再用.
saveFlowRecord主网拒绝种子和私钥.
| 变量 | 目的 |
|---|---|
XRPL_RECORDS_DIR | 流程记录文件夹 。 默认为 ~/.xrpl-mcp/records。 。 。 . |
XRPL_EXTRA_TEST_NETWORKS | 允许种子的其他测试网络的逗号分隔的URL,例如本地节点. 传递给 MCP 服务器 claude mcp add xrpl --env XRPL_EXTRA_TEST_NETWORKS=ws://localhost:6006 -- npx -y @florent-uzio/xrpl-mcp@latest。 。 。 . |
工作流量
服务器将每个工作流程曝光为 run_<name>。 。 。 .
| 工作流程 | 网络 | 它会做什么 |
|---|---|---|
iou-issuance | 测试网, devnet | 为发行人和持有者提供资金,配置发行人,创建信托行并给每个持有者发出信使. |
mpt-issuance | 测试网, devnet | 为发行人和持有者提供资金,创建MPT发行(旗子,分级,元数据),选择持有者进入并发给他们信使. |
confidential-mpt | 脱网 | 创建或再利用一个保密的MPT,注册ElGamal密钥,将持有人余额转换为机密,然后可选择发送并转换回. |
lending-setup | 脱网 | 创建可转移的MPT,封闭式金库,存款,出借经纪人及其一败涂地. 贷款本身随后与 signLoanSet。 。 。 . |
每一工作流程的输入情况均载于其计划,如: src/workflows/*.types.ts。 。 。 .
添加工具
交易工具使用工厂. 它又说 network 财务报告和审定财务报表 seed,拒绝测试网络外的种子,六进制编码每个货币代码,然后自动填充,签名并提交交易:
// src/tools/transactions/payment/payment.ts
import { Payment } from 'xrpl'
import { useTransactionToolFactory } from '../factory'
import { xrplPaymentSchema } from './payment.types'
const { createTransactionTool } = useTransactionToolFactory({ inputSchema: xrplPaymentSchema })
export const submitPaymentTool = createTransactionTool<Payment>({
toolId: 'submitPayment',
description: 'Submit a Payment transaction to send XRP, tokens or MPTs. ...',
// Optional: reshape the input into the transaction
buildTransaction: payment => ({ ...payment, Amount: payment.DeliverMax ? undefined : payment.Amount }) as Payment,
// Optional: throw to refuse the transaction before it is signed
validateTransaction: params => {
if (params.Amount === undefined && params.DeliverMax === undefined) {
throw new Error('Provide Amount (API v1) or DeliverMax (API v2)')
}
},
})
使用查询工具 defineMethodTool (单位:千美元)src/tools/methods/shared/method-tool.ts),与 id, xrpld 键 command 编辑 request 财务报告和审定财务报表 result 计划.
从文件夹中导出新工具 index.ts。 。 。 . src/catalog.ts 拾取每个导出的工具 src/tools,所以服务器会将其曝光.
服务器将每个工具暴露在其id下,因此id是模型所看到的名称. 以 id 命名导出 Tool 后缀 (submitPaymentTool 页:1 submitPayment测试一下 永远不要重命名一个已出版的工具: 它会打破每个调用它的客户端( 见 docs/adr/0001-tool-names-are-camelcase-ids.md) (中文(简体) ).
发展
npm test # unit tests
npm run typecheck # tsc
npm run format # prettier
npm run build # bundle the server into dist/