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.
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 paramsSearch 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...
qstringpageintegertypestringlimitintegerformatstringraritystringcommon · uncommon · rare · mythicsetCodestringlegalitystringlegal · banned · restrictedget_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 paramsLook 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.
setCodestringsetNumberstringget_card_pricesGet current normal and foil prices for a specific card printing.2 paramsGet current normal and foil prices for a specific card printing.
setCodestringsetNumberstringget_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 paramsGet the 30-day price history for a card printing (normal + foil). Older data is retained on a weekly/monthly cadence beyond 30 days.
setCodestringsetNumberstringsearch_setsList Magic: The Gathering sets, optionally paginated. Returns set code, name, release date, type, and aggregate prices.2 paramsList Magic: The Gathering sets, optionally paginated. Returns set code, name, release date, type, and aggregate prices.
pageintegerlimitintegerget_setGet detail for a single set by code (e.g. 'lea', 'mh3').1 paramsGet detail for a single set by code (e.g. 'lea', 'mh3').
codestringlist_set_cardsList all cards in a set, paginated. Supports the same filters as search_cards (rarity, type, format, legality).7 paramsList all cards in a set, paginated. Supports the same filters as search_cards (rarity, type, format, legality).
codestringpageintegertypestringlimitintegerformatstringraritystringcommon · uncommon · rare · mythiclegalitystringlegal · banned · restrictedget_sealed_productsList sealed products (booster boxes, bundles, commander decks, etc.) for a set. Each entry includes a TCGPlayer purchase URL.1 paramsList sealed products (booster boxes, bundles, commander decks, etc.) for a set. Each entry includes a TCGPlayer purchase URL.
codestringlist_inventoryList the authenticated user's card inventory, paginated. Requires IWMM_API_KEY. Returns cards with quantities, prices, and metadata.2 paramsList the authenticated user's card inventory, paginated. Requires IWMM_API_KEY. Returns cards with quantities, prices, and metadata.
pageintegerlimitintegerget_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 paramsBatch 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.
cardIdsarrayadd_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 paramsAdd 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.
itemsarrayupdate_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 paramsUpdate quantities for one or more existing inventory rows. Accepts a batch. Use remove_inventory to delete a row entirely. Requires IWMM_API_KEY.
itemsarrayremove_inventoryRemove a card+finish row from the authenticated user's inventory. Requires IWMM_API_KEY.2 paramsRemove a card+finish row from the authenticated user's inventory. Requires IWMM_API_KEY.
cardIdstringisFoilbooleanlist_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 paramsList 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.
pageintegersortstringtypestringBUY · SELLlimitintegerascendbooleanfilterstringrecord_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 paramsRecord a buy or sell transaction. By default this also adjusts inventory (BUY adds, SELL subtracts). This is a real write. Requires IWMM_API_KEY.
datestringfeesnumbertypestringBUY · SELLnotesstringcardIdstringisFoilbooleansourcestringquantityintegerpricePerUnitnumberskipInventorySyncbooleanupdate_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 paramsUpdate 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.
idintegerpatchobjectdelete_transactionDelete a transaction by ID. Requires IWMM_API_KEY.1 paramsDelete a transaction by ID. Requires IWMM_API_KEY.
idintegerget_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 paramsGet FIFO cost basis for a specific card+finish for the authenticated user. Pass either cardId or (setCode, setNumber). Requires IWMM_API_KEY.
cardIdstringisFoilbooleansetCodestringsetNumberstringget_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 paramsGet portfolio value history. Premium-gated - free tier receives 403. Requires IWMM_API_KEY.
daysintegerget_card_performanceGet the user's best- or worst-performing cards by P&L. Default: best, top 10. Requires IWMM_API_KEY.2 paramsGet the user's best- or worst-performing cards by P&L. Default: best, top 10. Requires IWMM_API_KEY.
typestringbest · worstlimitintegerget_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 paramsGet the user's collection value broken down by a dimension. Premium-gated. Requires IWMM_API_KEY.
bystringset · rarity · type · format · cost-basisrefresh_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 paramsList 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.
pageintegerlimitintegercreate_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 paramsCreate a price alert for a card. Supply increasePct, decreasePct, or both (Premium). At least one threshold is required. Requires IWMM_API_KEY.
cardIdstringdecreasePctnumberincreasePctnumberupdate_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 paramsUpdate 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.
idintegerisActivebooleandecreasePctnumberincreasePctnumberdelete_price_alertDelete a price alert by ID. Requires IWMM_API_KEY.1 paramsDelete a price alert by ID. Requires IWMM_API_KEY.
idintegerlist_notificationsList the authenticated user's price alert notifications, newest first. Includes both read and unread. Paginated. Requires IWMM_API_KEY.2 paramsList the authenticated user's price alert notifications, newest first. Includes both read and unread. Paginated. Requires IWMM_API_KEY.
pageintegerlimitintegerget_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 paramsMark a single notification as read. Requires IWMM_API_KEY.
idintegermark_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.
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.mdfor the full, always-current tool list.

See the project roadmap for what's next.
Requires Node 20+.
npx iwantmymtg-mcp
Or install globally if you prefer:
npm install -g iwantmymtg-mcp
iwantmymtg-mcp
Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json; Windows: %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"iwmm": {
"command": "npx",
"args": ["-y", "iwantmymtg-mcp"],
"env": {
"IWMM_API_KEY": "iwm_live_..."
}
}
}
}
IWMM_API_KEY is optional - read-only tools work without it. Create a key at https://iwantmymtg.net/user/api-keys.
Add to .mcp.json in your project (or ~/.claude/.mcp.json globally):
{
"mcpServers": {
"iwmm": {
"command": "npx",
"args": ["-y", "iwantmymtg-mcp"],
"env": { "IWMM_API_KEY": "iwm_live_..." }
}
}
}
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json in your project:
{
"mcpServers": {
"iwmm": {
"command": "npx",
"args": ["-y", "iwantmymtg-mcp"],
"env": { "IWMM_API_KEY": "iwm_live_..." }
}
}
}
After saving, restart Cursor and confirm iwmm appears under Settings -> Features -> MCP Servers.
See examples/ for walkthroughs of common flows, and docs/TOOLS.md for the full tool reference.
| Env var | Default | Purpose |
|---|---|---|
IWMM_API_KEY | (unset) | Personal API key. Required only for authenticated tools. |
IWMM_BASE_URL | https://iwantmymtg.net | Override for self-hosted or local-dev IWMM instances. |
npm install
npm run build
node dist/index.js
Or with tsx for live reload:
npm install
npx tsx src/index.ts
This project is licensed under the MIT License — see the LICENSE file for details.
IWMM_API_KEYsecretPersonal IWMM API key (iwm_live_...). Optional; required only for the inventory, transaction, portfolio, and price-alert tools.