mcp-scryfall
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-scryfalllook up the card 'Black Lotus'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-scryfall
MCP server for live Magic: The Gathering card lookup via the Scryfall API. Built on the MCP TypeScript SDK.
LLMs misremember card names, costs, and rules text. This looks them up on live Scryfall instead. I use it daily for deckbuilding.
Tools
Tool | What it does |
| Exact-name lookup (optional set code). Full card object. |
| Fuzzy-name lookup. Handles typos and partial names. |
| Scryfall query-syntax search. Returns compact summaries by default (pass |
| Batch lookup ( |
| A random card, optionally filtered by a query. |
| Official Wizards rulings for one card, by exact name or Scryfall id — the errata and corner-case answers that are not in the oracle text. |
| Lists Scryfall bulk-data endpoints for offline corpus building. |
The compact summary returned by card_search and card_collection is name, mana_cost, type_line, cmc, set, collector_number, oracle_text, power, toughness, color_identity, legal_commander. Every key is always present, null when the card has no value — so "this creature has no power" is distinguishable from "that field wasn't returned".
Related MCP server: Scryfall MCP Server
Install
git clone https://github.com/haksanlulz/mcp-scryfall
cd mcp-scryfall
npm installRuns directly with tsx; no build step.
Use it from an MCP client
Add it to your client's MCP config:
{
"mcpServers": {
"scryfall": {
"command": "npx",
"args": ["tsx", "/absolute/path/to/mcp-scryfall/index.ts"],
"env": { "SCRYFALL_CONTACT": "you@example.com" }
}
}
}SCRYFALL_CONTACT is optional; it is added to the User-Agent per Scryfall's API guidelines.
Examples
Shapes below are exact; the volatile values (total_cards, latest-printing set codes) are whatever Scryfall returned when this was written.
card_search with q = "c:rb cmc<=2 t:creature o:haste" returns compact rows — rules text included — plus paging metadata:
{
"total_cards": 11,
"has_more": false,
"page": 1,
"data": [
{
"name": "Dreadhorde Butcher",
"mana_cost": "{B}{R}",
"type_line": "Creature — Zombie Warrior",
"cmc": 2,
"set": "war",
"collector_number": "189",
"oracle_text": "Haste\nWhenever this creature deals combat damage to a player or planeswalker, put a +1/+1 counter on this creature.\nWhen this creature dies, it deals damage equal to its power to any target.",
"power": "2",
"toughness": "2",
"color_identity": ["B", "R"],
"legal_commander": "legal"
}
]
}card_collection with identifiers = ["Lightning Bolt", "Counterspell", "Zzzz Definitely Not A Card"] resolves the whole list in one call and leads with what it couldn't find:
{
"requested": 3,
"found": 2,
"not_found": [{ "name": "Zzzz Definitely Not A Card" }],
"data": [
{ "name": "Lightning Bolt", "mana_cost": "{R}", "type_line": "Instant", "cmc": 1, "set": "msc", "collector_number": "128", "oracle_text": "Lightning Bolt deals 3 damage to any target.", "power": null, "toughness": null, "color_identity": ["R"], "legal_commander": "legal" },
{ "name": "Counterspell", "mana_cost": "{U}{U}", "type_line": "Instant", "cmc": 2, "set": "dsc", "collector_number": "58", "oracle_text": "Counter target spell.", "power": null, "toughness": null, "color_identity": ["U"], "legal_commander": "legal" }
]
}Scryfall caps one collection POST at 75 identifiers; longer lists are split into sequential rate-limited POSTs automatically, so a 100-card decklist is one tool call (two requests under the hood).
Pass full: true to either tool to get the raw Scryfall objects instead.
Develop
npm test # MCP-layer tests over an in-memory transport (fetch mocked, no network)
npm run smoke # spawn the real server over stdio and hit live Scryfall once per tool
npm run typecheckAPI etiquette
Follows Scryfall's guidelines: a 100 ms delay between requests, a descriptive User-Agent, and Accept: application/json. card_collection never posts more than Scryfall's cap of 75 identifiers per request; chunked requests go through the same delay queue.
Limitations
No caching, no offline store: every call is a live Scryfall request.
bulk_defaultlists the bulk-data endpoints; downloading them is the caller's job.Requests never run in parallel — everything funnels through the one 100 ms-spaced queue, so a large
card_collection(sequential 75-identifier POSTs) takes proportionally longer. Each request times out after 15 s.Thin passthrough: beyond the compact summaries, results are Scryfall's data as returned — no legality checking, no rules logic.
AI assistance
This project was built with AI assistance (Claude). Correctness is established by the mocked-transport test suite (npm test — every tool, error paths, chunking, throttle serialization; no network), a strict typecheck, a smoke run that spawns the real server over stdio and calls live Scryfall once per tool (npm run smoke), and daily real use for deckbuilding. I review the code and stand behind it.
License
MIT © Abishai James. Card data © Scryfall; this project is unofficial and not affiliated with Scryfall or Wizards of the Coast.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceMagic: The Gathering MCP server with card search, rules lookup, deck analysis, and Commander intelligenceLast updated141384MIT
- Alicense-qualityDmaintenanceMCP server for searching and retrieving Magic: The Gathering card information via the Scryfall API, with support for field presets, multiple output formats, and automatic rate limiting.Last updated24MIT
- Alicense-qualityDmaintenanceMCP server that searches and retrieves Magic: The Gathering card data from the Scryfall API.Last updated24MIT
- Alicense-qualityBmaintenanceUnified MCP server for Magic: The Gathering, combining Scryfall card search and pricing, EDHRec commander recommendations, Archidekt deck reading, and decklist validation into a single service.Last updatedMIT
Related MCP Connectors
Scryfall MCP — Magic: The Gathering card database.
Official remote MCP server for Archivist AI TTRPG campaign memory: characters, sessions, and more.
An MCP server for deep research or task groups
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/haksanlulz/mcp-scryfall'
If you have feedback or need assistance with the MCP directory API, please join our Discord server