Open Source·

Querying Bandcamp Revenue Reports with Natural Language — Meet mtl-bandcamp-mcp

An open source MCP server that turns Bandcamp CSV exports into queryable dashboards. Ask about artist splits, fee breakdowns, and top sellers — no spreadsheet needed.
Querying Bandcamp Revenue Reports with Natural Language — Meet mtl-bandcamp-mcp

Every music label running on Bandcamp gets monthly CSV revenue reports. These files contain everything: gross revenue, net payouts, fee breakdowns, artist splits, and catalog details. But opening them in a spreadsheet means manual filtering, pivot tables, and context switching. We built mtl-bandcamp-mcp so you can query your Bandcamp earnings using natural language, without leaving the terminal.

All artist names, revenue figures, and catalog numbers in this article are fictional. We use fake data throughout to demonstrate the tool's capabilities.

Why We Built This

At MusicTech Lab, we built MusicData Lab - a music distribution and analytics product. As part of that platform, we wrote an adapter that ingests Bandcamp revenue reports into our data pipeline. It is not something we work on daily - Bandcamp is one of many data sources - but when a new CSV export arrives, we need quick answers without opening a spreadsheet. An MCP server turned out to be the perfect fit: it lets us query reports on demand and could eventually help us integrate and debug the adapter within the broader data pipeline:

Dashboard view
See totals, margins, and fee breakdowns at a glance.
Artist splits
Revenue grouped by artist with share percentages.
Top sellers
Rank items by net revenue, gross revenue, or quantity sold.
Item lookup
Full detail for any catalog number including UPC, ISRC, and region.

Since we already use Claude Code for development, building an MCP server was the natural choice.

The Tools

mtl-bandcamp-mcp exposes five tools:

bandcamp_list_reports
List available Bandcamp CSV report files in the configured reports directory.
bandcamp_summary
Dashboard summary with totals, net margin, and a full fee breakdown by category.
bandcamp_by_artist
Revenue grouped by artist showing quantity, gross, net, and share of total.
bandcamp_top_items
Top-selling items sorted by net revenue, gross revenue, or quantity.
bandcamp_item_detail
Full detail for a specific catalog number: UPC, ISRC, region, all fees, and net revenue.

Dashboard Fields

Summary metrics

MetricDescription
Items soldTotal quantity across all line items
Unique artistsNumber of distinct artists in the report
Gross revenueTotal revenue before deductions
Net revenueRevenue after all fees and taxes
Net marginNet as a percentage of gross

Fee breakdown

Fee typeDescription
TaxesVAT and other taxes collected
Bandcamp shareBandcamp's assessed revenue share
Collection societyRoyalty collection society share
Payment processingPayment processor fees
ShippingPhysical goods shipping costs

Item detail

FieldDescriptionExample
Cat no.Catalog number"MDL-2939"
UPCUniversal Product Code"5060000000001"
ISRCInternational Standard Recording Code"GBAP01900028"
Item typeTrack, album, or merch"track"
RegionBuyer's region"United Kingdom"

How It Works in Practice

Once installed, you just talk to Claude Code. No spreadsheet formulas, no pivot tables, no context switching.

Viewing the dashboard

Ask Claude for a summary:

> Show me a summary of my latest Bandcamp revenue report

Claude finds the most recent CSV and returns a formatted dashboard:

Report: bandcamp-rev-report-2026-q1.csvPeriod: 2026-01-01 to 2026-03-31

MetricValue
Items sold847
Line items312
Unique artists24
Gross revenue12,450.00 GBP
Total deductions3,290.75 GBP
Net revenue9,159.25 GBP
Net margin73.6%

Checking artist splits

> Which artists earned the most this quarter?

Claude groups revenue by artist and shows each one's share:

ArtistItemsQty SoldGrossNetShare
Solar Cole318167.27 GBP129.38 GBP53.9%
The Fox Alliance1664.55 GBP53.11 GBP22.1%
Midnight Storm1433.57 GBP28.81 GBP12.0%
Iris Grove2216.80 GBP11.72 GBP4.9%

Finding top sellers

> What are the top 5 items by quantity sold?
#ItemArtistTypeQtyGrossNet
1The Little FantasiesSolar Colealbum983.87 GBP64.31 GBP
2Short DreamsThe Fox Alliancealbum664.55 GBP53.11 GBP
3The Open OfferingsSolar Colealbum655.02 GBP44.01 GBP
4The Broad ChorusMidnight Stormalbum433.57 GBP28.81 GBP
5Premier VisionsSolar Colealbum328.38 GBP21.06 GBP

You can sort by net, gross, or quantity and set any limit.

Looking up a specific item

> Show me all the details for catalog number MDL-2939

Claude returns every field for that item: UPC, ISRC, region, item type, and a full fee breakdown.

More prompt ideas

Here are some real-world prompts you can try. Click each one to see the result:

List all available Bandcamp reports

What are the top 5 items by quantity sold?

How much did we pay in Bandcamp fees this quarter?

Which artist has the best net margin?

Show me the fee breakdown — what percentage goes to taxes vs Bandcamp vs payment processing?

You can chain prompts naturally. Ask Claude for a summary first, then drill into a specific artist or item. The conversation context carries over, so Claude remembers the report it just loaded.

Visualizing the data

You can also generate charts from the report data. Just ask:

> Show me which artists earned the most as a chart

Loading diagram...

> Show me the revenue share breakdown as a pie chart

Loading diagram...

> What percentage of fees goes to taxes vs Bandcamp vs payment processing?

Loading diagram...

All charts are rendered inline, with the site's dark theme and brand styling. No spreadsheet, no BI tool, no context switching.

Handling Bandcamp's CSV Format

Bandcamp exports revenue reports in UTF-16 encoding by default, which trips up most CSV parsers. mtl-bandcamp-mcp handles this transparently - it tries UTF-16 first, then falls back to UTF-8-sig and UTF-8. You never have to think about encoding issues.

Tech Stack

Python 3.10+
With Poetry for dependency management.
csv + io
Standard library CSV parsing with smart encoding detection.
FastMCP
Model Context Protocol server framework.

The entire codebase is a single server module with clean, focused logic.

Getting Started

Installation

git clone https://github.com/musictechlab/mtl-bandcamp-mcp.git
cd mtl-bandcamp-mcp
poetry install

Register with Claude Code

claude mcp add -s user mtl-bandcamp -- bash -c "cd /path/to/mtl-bandcamp-mcp && poetry run python -m mtl_bandcamp_mcp"

Configuration

Set BANDCAMP_REPORTS_DIR to point to the directory containing your Bandcamp CSV exports:

export BANDCAMP_REPORTS_DIR=~/Documents/bandcamp-reports

Restart Claude Code, and all five tools are available immediately.

You can verify the server is connected by running claude mcp list - look for mtl-bandcamp in the output.

What is Next

This is version 0.1.0. Here is what we are considering for future releases:

Period Comparison
Compare two reports side by side to spot revenue trends and growth.
Regional Breakdown
Revenue grouped by buyer region to understand geographic demand.
Trend Analysis
Track revenue over multiple reporting periods with growth indicators.
Export to Sheets
Push dashboard data directly to Google Sheets for sharing with stakeholders.

Have an idea for a feature we have not thought of? We would love to hear it. Let's connect and shape the roadmap together.

Open Source

mtl-bandcamp-mcp is MIT licensed and available on GitHub:

github.com/musictechlab/mtl-bandcamp-mcp

This project is experimental and in early development. Revenue data is read-only - the server never modifies your CSV files.

Contributions, issues, and feature requests are welcome. If you run a label on Bandcamp and want to streamline your revenue reporting, give it a try and let us know what you think.

Let's Build Something Together

Have a similar project in mind? We'd love to hear about it.

Get in touch to discuss how we can help bring your vision to life.