matthewdtowles avatar

Iwantmymtg Mcp

matthewdtowles/iwantmymtg-mcp

Connects Claude to the I Want My MTG platform so you can search Magic: The Gathering cards, check prices and 30-day price history, and manage your collection through conversation. Anonymous mode lets you query cards by name or set number and browse sealed products. With an API key you can list and update your inventory directly. Built on the iwantmymtg.net API with plans to add transaction tracking, portfolio breakdowns, and price alerts. Useful if you're already using I Want My MTG to track your collection and want to pull card data or log new acquisitions without leaving your editor or chat window.

GitHub stars
1
tools
33
auth
Secret needed
transport
STDIO
env var
1
last updated
Oct 30, 2026

Tools

33 tools

Public tool metadata for what this MCP can expose to an agent.

search_cardsSearch Magic: The Gathering cards by name (substring). A name query (q) is required to return results; set code, rarity, type, and format legality only narrow that name search. Returns a paginated list with prices and basic metadata. Use this for catalog lookups; for a specifi...8 params

Search Magic: The Gathering cards by name (substring). A name query (q) is required to return results; set code, rarity, type, and format legality only narrow that name search. Returns a paginated list with prices and basic metadata. Use this for catalog lookups; for a specifi...

Parameters* required
formatstring
Filter to cards with a legality entry in this format (e.g. 'modern', 'commander').
legalitystring
Used with 'format'. Defaults to 'legal' when format is set.one of legal · banned · restricted
limitinteger
Page size (max 100).
pageinteger
1-based page index.
qstring
Substring to search card name + flavor name. Required to return results - the other parameters only narrow a name search; omitting q returns an empty list.
raritystring
Filter by rarity.one of common · uncommon · rare · mythic
setCodestring
3-5 character set code (e.g. 'lea', 'mh3').
typestring
Substring match against card type line (e.g. 'Goblin', 'Instant').
get_cardLook up a specific card printing by set code and collector number. Returns full card detail including current prices, rarity, type, and flavor name. For broader catalog search use search_cards.2 params

Look up a specific card printing by set code and collector number. Returns full card detail including current prices, rarity, type, and flavor name. For broader catalog search use search_cards.

Parameters* required
setCodestring
Set code (e.g. 'lea').
setNumberstring
Collector number within the set (e.g. '161'). String, not int - some sets use suffixes like '12a'.
get_card_pricesGet current normal and foil prices for a specific card printing.2 params

Get current normal and foil prices for a specific card printing.

Parameters* required
setCodestring
Set code (e.g. 'lea').
setNumberstring
Collector number within the set (e.g. '161'). String, not int - some sets use suffixes like '12a'.
get_card_price_historyGet the 30-day price history for a card printing (normal + foil). Older data is retained on a weekly/monthly cadence beyond 30 days.2 params

Get the 30-day price history for a card printing (normal + foil). Older data is retained on a weekly/monthly cadence beyond 30 days.

Parameters* required
setCodestring
Set code (e.g. 'lea').
setNumberstring
Collector number within the set (e.g. '161'). String, not int - some sets use suffixes like '12a'.
search_setsList Magic: The Gathering sets, optionally paginated. Returns set code, name, release date, type, and aggregate prices.2 params

List Magic: The Gathering sets, optionally paginated. Returns set code, name, release date, type, and aggregate prices.

Parameters* required
limitinteger
Page size, 1-100. Server default applies if omitted.
pageinteger
1-based page index. Defaults to 1.
get_setGet detail for a single set by code (e.g. 'lea', 'mh3').1 params

Get detail for a single set by code (e.g. 'lea', 'mh3').

Parameters* required
codestring
Set code (e.g. 'lea', 'mh3').
list_set_cardsList all cards in a set, paginated. Supports the same filters as search_cards (rarity, type, format, legality).7 params

List all cards in a set, paginated. Supports the same filters as search_cards (rarity, type, format, legality).

Parameters* required
codestring
Set code.
formatstring
Filter to cards with a legality entry in this format (e.g. 'modern', 'commander').
legalitystring
Used with 'format'. Defaults to 'legal' when format is set.one of legal · banned · restricted
limitinteger
Page size, 1-100. Server default applies if omitted.
pageinteger
1-based page index. Defaults to 1.
raritystring
Filter by rarity.one of common · uncommon · rare · mythic
typestring
Substring match against card type line (e.g. 'Goblin', 'Instant').
get_sealed_productsList sealed products (booster boxes, bundles, commander decks, etc.) for a set. Each entry includes a TCGPlayer purchase URL.1 params

List sealed products (booster boxes, bundles, commander decks, etc.) for a set. Each entry includes a TCGPlayer purchase URL.

Parameters* required
codestring
Set code.
list_inventoryList the authenticated user's card inventory, paginated. Requires IWMM_API_KEY. Returns cards with quantities, prices, and metadata.2 params

List the authenticated user's card inventory, paginated. Requires IWMM_API_KEY. Returns cards with quantities, prices, and metadata.

Parameters* required
limitinteger
Page size, 1-100. Server default applies if omitted.
pageinteger
1-based page index. Defaults to 1.
get_inventory_quantitiesBatch lookup: given a list of card UUIDs, return how many of each (normal + foil) the user owns. Useful before recommending adds. Requires IWMM_API_KEY.1 params

Batch lookup: given a list of card UUIDs, return how many of each (normal + foil) the user owns. Useful before recommending adds. Requires IWMM_API_KEY.

Parameters* required
cardIdsarray
Internal IWMM card UUIDs to look up (1-200). Get them from search_cards or get_card.
add_inventoryAdd one or more cards to the authenticated user's inventory. Accepts a batch - pass a single-item array for one card. This is a real write. Use update_inventory to change quantities, remove_inventory to delete a row. Requires IWMM_API_KEY.1 params

Add one or more cards to the authenticated user's inventory. Accepts a batch - pass a single-item array for one card. This is a real write. Use update_inventory to change quantities, remove_inventory to delete a row. Requires IWMM_API_KEY.

Parameters* required
itemsarray
update_inventoryUpdate quantities for one or more existing inventory rows. Accepts a batch. Use remove_inventory to delete a row entirely. Requires IWMM_API_KEY.1 params

Update quantities for one or more existing inventory rows. Accepts a batch. Use remove_inventory to delete a row entirely. Requires IWMM_API_KEY.

Parameters* required
itemsarray
remove_inventoryRemove a card+finish row from the authenticated user's inventory. Requires IWMM_API_KEY.2 params

Remove a card+finish row from the authenticated user's inventory. Requires IWMM_API_KEY.

Parameters* required
cardIdstring
Internal IWMM card UUID.
isFoilboolean
Which finish row to remove - foil or non-foil.
list_transactionsList the authenticated user's transactions, paginated. Supports sort/filter query params. Free tier sees the last 30 days only; Premium gets full history. Requires IWMM_API_KEY.6 params

List the authenticated user's transactions, paginated. Supports sort/filter query params. Free tier sees the last 30 days only; Premium gets full history. Requires IWMM_API_KEY.

Parameters* required
ascendboolean
Sort ascending. Defaults to descending (most recent first).
filterstring
Substring filter on card name.
limitinteger
Page size, 1-100. Server default applies if omitted.
pageinteger
1-based page index. Defaults to 1.
sortstring
Sort key (e.g. TX_DATE, TX_TYPE, TX_CARD, TX_PRICE).
typestring
Filter to BUY or SELL transactions (case-insensitive). Omit for both.one of BUY · SELL
record_transactionRecord a buy or sell transaction. By default this also adjusts inventory (BUY adds, SELL subtracts). This is a real write. Requires IWMM_API_KEY.10 params

Record a buy or sell transaction. By default this also adjusts inventory (BUY adds, SELL subtracts). This is a real write. Requires IWMM_API_KEY.

Parameters* required
cardIdstring
Internal IWMM card UUID.
datestring
ISO 8601 date (YYYY-MM-DD).
feesnumber
Optional fees or shipping in USD.
isFoilboolean
Whether the transacted copies are the foil finish.
notesstring
Optional free-text note.
pricePerUnitnumber
Per-unit price in USD.
quantityinteger
Number of copies transacted.
skipInventorySyncboolean
If true, record the transaction without adjusting inventory. Default false - transactions normally update inventory.
sourcestring
Where the transaction happened (e.g. 'TCGPlayer', 'LGS').
typestring
Transaction type: BUY or SELL.one of BUY · SELL
update_transactionUpdate an existing transaction by ID. Only the fields supplied are changed. Card identity and type (BUY/SELL) cannot be changed via this endpoint - delete and re-create instead. Requires IWMM_API_KEY.2 params

Update an existing transaction by ID. Only the fields supplied are changed. Card identity and type (BUY/SELL) cannot be changed via this endpoint - delete and re-create instead. Requires IWMM_API_KEY.

Parameters* required
idinteger
Transaction ID from list_transactions.
patchobject
delete_transactionDelete a transaction by ID. Requires IWMM_API_KEY.1 params

Delete a transaction by ID. Requires IWMM_API_KEY.

Parameters* required
idinteger
Transaction ID from list_transactions.
get_cost_basisGet FIFO cost basis for a specific card+finish for the authenticated user. Pass either cardId or (setCode, setNumber). Requires IWMM_API_KEY.4 params

Get FIFO cost basis for a specific card+finish for the authenticated user. Pass either cardId or (setCode, setNumber). Requires IWMM_API_KEY.

Parameters* required
cardIdstring
Internal IWMM card UUID. Provide this, or setCode + setNumber.
isFoilboolean
Whether to compute cost basis for the foil finish.default: false
setCodestring
Set code, used with setNumber as an alternative to cardId.
setNumberstring
Collector number within the set, used with setCode.
get_portfolio_summaryGet the authenticated user's portfolio summary - current value, total invested, realized gains, card/unit counts. Requires IWMM_API_KEY.

Get the authenticated user's portfolio summary - current value, total invested, realized gains, card/unit counts. Requires IWMM_API_KEY.

No parameter schema in public metadata yet.

get_portfolio_historyGet portfolio value history. Premium-gated - free tier receives 403. Requires IWMM_API_KEY.1 params

Get portfolio value history. Premium-gated - free tier receives 403. Requires IWMM_API_KEY.

Parameters* required
daysinteger
How many days of history. Server default applies if omitted.
get_card_performanceGet the user's best- or worst-performing cards by P&L. Default: best, top 10. Requires IWMM_API_KEY.2 params

Get the user's best- or worst-performing cards by P&L. Default: best, top 10. Requires IWMM_API_KEY.

Parameters* required
limitinteger
How many cards to return (1-100). Defaults to 10.
typestring
Rank by best or worst P&L. Defaults to 'best'.one of best · worst
get_cash_flowGet the user's cash flow (money in vs money out from BUY/SELL transactions). Premium-gated. Requires IWMM_API_KEY.

Get the user's cash flow (money in vs money out from BUY/SELL transactions). Premium-gated. Requires IWMM_API_KEY.

No parameter schema in public metadata yet.

get_realized_gainsGet the user's realized gains from SELL transactions using FIFO cost basis. Premium-gated. Requires IWMM_API_KEY.

Get the user's realized gains from SELL transactions using FIFO cost basis. Premium-gated. Requires IWMM_API_KEY.

No parameter schema in public metadata yet.

get_portfolio_breakdownGet the user's collection value broken down by a dimension. Premium-gated. Requires IWMM_API_KEY.1 params

Get the user's collection value broken down by a dimension. Premium-gated. Requires IWMM_API_KEY.

Parameters* required
bystring
Dimension to break down by. 'cost-basis' buckets are gain/loss/at-cost.one of set · rarity · type · format · cost-basis
refresh_portfolioRecalculate the user's portfolio P&L. Use after recording a batch of transactions if you want immediate fresh numbers. Requires IWMM_API_KEY.

Recalculate the user's portfolio P&L. Use after recording a batch of transactions if you want immediate fresh numbers. Requires IWMM_API_KEY.

No parameter schema in public metadata yet.

list_price_alertsList the authenticated user's price alerts. Free tier is capped at 5 active alerts and a single threshold direction per alert; Premium removes both limits. Paginated. Requires IWMM_API_KEY.2 params

List the authenticated user's price alerts. Free tier is capped at 5 active alerts and a single threshold direction per alert; Premium removes both limits. Paginated. Requires IWMM_API_KEY.

Parameters* required
limitinteger
Page size, 1-100. Server default applies if omitted.
pageinteger
1-based page index. Defaults to 1.
create_price_alertCreate a price alert for a card. Supply increasePct, decreasePct, or both (Premium). At least one threshold is required. Requires IWMM_API_KEY.3 params

Create a price alert for a card. Supply increasePct, decreasePct, or both (Premium). At least one threshold is required. Requires IWMM_API_KEY.

Parameters* required
cardIdstring
Internal IWMM card UUID.
decreasePctnumber
Trigger when price decreases by at least this percent.
increasePctnumber
Trigger when price increases by at least this percent.
update_price_alertUpdate an existing price alert. Pass null for a threshold to clear it (Premium only - free users must keep exactly one direction). isActive toggles enable/disable without deleting. Requires IWMM_API_KEY.4 params

Update an existing price alert. Pass null for a threshold to clear it (Premium only - free users must keep exactly one direction). isActive toggles enable/disable without deleting. Requires IWMM_API_KEY.

Parameters* required
decreasePctnumber
New decrease threshold percent, or null to clear it (Premium).
idinteger
Alert ID from list_price_alerts.
increasePctnumber
New increase threshold percent, or null to clear it (Premium).
isActiveboolean
Enable or disable the alert without deleting it.
delete_price_alertDelete a price alert by ID. Requires IWMM_API_KEY.1 params

Delete a price alert by ID. Requires IWMM_API_KEY.

Parameters* required
idinteger
Alert ID from list_price_alerts.
list_notificationsList the authenticated user's price alert notifications, newest first. Includes both read and unread. Paginated. Requires IWMM_API_KEY.2 params

List the authenticated user's price alert notifications, newest first. Includes both read and unread. Paginated. Requires IWMM_API_KEY.

Parameters* required
limitinteger
Page size, 1-100. Server default applies if omitted.
pageinteger
1-based page index. Defaults to 1.
get_unread_notification_countGet the count of unread notifications for the authenticated user. Requires IWMM_API_KEY.

Get the count of unread notifications for the authenticated user. Requires IWMM_API_KEY.

No parameter schema in public metadata yet.

mark_notification_readMark a single notification as read. Requires IWMM_API_KEY.1 params

Mark a single notification as read. Requires IWMM_API_KEY.

Parameters* required
idinteger
Notification ID from list_notifications.
mark_all_notifications_readMark every notification for the authenticated user as read. Requires IWMM_API_KEY.

Mark every notification for the authenticated user as read. Requires IWMM_API_KEY.

No parameter schema in public metadata yet.

Sponsors

Configuration

IWMM_API_KEYsecret

Personal IWMM API key (iwm_live_...). Optional; required only for the authenticated tools (anything that reads or changes your own collection). Read-only card, set, and price tools work without it.

Readme

iwantmymtg-mcp

npm version License: MIT LightNow

An MCP server for I Want My MTG. Exposes IWMM's API as tools so Claude Desktop, Claude Code, Cursor, and other MCP clients can search Magic: The Gathering cards/sets and manage a user's collection conversationally.

Published on npm, the MCP Registry, and Smithery. Coverage expands to match the API; see docs/TOOLS.md for the full, always-current tool list.

Demo: Claude Code answering four collection queries via the iwmm MCP server

What you can do


View the full README on GitHub

Details

Repository
github.com/matthewdtowles/iwantmymtg-mcp
Package
iwantmymtg-mcp
Transport
STDIO
Auth
Required
Registry
MCP registry, active