louis119021 downloadsTrack your physical Magic: The Gathering collection, decks and wantlists, with card data and prices from Scryfall.
An Obsidian plugin to keep track of a physical Magic: The Gathering collection, plus your decks and wantlists, with card data and prices from Scryfall and a few price sources next to it.
Everything is stored in your own files, on your own devices. There is no account and no server run by this plugin.
legal:modern, border:showcase,
oracle:"draw a card", #235…). The Add cards window searches all of Scryfall; each list has the same search over what it holds.Requires Obsidian 1.8.7 or later, on desktop, iPhone/iPad or Android.
Settings → Community plugins → Browse, search for MTG Collection Tracker, install, enable.
Download main.js, manifest.json and styles.css from the latest
release, put the three files in
<your vault>/.obsidian/plugins/mtg-collection-tracker/, then enable the plugin in Settings → Community plugins.
The files of every release since 1.0.524 carry a GitHub build attestation, which proves they were built from this
repository: gh attestation verify <file> --repo Louis1190/obsidian-mtg-collection-tracker.
… menu of a list.CSV import reads a header row; it recognises Quantity, Name, Set code, Collector number, Finish, Condition,
Language, Scryfall ID, the grading columns and Custom price, so the plugin's own CSV export can be imported back.
Cards that Scryfall cannot resolve are reported, not silently dropped.
| Where it shows | Source |
|---|---|
| Card value, TCGplayer column | Scryfall's own prices |
| Card Kingdom column | Card Kingdom's public pricelist |
| Mana Pool column | Mana Pool's public price list (computers only, see below) |
| Cardmarket column, price history, market movers | cardbase.dev (an API key is optional and gives a longer history) |
| Showing one currency everywhere | frankfurter.dev USD/EUR rate |
The price saved with each of your cards (it feeds the values you see) comes from Scryfall and refreshes on its own at the interval you choose (Settings → Price, every 24 hours by default). The store columns of a card are fetched when you open the card. Prices are indications taken from third parties, not offers to buy or sell, and can be out of date.
Card Kingdom and Mana Pool publish their whole catalogue as one file (65 MB and 49 MB once unpacked). A computer reads it whole. On a phone or tablet, Card Kingdom is read as a stream so that it never sits in memory, and the Mana Pool column says Not on mobile: its server does not allow that kind of reading, and loading the file the usual way ran Obsidian out of memory.
data.json, in the plugin's folder, or in a vault folder you choose
(Settings → Data storage). That is how you sync it with Syncthing, iCloud or any other tool you already use for the vault.MTG Backups by default, the last 7 kept). To restore, Choose a saved backup lists the backups of that folder (the
same on every device), and Load backup file takes a backup from anywhere else. You always see what a backup contains
before anything is replaced.The plugin talks to the internet to do its job, and only to these services. It has no analytics and no telemetry, and it never sends your collection anywhere except to the GitHub repository you configure yourself.
| Service | What for | When |
|---|---|---|
api.scryfall.com, and the images served by *.scryfall.io |
Card search, card data, prices, format legalities, set and mana symbols, card images | When you search, open or import cards; in the background to keep the prices and legalities of your cards up to date |
api.cardkingdom.com |
Card Kingdom prices | The first time a card is opened in a session (read as a stream on a phone or tablet, to spare its memory) |
manapool.com |
Mana Pool prices | The first time a card is opened in a session, computers only |
api.cardbase.dev |
Price history, Cardmarket prices, market movers | When a card is opened or Home is shown |
api.frankfurter.dev |
USD/EUR exchange rate | Once per session, when a price needs converting |
api.github.com |
Syncing your data with your own private repository | Only if you turn GitHub storage on |
Requests to Scryfall are rate-limited as their guidelines ask, and carry a User-Agent that names this plugin.
Everything the plugin keeps lives inside your vault: its own folder (data.json, caches, safety copies), the data folder you
may choose, the backup folder and the export folder. The exceptions are a few per-device preferences and the GitHub token,
which Obsidian keeps in its own storage on the device. The plugin reaches outside the vault in these cases only, each one
started by an action of yours:
MTG Exports by default), and its
Share… button hands that file to the system's share sheet or default app. On Android, Device folder… lets you pick
a folder of the device with Obsidian's own folder picker and writes the file there; it never overwrites an existing file.data.json, so they are neither synced nor backed up. If you turn GitHub storage on, its
access token goes to Obsidian's secret storage when your version has one, otherwise to the same device storage.npm ci
npm test # unit tests (Vitest)
npm run build # type check, then bundle to main.js
styles.css and manifest.json are used as they are.
MIT © 2026 Louis