Course
Give your AI a permanent memory of your business. A course for people who use ChatGPT or Claude daily.Compound Context
cloudTypeScriptMIT License

About mcp-xrpl

mcp-xrpl MCP server

README

MCP Server

License: MIT | XRPL Networks | TypeScript | xrpl.js

A comprehensive Model Context Protocol (MCP) server that provides blockchain services for the XRP Ledger ecosystem. This server enables AI agents to interact with XRPL MainNet, TestNet, and DevNet with a unified interface.

šŸ“‹ Contents

šŸ”­ Overview

The MCP XRPL Server leverages the Model Context Protocol to provide XRP Ledger services to AI agents. It supports a wide range of services including:

  • Reading ledger state (balances, transactions, account info, etc.)
  • Interacting with smart contracts (via Hooks)
  • Transferring XRP and issued tokens
  • Querying token metadata and balances
  • Managing decentralized identifiers (DIDs)
  • Working with NFTs on the XRPL
  • Automated Market Maker (AMM) operations
  • Payment channels, escrows, and checks
  • Oracle data operations
  • Trustline management

All services are exposed through a consistent interface of MCP tools and resources, making it easy for AI agents to discover and use XRPL functionality.

✨ Features

Account Management

  • Connect to XRPL networks (MainNet, TestNet, DevNet)
  • Account information retrieval
  • Account property management
  • Deposit preauthorization
  • Regular key management

XRP and Token Operations

  • Transfer XRP between accounts
  • Get token metadata (name, symbol, decimals, supply)
  • Check token balances
  • Transfer tokens between addresses
  • Approve token spending
  • Token clawback

NFT Operations

  • Mint NFTs on the XRP Ledger
  • View NFT metadata
  • Verify NFT ownership
  • Transfer NFTs between addresses
  • Get NFT collections

Decentralized Identifier (DID)

  • Create DIDs on the XRPL
  • Resolve DIDs
  • Update DID documents
  • Deactivate DIDs

AMM Operations

  • Create Automated Market Makers
  • Deposit to AMMs
  • Place bids on AMMs
  • Vote on AMM parameters
  • Delete AMMs
  • Clawback assets from AMMs

Check Operations

  • Create checks
  • Cash checks
  • Cancel checks

Offer/DEX Operations

  • Create offers
  • Cancel offers

Oracle Operations

  • Set oracle data
  • Delete oracle data

Payment Channels

  • Create payment channels
  • Fund payment channels
  • Claim from payment channels

Escrow

  • Create escrows
  • Finish escrows
  • Cancel escrows

Trustlines

  • Set and manage trustlines

Ticketing

  • Create tickets for transaction processing

🌐 Supported Networks

  • MainNet: Production XRP Ledger network
  • TestNet: Test network for development
  • DevNet: Development network for experimental features

šŸ› ļø Prerequisites

  • Node.js 18.0.0 or higher

šŸ“¦ Installation

git clone https://github.com/yourusername/mcp-xrpl.git
cd mcp-xrpl

npm install

npm run build

āš™ļø Server Configuration

Create a .env file in the project root with the following variables:

DEFAULT_SEED=sEdVoKkRRF8RsNYZ689NDeMyrijiCbg  # Example - replace with your own or remove

XRPL_NETWORK=testnet  # Options: mainnet, testnet, devnet

šŸš€ Usage

Starting the Server

npm start

Connecting to the Server

Connect to this MCP server using any MCP-compatible client. For testing and debugging, you can use the MCP Inspector.

šŸ“š API Reference

Tools

The server provides the following MCP tools for agents:

Account Management

| Tool Name | Description | Key Parameters | | ------------------------ | ---------------------------------- | -------------------------------- | | connect-to-xrpl | Connect to XRP Ledger using a seed | seed, network | | get-account-info | Get account information | address, network | | delete-account | Delete an XRPL account | privateKey, destination, network | | set-account-properties | Set account properties | privateKey, properties, network | | deposit-preauth | Preauthorize a deposit | privateKey, authorize, network | | set-regular-key | Set a regular key for an account | privateKey, regularKey, network |

XRP and Token Operations

| Tool Name | Description | Key Parameters | | ------------------------ | ---------------------- | ----------------------------------------------- | | transfer-xrp | Send XRP to an account | privateKey, to, amount, network | | get-token-metadata | Get token metadata | tokenAddress, network | | check-token-balance | Check token balance | tokenAddress, ownerAddress, network | | transfer-token | Transfer tokens | privateKey, tokenAddress, to, amount, network | | approve-token-spending | Approve token spending | privateKey, tokenAddress, limit, network | | token-clawback | Clawback tokens | privateKey, tokenAddress, from, amount, network |

NFT Operations

| Tool Name | Description | Key Parameters | | --------------------- | ------------------------ | -------------------------------- | | nft-mint | Mint an NFT | privateKey, uri, flags, network | | get-nft-info | Get NFT metadata | tokenID, network | | check-nft-ownership | Verify NFT ownership | tokenID, ownerAddress, network | | transfer-nft | Transfer an NFT | privateKey, tokenID, to, network | | get-nft-collection | Get NFTs in a collection | address, network |

DID Operations

| Tool Name | Description | Key Parameters | | ---------------- | ---------------- | ------------------------------ | | create-did | Create a DID | privateKey, data, network | | resolve-did | Resolve a DID | did, network | | update-did | Update a DID | privateKey, did, data, network | | deactivate-did | Deactivate a DID | privateKey, did, network |

AMM Operations

| Tool Name | Description | Key Parameters | | -------------- | ------------------------ | ---------------------------------- | | amm-create | Create an AMM | privateKey, assets, network | | amm-deposit | Deposit to an AMM | privateKey, ammID, assets, network | | amm-bid | Place bid on an AMM | privateKey, ammID, bid, network | | amm-vote | Vote on AMM parameters | privateKey, ammID, vote, network | | amm-delete | Delete an AMM | privateKey, ammID, network | | amm-clawback | Clawback assets from AMM | privateKey, ammID, assets, network |

Resources

The server exposes XRPL data through the following MCP resource URIs:

Ledger Resources

| Resource URI Pattern | Description | | -------------------------------------------- | -------------------------- | | xrpl://{network}/ledger/current | Current ledger information | | xrpl://{network}/ledger/{ledger_index} | Ledger by index | | xrpl://{network}/account/{address} | Account information | | xrpl://{network}/account/{address}/balance | Account XRP balance | | xrpl://{network}/tx/{tx_hash} | Transaction details |

Token Resources

| Resource URI Pattern | Description | | ---------------------------------------------------------------- | ------------------------- | | xrpl://{network}/token/{currency}/{issuer} | Token information | | xrpl://{network}/token/{currency}/{issuer}/balanceOf/{address} | Token balance | | xrpl://{network}/nft/{tokenID} | NFT information | | xrpl://{network}/nft/{tokenID}/owner | NFT ownership information |

šŸ”’ Security Considerations

  • Wallet seeds are used only for transaction signing and should be kept secure
  • Consider implementing additional authentication mechanisms for production use
  • For high-value services, consider adding confirmation steps
  • Default operations are performed on TestNet to ensure safety during development
  • Use environment variables for sensitive configuration

šŸ“ Project Structure

mcp-xrpl/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ core/                # Core utilities and services
│   │   ā”œā”€ā”€ constants.ts     # XRPL network URLs and other constants
│   │   ā”œā”€ā”€ state.ts         # State management for connected wallet
│   │   ā”œā”€ā”€ utils.ts         # Helper functions
│   │   └── services/        # Service modules
│   ā”œā”€ā”€ server/              # MCP server implementation
│   ā”œā”€ā”€ transactions/        # XRPL transaction implementation
│   │   ā”œā”€ā”€ token/           # Token-related transactions
│   │   ā”œā”€ā”€ nft/             # NFT-related transactions
│   │   ā”œā”€ā”€ did/             # DID-related transactions
│   │   ā”œā”€ā”€ amm/             # AMM-related transactions
│   │   ā”œā”€ā”€ check/           # Check-related transactions
│   │   ā”œā”€ā”€ offer/           # Offer-related transactions
│   │   ā”œā”€ā”€ oracle/          # Oracle-related transactions
│   │   ā”œā”€ā”€ payment/         # Payment-related transactions
│   │   ā”œā”€ā”€ escrow/          # Escrow-related transactions
│   │   └── trust/           # Trust line-related transactions
│   └── index.ts             # Entry point
ā”œā”€ā”€ build/                   # Compiled JavaScript output
ā”œā”€ā”€ package.json
ā”œā”€ā”€ package-lock.json
└── tsconfig.json

šŸ› ļø Development

Adding New Tools

To add a new tool:

  1. Create a new TypeScript file in the appropriate directory under src/transactions/
  2. Import the server from server/server.js
  3. Define the tool using server.tool()
  4. Import the tool in src/index.ts

Project Dependencies

šŸ“„ License

This project is licensed under the terms of the MIT License.

āš ļø Disclaimer

This software is provided for educational and development purposes only. Use it at your own risk. Always test thoroughly on the Testnet before using on Mainnet with real XRP.