npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

bitvavo-mcp

v0.4.1

Published

MCP server for read-only access to a Bitvavo crypto exchange account

Readme

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/) |