mcp-xrpl

RomThpt/mcp-xrpl

3.3

If you are the rightful owner of mcp-xrpl and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

A comprehensive Model Context Protocol (MCP) server that provides blockchain services for the XRP Ledger ecosystem.

Tools
5
Resources
0
Prompts
0

XRP Ledger Model Context Protocol Server

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

# Clone the repository
git clone https://github.com/yourusername/mcp-xrpl.git
cd mcp-xrpl

# Install dependencies
npm install

# Build the project
npm run build

āš™ļø Server Configuration

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

# Optional: XRPL wallet seed for automatic connection
# If not provided, you can connect using the connect-to-xrpl tool
DEFAULT_SEED=sEdVoKkRRF8RsNYZ689NDeMyrijiCbg  # Example - replace with your own or remove

# Network selection (default is "testnet")
XRPL_NETWORK=testnet  # Options: mainnet, testnet, devnet

šŸš€ Usage

Starting the Server

# Start the server in stdio mode (for CLI tools)
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 NameDescriptionKey Parameters
connect-to-xrplConnect to XRP Ledger using a seedseed, network
get-account-infoGet account informationaddress, network
delete-accountDelete an XRPL accountprivateKey, destination, network
set-account-propertiesSet account propertiesprivateKey, properties, network
deposit-preauthPreauthorize a depositprivateKey, authorize, network
set-regular-keySet a regular key for an accountprivateKey, regularKey, network
XRP and Token Operations
Tool NameDescriptionKey Parameters
transfer-xrpSend XRP to an accountprivateKey, to, amount, network
get-token-metadataGet token metadatatokenAddress, network
check-token-balanceCheck token balancetokenAddress, ownerAddress, network
transfer-tokenTransfer tokensprivateKey, tokenAddress, to, amount, network
approve-token-spendingApprove token spendingprivateKey, tokenAddress, limit, network
token-clawbackClawback tokensprivateKey, tokenAddress, from, amount, network
NFT Operations
Tool NameDescriptionKey Parameters
nft-mintMint an NFTprivateKey, uri, flags, network
get-nft-infoGet NFT metadatatokenID, network
check-nft-ownershipVerify NFT ownershiptokenID, ownerAddress, network
transfer-nftTransfer an NFTprivateKey, tokenID, to, network
get-nft-collectionGet NFTs in a collectionaddress, network
DID Operations
Tool NameDescriptionKey Parameters
create-didCreate a DIDprivateKey, data, network
resolve-didResolve a DIDdid, network
update-didUpdate a DIDprivateKey, did, data, network
deactivate-didDeactivate a DIDprivateKey, did, network
AMM Operations
Tool NameDescriptionKey Parameters
amm-createCreate an AMMprivateKey, assets, network
amm-depositDeposit to an AMMprivateKey, ammID, assets, network
amm-bidPlace bid on an AMMprivateKey, ammID, bid, network
amm-voteVote on AMM parametersprivateKey, ammID, vote, network
amm-deleteDelete an AMMprivateKey, ammID, network
amm-clawbackClawback assets from AMMprivateKey, ammID, assets, network

Resources

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

Ledger Resources
Resource URI PatternDescription
xrpl://{network}/ledger/currentCurrent ledger information
xrpl://{network}/ledger/{ledger_index}Ledger by index
xrpl://{network}/account/{address}Account information
xrpl://{network}/account/{address}/balanceAccount XRP balance
xrpl://{network}/tx/{tx_hash}Transaction details
Token Resources
Resource URI PatternDescription
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}/ownerNFT 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.