MCP server for Liquid Network wallet operations
Project description
AQUA MCP
MCP server for managing Liquid Network and Bitcoin wallets through AI assistants like Claude. One mnemonic backs both networks (unified wallet).
Features
- Generate & Import - Create new wallets or import existing mnemonics
- Unified Wallet - One mnemonic for Liquid and Bitcoin;
unified_balanceshows both - Bitcoin (onchain) - BIP84 wallets, balance and send via
btc_*tools (BDK) - Watch-Only - Import CT descriptors for balance monitoring
- Send & Receive - Full transaction support (L-BTC, BTC, and Liquid assets)
- Lightning - Send and receive via Lightning using L-BTC (via Boltz & Ankara)
- Assets - Native support for L-BTC, USDT, and all Liquid assets
- Secure - Encrypted storage, no remote servers for keys
Installation
Recommended (uvx)
If you don't have uvx installed:
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
Configure Claude Desktop (~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"aqua-mcp": {
"command": "/full/path/to/uvx",
"args": ["aqua-mcp"]
}
}
}
Find the full path to uvx with:
which uvx
# Example: /Users/yourname/.local/bin/uvx
Restart Claude Desktop and you're ready to use Bitcoin and Liquid wallets.
For Developers
Clone and install from source:
git clone https://github.com/jan3dev/aqua-mcp.git
cd aqua-mcp
uv sync
Configure Claude Desktop using the full path to uv (find with which uv):
{
"mcpServers": {
"aqua-mcp": {
"command": "/full/path/to/uv",
"args": ["run", "--directory", "/absolute/path/to/aqua-mcp", "python", "-m", "aqua_mcp.server"]
}
}
}
Quick Start
Once connected, you can ask Claude to:
- "Create a new wallet" (creates both Bitcoin and Liquid wallets from one mnemonic)
- "Show my balance" / "What's my Bitcoin balance?"
- "Generate a receive address" (Liquid or Bitcoin)
- "Send 10,000 sats to bc1..." / "Send 0.001 L-BTC to lq1..."
- "Pay this Lightning invoice: lnbc..."
- "Receive 50,000 sats via Lightning"
- "Delete my wallet"
Available Tools
Wallet Management
| Tool | Description |
|---|---|
lw_generate_mnemonic |
Generate new BIP39 mnemonic |
lw_import_mnemonic |
Import wallet from mnemonic (also creates Bitcoin wallet) |
lw_import_descriptor |
Import watch-only wallet from CT descriptor |
lw_export_descriptor |
Export CT descriptor for watch-only use |
lw_list_wallets |
List all wallets |
delete_wallet |
Delete a wallet and all its cached data |
Liquid (lw_*)
| Tool | Description |
|---|---|
lw_balance |
Get wallet balances (all assets) |
lw_address |
Generate Liquid receive address (lq1...) |
lw_send |
Send L-BTC |
lw_send_asset |
Send any Liquid asset (USDT, etc.) |
lw_transactions |
Transaction history |
lw_tx_status |
Get transaction status (txid or explorer URL) |
Bitcoin (btc_*)
| Tool | Description |
|---|---|
btc_balance |
Get Bitcoin balance (sats) |
btc_address |
Generate Bitcoin receive address (bc1...) |
btc_transactions |
Bitcoin transaction history |
btc_send |
Send BTC |
Unified
| Tool | Description |
|---|---|
unified_balance |
Get balance for both Bitcoin and Liquid |
Lightning
| Tool | Description |
|---|---|
lightning_receive |
Generate a Lightning invoice to receive L-BTC (100–25,000,000 sats) |
lightning_send |
Pay a Lightning invoice using L-BTC via Boltz (~0.1% fee) |
lightning_transaction_status |
Check status of a Lightning swap (send or receive) |
Configuration
Default config location: ~/.aqua-mcp/config.json
{
"network": "mainnet",
"default_wallet": "default",
"electrum_url": null,
"auto_sync": true
}
Security
Mnemonics are encrypted at rest using a passphrase (PBKDF2 + Fernet). Without a passphrase, the mnemonic is stored base64-encoded only — use a passphrase for real funds.
For maximum security you can:
- Generate wallet on an air-gapped device
- Export the CT descriptor
- Import as watch-only on your daily machine
All private key operations happen locally. Only blockchain sync uses Blockstream's public servers.
Development
# Install with dev dependencies
uv sync --all-extras
# Run tests
uv run python -m pytest tests/
# Format code
uv run black src/
uv run ruff check src/
Architecture
AI Assistant ←→ MCP Server (Python) ←→ LWK (Liquid) ──→ Electrum/Esplora
│
├──→ BDK (Bitcoin) ──→ Esplora (Blockstream)
│
└──→ Boltz / Ankara ──→ Lightning
Credits
Built with:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aqua_mcp-0.2.1.tar.gz.
File metadata
- Download URL: aqua_mcp-0.2.1.tar.gz
- Upload date:
- Size: 99.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6eb739b3f04a410762ae34bdbe16367ba5970c71c20bd990d9644734d054af5d
|
|
| MD5 |
0ce9b852ba052911ae0530159f8f5749
|
|
| BLAKE2b-256 |
ed322870a14d89ec17d69a07c580b4f85b06c754c29ecb449e8a8992f7b91507
|
File details
Details for the file aqua_mcp-0.2.1-py3-none-any.whl.
File metadata
- Download URL: aqua_mcp-0.2.1-py3-none-any.whl
- Upload date:
- Size: 34.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
421c56b6129eec5ba90344c0683f86b75a9be4e85925baaf4a38ade917a5749d
|
|
| MD5 |
e6a707c0ff453e33707d33dbd4558212
|
|
| BLAKE2b-256 |
60e04f08b6ac1b845eeb23ef19cad05798b840fa671e2b8bc7b1c9c0a74ac009
|