Skip to main content
Glama
aderik

bitvavo-mcp

by aderik

bitvavo-mcp

License: MIT npm version

An MCP server that exposes a Bitvavo crypto exchange account as read-only tools for Claude (and other MCP clients).

⚠️ Read-only by design. The server only calls Bitvavo endpoints that view information — no trading, no withdrawals. Create your API key with the View information scope only.

What it does

Once connected, Claude can answer questions like:

  • "What is my portfolio worth right now?"

  • "How much XRP do I hold and what's my average cost basis?"

  • "Show me my trade history on BTC-EUR."

  • "What were my last 5 deposits and withdrawals?"

Tools

Tool

Purpose

ping

Verify the connection and credentials, return server time + fee tier

get_balance

List per-asset balances (available + in-order)

get_portfolio_value

Total portfolio value in EUR with breakdown

get_ticker

24-hour ticker for one market

get_markets

List tradable markets, filterable by quote / status

get_trades

Your filled trades on a specific market

get_deposits

Deposit history, optionally filtered by asset

get_withdrawals

Withdrawal history, optionally filtered by asset

get_open_orders

Orders that are placed but not yet filled

get_pnl

Average-cost P&L per position, with cost basis + unrealized/realized split

import_transactions

Import a Bitvavo CSV transaction export into a local SQLite store

get_transactions

Query the locally-stored transaction history

get_candles

Historical OHLCV candles for a market (any interval from 1m to 1d)

get_trend

Multi-period trend digest — 24h/7d/30d/90d/1y % changes plus your cost-basis comparison

Install

You need Node.js 18 or later and a Bitvavo API key + secret with View information scope (create one).

Claude Desktop

Open your Claude Desktop config file:

OS

Path

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

Linux

~/.config/Claude/claude_desktop_config.json

Add an entry under mcpServers:

{
  "mcpServers": {
    "bitvavo": {
      "command": "npx",
      "args": ["-y", "bitvavo-mcp"],
      "env": {
        "BITVAVO_API_KEY": "your_api_key",
        "BITVAVO_API_SECRET": "your_api_secret"
      }
    }
  }
}

Restart Claude Desktop. The Bitvavo tools appear in the tools menu (hammer icon) of any new chat. npx -y downloads the latest published version on first run and caches it locally — no manual install step.

Claude Code

claude mcp add --scope user bitvavo \
  -e BITVAVO_API_KEY=your_api_key \
  -e BITVAVO_API_SECRET=your_api_secret \
  -- npx -y bitvavo-mcp

Use --scope local if you only want it active in the current project directory.

From source

If you want to hack on the code:

git clone https://github.com/aderik/bitvavo-mcp.git
cd bitvavo-mcp
npm install
npm run build
cp .env.example .env  # then fill in BITVAVO_API_KEY and BITVAVO_API_SECRET

Point Claude Desktop at the built file instead of npx:

{
  "mcpServers": {
    "bitvavo": {
      "command": "node",
      "args": ["/absolute/path/to/bitvavo-mcp/dist/server.js"]
    }
  }
}

The .env file is loaded relative to the running script, so credentials are found regardless of which directory Claude spawns the server from. .env is gitignored — never commit it.

Full transaction history via CSV import

Bitvavo's /trades and /orders REST endpoints expose only exchange (Advanced) trades. Transactions made via the Buy/Sell or Convert UI in the Bitvavo app use a separate brokerage backend and do not appear in the API. Staking distributions and rebates aren't in the API either.

To get the complete picture:

  1. Download your transaction CSV from Bitvavo: Account → Transactiegeschiedenis → Exporteren → Volledige geschiedenis → format CSV.

  2. In your Claude chat: "import_transactions van /pad/naar/Volledige geschiedenis.csv" — or call the tool directly.

  3. Run get_pnl again — every traded asset (including fully sold-off positions) now shows its realized P&L, sourced from the imported records.

The data lives in ~/.bitvavo-mcp/transactions.db (override with BITVAVO_MCP_DATA_DIR=/some/path). Re-importing the same CSV is idempotent — rows are matched on Bitvavo's transaction_id.

Environment variables

Variable

Required

Purpose

BITVAVO_API_KEY

yes

API key from https://account.bitvavo.com/user/api

BITVAVO_API_SECRET

yes

The matching secret

BITVAVO_MCP_DATA_DIR

no

Override the SQLite location (default ~/.bitvavo-mcp/)

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
4Releases (12mo)

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aderik/bitvavo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server