Skip to main content

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 can back both networks (unified wallet).

Features

  • ๐Ÿ”‘ Generate & Import - Create new wallets or import existing mnemonics
  • ๐Ÿ”— Unified Wallet - One mnemonic for Liquid and Bitcoin; unified_balance shows 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)
  • ๐Ÿช™ Assets - Native support for L-BTC, USDT, and all Liquid assets
  • ๐Ÿ”’ Secure - Encrypted storage, no remote servers for keys

Installation

For End Users (Easiest!)

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"

Then configure Claude Desktop (~/.claude/claude_desktop_config.json):

{
  "mcpServers": {
    "aqua-mcp": {
      "command": "/full/path/to/uvx",
      "args": ["aqua-mcp"]
    }
  }
}

Important: You can use the full path to uvx because Claude Desktop (macOS GUI app) doesn't inherit your shell's PATH. Find it with:

which uvx
# Example output: /Users/yourname/.local/bin/uvx

Restart Claude Desktop and you're ready to use 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. Use the full path to uv (e.g. which uv) so the app finds it:

{
  "mcpServers": {
    "aqua-mcp": {
      "command": "/full/path/to/uv",
      "args": ["run", "--directory", "/absolute/path/to/aqua-mcp", "python", "-m", "aqua_mcp.server"]
    }
  }
}

Quick Start

Use with Claude

Once connected, you can ask Claude to:

  • "Create a new Liquid wallet" (also creates Bitcoin wallet from same mnemonic)
  • "Show me my L-BTC balance" / "What's my Bitcoin balance?"
  • "Show my unified balance (Bitcoin and Liquid)"
  • "Generate a new receive address" (Liquid or Bitcoin)
  • "Send 0.001 L-BTC to lq1..." / "Send 10,000 sats to bc1..."

Usage Examples

Create a New Wallet

User: Create a new Liquid wallet for me

Claude: I'll generate a new wallet for you.
[Uses lw_generate_mnemonic โ†’ lw_import_mnemonic]

Your new wallet has been created!
Mnemonic (SAVE THIS SECURELY):
  abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about

โš ๏ธ Write this down and store it safely. Anyone with these words can access your funds.

Check Balance

User: What's my Liquid balance?

Claude: [Uses lw_balance]

Your balances:
- L-BTC: 0.00100000 (100,000 sats)
- USDT: 50.00

Send Transaction

User: Send 50,000 sats to lq1qqw8...

Claude: [Uses lw_send]

Transaction sent!
TXID: 7f3a8b2c...
Fee: 250 sats

Available Tools

Liquid (lw_*)

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
lw_export_descriptor Export CT descriptor
lw_balance Get wallet balances (all assets)
lw_address Generate Liquid receive address
lw_send Send L-BTC
lw_send_asset Send any Liquid asset
lw_transactions Transaction history
lw_tx_status Get transaction status (txid or explorer URL)
lw_list_wallets List all wallets

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

Configuration

Default config location: ~/.aqua-mcp/config.json

{
  "network": "mainnet",
  "default_wallet": "default",
  "electrum_url": null,
  "auto_sync": true
}

Networks

  • Liquid: mainnet (real funds), testnet (test funds) โ€” Electrum/Esplora (Blockstream)
  • Bitcoin: mainnet, testnet โ€” Esplora (Blockstream)

Security

Mnemonic Storage

Mnemonics are encrypted at rest using a passphrase. On first use, you'll be prompted to set a passphrase.

Watch-Only Mode

For maximum security, you can:

  1. Generate wallet on an air-gapped device
  2. Export the CT descriptor
  3. Import as watch-only on your daily machine
  4. Sign transactions on the air-gapped device

No Remote Keys

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    โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚   LWK (Liquid)  โ”‚โ”€โ”€โ”€โ–ถ Electrum/Esplora
โ”‚  (Claude, etc)  โ”‚     โ”‚   (Python)      โ”‚     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                 โ”‚              โ”‚   BDK (Bitcoin) โ”‚โ”€โ”€โ”€โ–ถ Esplora
                                 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     (Blockstream)

Credits

Built with:

  • LWK - Liquid Wallet Kit by Blockstream
  • BDK - Bitcoin Development Kit
  • MCP - Model Context Protocol

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aqua_mcp-0.2.0.tar.gz (100.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aqua_mcp-0.2.0-py3-none-any.whl (34.7 kB view details)

Uploaded Python 3

File details

Details for the file aqua_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: aqua_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 100.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.3

File hashes

Hashes for aqua_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 30c1c1db820b0f536ffccd7864548757aa29ecb7133e18979074c4ff52aaad4b
MD5 d91cf2e6b9a19ba0fc53f5b8823b9e6c
BLAKE2b-256 7aa4e5778d5f1465da4428ea5f31634920e970a455bd9bc7e9462fe804849ff3

See more details on using hashes here.

File details

Details for the file aqua_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: aqua_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 34.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.3

File hashes

Hashes for aqua_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3760b1ec9314f0d2b97dbc05b8091e8f875811091a45e7f13798559b6e8ab90b
MD5 54ac3628964b0d9ef59a83da0e1ce9ff
BLAKE2b-256 cabb2ec672834e8df44efc6d0be6cea8b078afb9da2cadafff050cb5ca0e9645

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page