npm package: @iflow-mcp/romthpt-mcp-xrpl
Description: MCP XRPL Wrapper
Latest version: 1.0.1

# XRP Ledger Model Context Protocol Server

[![MCP Server](https://glama.ai/mcp/servers/%40RomThpt/mcp-xrpl/badge)](https://glama.ai/mcp/servers/%40RomThpt/mcp-xrpl)

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](#-overview)
-   [Features](#-features)
-   [Supported Networks](#-supported-networks)
-   [Prerequisites](#️-prerequisites)
-   [Installation](#-installation)
-   [Server Configuration](#️-server-configuration)
-   [Usage](#-usage)
-   [API Reference](#-api-reference)
-   [Security Considerations](#-security-considerations)
-   [Project Structure](#-project-structure)
-   [Development](#️-development)
-   [License](#-license)

## 🔭 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

```bash
# 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

```bash
# 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 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

-   [`@modelcontextprotocol/sdk`](https://www.npmjs.com/package/@modelcontextprotocol/sdk): MCP SDK
-   [`xrpl`](https://www.npmjs.com/package/xrpl): XRP Ledger JavaScript/TypeScript API
-   [`dotenv`](https://www.npmjs.com/package/dotenv): Environment variable management
-   [`zod`](https://www.npmjs.com/package/zod): TypeScript-first schema declaration and validation

## 📄 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.