Track your crypto portfolio across every exchange and wallet — all from inside Claude. Add holdings, get live P&L, daily history, and market context via 7 tools backed by CoinGecko (13K+ coins). Free tier: 3 holdings, 30-day history. Pro $19/mo: unlimited holdings, 365-day history, CSV export. The free funnel of the BiG Labs crypto stack — pairs with Crypto Tax for full-cycle coverage. Streamable HTTP, SHA-256 Bearer auth, per-user SQLite, open source (MIT).
How to pay
Subscribe
$19/month
Predictable monthly cost with included usage. Best for steady, high-volume traffic.
- Unlimited tools within plan limits
- One API key, billed once a month
- Cancel any time
📈 Crypto Portfolio MCP
A Claude-native portfolio tracker that lives in your chat.
✨ What it does
- 🗂️ Records holdings across exchanges and wallets (Coinbase, Binance, Kraken, MetaMask, Ledger, anything)
- 💹 Calculates real P&L — current value, cost basis, unrealized gain/loss in USD and %, allocation breakdown
- 🔴 Streams live prices from CoinGecko (Demo tier, free)
- 🕰️ Reconstructs historical value — what was your portfolio worth on March 14, 2024? Now you can ask
- 🌐 Surveys the market — BTC dominance, trending coins, top-10 movers — without leaving the chat
It's the data layer for the companion Crypto Tax MCP, but works fully standalone.
💬 Example conversations
These are the real prompts users say to Claude — what happens behind the scenes is shown in the tool calls.
1. 🆕 First-time setup: record a holding
You: "I bought 0.5 BTC on Coinbase on Jan 15, 2024 at $42,000."
Claude calls:
search_coin("BTC") // → finds "bitcoin"
add_holding({ coin_id: "bitcoin", symbol: "BTC", quantity: 0.5, purchase_price_usd: 42000, purchase_date: "2024-01-15", exchange: "Coinbase" })
Claude:
Done. Tracking 0.5 BTC purchased Jan 15, 2024 at $42,000 on Coinbase ($21,000 cost basis).
2. 💰 Check what you're worth right now
You: "What's my portfolio worth?"
Claude calls:
get_portfolio_summary({ currency: "usd" })
Claude:
Your portfolio is worth $73,420 across 5 assets, up +$18,920 (+34.7%) vs cost basis.
Asset Value Allocation P&L BTC $48,200 65.6% +$27,200 / +129% ↑ ETH $15,100 20.6% −$2,100 / −12% ↓ SOL $6,800 9.3% +$3,800 / +127% ↑ USDT $2,500 3.4% flat MATIC $820 1.1% −$180 / −18% ↓
Raw JSON output
{
"total_value": 73420.00,
"total_cost_basis": 54500.00,
"total_unrealized_pnl_usd": 18920.00,
"total_unrealized_pnl_pct": 34.72,
"currency": "usd",
"asset_count": 5,
"holdings": [
{
"coin_id": "bitcoin",
"symbol": "BTC",
"quantity": 0.5,
"current_price": 96400,
"value": 48200,
"exchange": "Coinbase",
"purchase_price_usd": 42000,
"cost_basis": 21000,
"unrealized_pnl_usd": 27200,
"unrealized_pnl_pct": 129.52,
"price_change_24h_pct": 2.4,
"allocation_pct": 65.65
}
]
}
3. 🔎 Quick price check (no holding needed)
You: "What's the price of SOL and AVAX right now?"
Claude calls:
get_asset_price({ coins: ["solana", "avalanche-2"] })
Claude:
SOL is at $185.40 (+3.2% 24h, $84B mcap). AVAX is at $42.10 (−1.8% 24h, $17B mcap).
4. 🆔 Find the right coin ID
You: "I want to add my Polygon holdings. What's the CoinGecko ID?"
Claude calls:
search_coin({ query: "polygon" })
Claude:
Polygon is now branded as POL with ID polygon-ecosystem-token. The old MATIC token is matic-network. Which one do you hold?
5. 🔐 Add a wallet holding (no price/date)
You: "Add 12 ETH in my Ledger cold storage. I don't remember the buy price."
Claude calls:
add_holding({ coin_id: "ethereum", symbol: "ETH", quantity: 12, exchange: "Ledger" })
Claude:
Added 12 ETH on Ledger. No cost basis recorded — current value will show, but unrealized P&L will be null. Add a purchase price later with add_holding if you want gain tracking.
6. 📊 Visualize the portfolio over time
You: "Show me how my portfolio performed over the last 90 days."
Claude calls:
get_portfolio_history({ days: 90 })
Claude:
Your portfolio over 90 days:
- Day 1 (Mar 10): $58,200
- Peak (Apr 22): $81,400
- Trough (May 15): $52,100
- Today (Jun 8): $73,420
Net change: +$15,220 (+26.2%). You weathered the May correction and have recovered ~89% of the peak.
Raw JSON output (truncated)
{
"currency": "usd",
"days": 90,
"data_points": 90,
"history": [
{"date": "2026-03-10", "value": 58200.00},
{"date": "2026-03-11", "value": 59100.00},
"...",
{"date": "2026-06-08", "value": 73420.00}
]
}
7. 🔥 "What's everyone talking about?"
You: "Give me a market snapshot — what's hot right now?"
Claude calls:
get_market_overview()
Claude:
Total crypto mcap: $3.2T (−1.2% 24h). BTC dominance: 56.8%. ETH: 14.2%.
Trending now: Hyperliquid (HYPE), Bittensor (TAO), Ondo (ONDO), Sui (SUI), Toncoin (TON).
Top 10: BTC $96.4K, ETH $3.4K, USDT (stable), BNB $710, SOL $185, USDC (stable), XRP $2.40, DOGE $0.42, ADA $1.10, AVAX $42.
8. 🗑️ Remove a holding
You: "I sold all my MATIC on Coinbase, remove it."
Claude calls:
remove_holding({ coin_id: "matic-network", exchange: "Coinbase" })
Claude:
Removed MATIC on Coinbase from your portfolio.
9. 🏦 Multi-exchange same coin
You: "I have 0.3 BTC on Kraken and 0.2 BTC on Binance. Add both."
Claude calls:
add_holding({ coin_id: "bitcoin", symbol: "BTC", quantity: 0.3, exchange: "Kraken" })
add_holding({ coin_id: "bitcoin", symbol: "BTC", quantity: 0.2, exchange: "Binance" })
Claude:
Tracking 0.5 BTC total across two exchanges (0.3 Kraken, 0.2 Binance). get_portfolio_summary will show them as separate rows so you can see exchange-level exposure.
10. ✏️ Cost basis correction
You: "I made a typo earlier — my SOL buy price was $95, not $195. Fix it."
Claude calls:
add_holding({ coin_id: "solana", symbol: "SOL", quantity: <same>, purchase_price_usd: 95, /* ... */ })
// upsert merges by (user, coin, exchange)
Claude:
Updated. Your SOL cost basis is now $95/coin. Recalculated unrealized P&L: +$4,500 (was −$5,500 with the wrong price).
