xrpl-mcp-service
The XRPL MCP Service is an MCP server that facilitates interaction with the XRP Ledger. It provides standardized endpoints for AI models to access account information, decentralized exchange features, NFT operations, and more. It also includes future plans for advanced trading and additional NFT functionalities.
XRPL MCP Service
A Model Context Protocol (MCP) server providing comprehensive access to the XRP Ledger (XRPL). This service enables AI models to interact with XRPL through standardized endpoints.
Features
Account Information
xrpl_account_info
- Basic account detailsxrpl_account_balances
- XRP and token balances (human-readable)xrpl_account_lines
- Trust linesxrpl_account_offers
- Active trading offersxrpl_account_nfts
- NFT holdingsxrpl_account_tx
- Transaction history
Decentralized Exchange
xrpl_order_book
- View order book for currency pairsxrpl_market_price
- Get current market pricesxrpl_amm_info
- Automated Market Maker information
NFT Operations
xrpl_nft_offers
- View NFT buy/sell offers
Trust Lines & Payments
xrpl_set_trust_line
- Establish new trust linesxrpl_remove_trust_line
- Remove existing trust linesxrpl_payment_channels
- Payment channel informationxrpl_find_path
- Payment path findingxrpl_deposit_auth
- Check payment authorization
System
xrpl_server_info
- Node status and informationxrpl_submit_tx
- Submit signed transactions
Setup
- Create a
.env
file:
XRPL_NODE_URL=https://xrplcluster.com
- Install dependencies:
pip install xrpl-py fastapi uvicorn python-dotenv
- Run the server:
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
API Usage Examples
Get Account Info
POST /call-tool/xrpl_account_info
{
"account": "rsuUjfWxrACCAwGQDsNeZUhpzXf1n1NK5Z"
}
Get Account Balances
POST /call-tool/xrpl_account_balances
{
"account": "rsuUjfWxrACCAwGQDsNeZUhpzXf1n1NK5Z"
}
Set Trust Line
POST /call-tool/xrpl_set_trust_line
{
"wallet_seed": "sXXXXXXXXXXXXXXXXXXXX",
"currency": "USD",
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
"limit": "1000"
}
Get AMM Info
POST /call-tool/xrpl_amm_info
{
"asset": {
"currency": "XRP"
},
"asset2": {
"currency": "USD",
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B"
}
}
Get Market Price
POST /call-tool/xrpl_market_price
{
"base_currency": {
"currency": "XRP"
},
"quote_currency": {
"currency": "USD",
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B"
}
}
Project Structure
├── main.py # FastAPI application entry point
├── tools/
│ ├── __init__.py
│ ├── register_tools.py # Tool registration
│ └── xrpl_tools.py # XRPL endpoint implementations
Key Components
-
xrpl_tools.py
- Core XRPL interaction functions
- Async implementation with event loop handling
- Error handling and response formatting
-
register_tools.py
- MCP tool registration
- Endpoint mapping and configuration
Future Enhancements
-
AMM (Liquidity Pool) Operations
- Create pools
- Add/remove liquidity
- Vote on pool parameters
-
Advanced Trading
- Create/cancel offers
- Automated trading functions
- Price alerts
-
NFT Operations
- Mint NFTs
- Create/accept offers
- Collection management
Common Issues
-
Async Event Loop: If you see "asyncio.run() cannot be called from a running event loop", check the async implementation in xrpl_tools.py
-
Rate Limiting: Consider implementing rate limiting for production use
Contributing
- Fork the repository
- Create a feature branch
- Implement your changes
- Submit a pull request
Important Notes
- Always use "validated" ledger for production
- Secure wallet seeds and private keys
- Monitor transaction fees
- Test thoroughly on testnet first
Resources
License
MIT