Buy Me a Coffee (read-only)

io.github.mayeu20Published by GitHub account mayeu20v0.1.2Updated Oct 24, 2026

Read your own Buy Me a Coffee supporters, Extras purchases, memberships and totals.

VerifiedSTDIODesktop onlyFinanceBusiness & Commerce

Overview

AI-generated overview

Read-only MCP server that lets an assistant review your own Buy Me a Coffee supporters, Extras purchases, memberships and totals.

What you can do
  • List recent one-off supports, newest first, with optional date filter and paging.
  • List recent Extras purchases with the same filtering options.
  • List membership records, or an empty result with a message.
  • Summarize support and Extras totals by currency over a chosen window, with a separate free-support count.
  • Redact supporter emails by default unless full addresses are explicitly requested.
When to use it
Useful when a creator wants to ask an assistant about their own Buy Me a Coffee income and supporter activity — recent supporters, Extras sales, memberships, or totals by currency over the last days or months — without opening the dashboard.
Requirements
Runs locally over stdio via npx, so Node.js 20 or newer is needed. Requires a Buy Me a Coffee personal access token generated in the creator developer dashboard, supplied in the BMAC_TOKEN environment variable. Network access to the Buy Me a Coffee developer API is required.
Before you install
The BMAC_TOKEN is a creator account credential; keep it out of tracked files and shared configs. Results are private account data, and emails are redacted by default — enabling include_emails exposes full addresses to the assistant. The server is read-only and writes no files, but the API may return HTTP 403 client-fingerprint blocks or HTTP 429 throttling. The API documentation is marked unmaintained.

Installation

In SourceWeft

  1. Open Buy Me a Coffee (read-only) in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

buymeacoffee-mcp

Read your own Buy Me a Coffee account from an AI assistant. This MCP server runs over stdio and uses the official read-only API.

See recent supporters, Extras purchases, memberships, and totals by currency. This project is independent and not affiliated with Buy Me a Coffee. Buy Me a Coffee is a trademark of its owner.

Tools

ToolWhat it returnsArguments
list_supportersRecent one-off supports, newest firstlimit (20), since, include_emails (false), max_pages (5)
list_extra_purchasesRecent Extras purchaseslimit (20), since, include_emails (false), max_pages (5)
list_subscriptionsMembership records or an empty result with a messageinclude_emails (false), max_pages (5)
summarySupports and Extras totals by currency, with a separate free support countdays (30), max_pages (20)

limit accepts 1 to 100. days accepts 1 to 365. since accepts an ISO date or a timestamp with a timezone. max_pages accepts 1 to 20 per endpoint. Requests are spaced at least one second apart, so a 20-page walk takes about 20 seconds. Missing normalized fields are null. Every argument also carries its own description in the tool schema, so your client can show you this detail inline.

The two list tools and the two counting tools behave differently when they run out of pages, and it is the difference worth knowing:

  • list_supporters and list_extra_purchases return what they found and set has_more. A result is not the whole story until has_more is false.
  • list_subscriptions and summary return an error instead, naming the cap. Neither will hand back a partial membership list or a total computed over part of the window, because a short total reads exactly like a real one.

since filters after the rows are fetched rather than at the API, so asking for more history than max_pages covers gives you a partial window, not an error.

Summary checks newest-first ordering within and across pages for each endpoint. It stops after a whole page falls before the window, provided no ordering break was seen. A final page with next_page_url: null always completes the walk. If ordering breaks, summary keeps walking and returns an error if the cap leaves pages unread. early_stop says whether older pages were skipped; pages_fetched counts all fetched pages across both endpoints. The API serves five rows per page.

Summary excludes refunded supports and revoked purchases. supports.count includes free supports. supports.free_count counts non-refunded, in-window supports with amount zero, including free downloads. Subtract it from supports.count for the paid support count. Currency totals are unchanged.

Getting a token

Open the Buy Me a Coffee developer dashboard. Select Login and sign in with your creator account. In the developer dashboard, select "generate my token", give it a name, and select "generate". Copy the token into your client's BMAC_TOKEN setting.

Claude Desktop

Use node 20 or newer. Add this entry to your Claude Desktop MCP configuration:

json
{  "mcpServers": {    "buymeacoffee": {      "command": "npx",      "args": ["-y", "buymeacoffee-mcp"],      "env": { "BMAC_TOKEN": "..." }    }  }}

Restart Claude Desktop after saving.

Claude Code

sh
claude mcp add buymeacoffee -e BMAC_TOKEN=... -- npx -y buymeacoffee-mcp

Replace ... with your token.

Cursor

Add this to your Cursor MCP configuration:

json
{  "mcpServers": {    "buymeacoffee": {      "command": "npx",      "args": ["-y", "buymeacoffee-mcp"],      "env": { "BMAC_TOKEN": "..." }    }  }}

Codex CLI

sh
codex mcp add buymeacoffee --env BMAC_TOKEN=... -- npx -y buymeacoffee-mcp

Replace ... with your token.

Privacy

Emails are redacted by default as j***@example.com, including emails in notes and nested records. Set include_emails: true only when you need full addresses. This is data from the account owner's account and should be handled accordingly.

The server reads the token only from BMAC_TOKEN. It stays in the local process and is sent only to developers.buymeacoffee.com for authentication. The server contacts no other host, writes no files, and logs nothing. Tool results go to your assistant. There is no telemetry.

HTTP 403 and client fingerprints

The API can reject a client fingerprint with HTTP 403 and error code 1010. This may be a client-fingerprint block rather than a bad token. The server sends a browser-like User-Agent on every request. If a block persists, try again later. HTTP 429 means the API has throttled requests.

Development

sh
pnpm installpnpm buildpnpm testpnpm devnpm pack --dry-run

Tests use synthetic fixtures and a local HTTP server. The live test is skipped unless both BMAC_LIVE=1 and BMAC_TOKEN are set. It uses your real account and makes three read-only requests. Never put a token in a tracked file.

scripts/probe-shape.mjs prints the API response shape without values, for verifying against a real account.

The API documentation is marked unmaintained. Field mappings, date assumptions, and page-cap behavior are recorded in NOTES.md in the repository.

Licence

MIT. Copyright 2026 Mathieu Kessler. See LICENSE.

Source: README.md at commit 01239cc

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.2LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts