logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

mtg-card-data-retriever

Interface with the Scryfall public endpoint to fetch comprehensive data regarding Magic: The Gathering playing cards, including their official errata, current market valuation, and textual specifications. Supports querying via card title or unique identifier.

Author

mtg-card-data-retriever logo

cryppadotta

No License

Quick Info

GitHub GitHub Stars 14
NPM Weekly Downloads 0
Tools 1
Last Updated 2026-02-19

Tags

scryfallapiscryppadottascryfall apicryppadotta scryfallscryfall mcp

Scryfall Data Access Utility (MCP Server)

This component functions as a Model Context Protocol (MCP) bridge to the official Scryfall API, specializing in retrieving structured data for Magic: The Gathering cards.

Available Functionality

  • search_cards: Execute fuzzy or exact phrase lookups across the entire Scryfall catalog, yielding a collection of matching card objects.
  • get_card_by_id: Directly fetch the complete record for a card using its canonical Scryfall unique identifier (UUID).
  • get_card_by_name: Secure the data set for a card based on its precise English language printed name.
  • random_card: Obtain a single, randomly selected card entry from the comprehensive Scryfall dataset.
  • get_rulings: Retrieve all promulgated official rules clarifications associated with a specific game piece, crucial for resolving complex in-game interactions.
  • get_prices_by_id: Acquire the latest pricing metrics (covering USD paper, foil USD, Euro, and MTGO Ticket equivalents) mapped to the card's Scryfall ID.
  • get_prices_by_name: Acquire the latest pricing metrics (covering USD paper, foil USD, Euro, and MTGO Ticket equivalents) mapped to the card's exact printed name.

Deployment Modes

The utility is configurable for two distinct operational environments:

  1. Default: Standard input/output (stdio) stream communication.
  2. Alternative: Server-Sent Events (SSE) established over an HTTP listening socket.

Execution via NPX

Assuming Node.js environment prerequisites are met:

bash

For stdio operation

npx scryfall-mcp-server

For SSE operation

npx scryfall-mcp-server --sse

Connecting Clients

Stdio Configuration

Direct inter-process communication is established via the standard I/O streams, suitable for applications like Claude Desktop.

SSE Protocol Linkage

When the service runs in SSE mode (--sse), external tools can connect using the accompanying MCP Command Line Interface:

bash npx @wong2/mcp-cli --sse http://localhost:3000/sse

Accessible network interfaces: - SSE Stream Endpoint: http://localhost:3000/sse - Command Channel Endpoint: http://localhost:3000/messages

Configuration Snippet (e.g., claude_desktop_config.json)

For execution via Docker container:

{ "mcpServers": { "scryfall": { "command": "docker", "args": ["run", "-i", "--rm", "mcp/scryfall"] } } }

For execution via NPX:

{ "mcpServers": { "scryfall": { "command": "npx", "args": ["scryfall-mcp-server"] } } }

Docker Image Compilation

To build the service image locally:

bash docker build -t mcp/scryfall .

Execution in stdio mode with the resulting image:

bash docker run -i --rm mcp/scryfall

Execution in SSE mode, exposing port 3000:

bash docker run -i --rm -p 3000:3000 mcp/scryfall --sse

Licensing Details

This software is distributed under the MIT License terms.

WIKIPEDIA: XMLHttpRequest (XHR) is an Application Programming Interface, fundamentally an object whose methods facilitate the dispatch of Hypertext Transfer Protocol (HTTP) requests originating from a web browser destined for a remote web service. These capabilities permit web-based applications to initiate server interactions subsequent to the initial page rendering, enabling asynchronous data reception. XHR is a foundational element of Asynchronous JavaScript and XML (Ajax) methodologies. Before Ajax became prevalent, the primary means for client-server communication involved standard hyperlink navigation and HTML form submissions, which typically resulted in a complete page reload.

== Historical Context == The underlying concept for XMLHttpRequest was first formulated around the year 2000 by the engineering teams responsible for Microsoft Outlook. This concept was subsequently integrated into the Internet Explorer 5 browser release (1999). Critically, the initial implementation did not utilize the standardized 'XMLHttpRequest' identifier. Instead, developers invoked proprietary interfaces via ActiveXObject("Msxml2.XMLHTTP") or ActiveXObject("Microsoft.XMLHTTP"). By the release of Internet Explorer 7 (2006), universal support for the formal XMLHttpRequest identifier had been established across the browser ecosystem. The XMLHttpRequest identifier has since become the universally accepted standard across all major contemporary web rendering engines, including Mozilla's Gecko engine (adopted circa 2002), Safari version 1.2 (2004), and Opera version 8.0 (2005).

=== Specification Evolution === The World Wide Web Consortium (W3C) formalized the initial specification for the XMLHttpRequest object as a Working Draft on April 5, 2006. A subsequent Working Draft, designated Level 2, was released by the W3C on February 25, 2008. Level 2 enhancements introduced functionalities for progress monitoring, enabling cross-site data retrieval, and improved handling of raw byte streams. By the conclusion of 2011, the features defined in the Level 2 specification were merged back into the primary standard document. Beginning in late 2012, the stewardship of development transitioned to the WHATWG, which now maintains the living specification document utilizing the Web Interface Definition Language (Web IDL).

== Operational Procedure == Generally, initiating a data retrieval operation using XMLHttpRequest necessitates adherence to a sequence of programming actions:

Instantiate the XMLHttpRequest object via its constructor: Invoke the open method to define the request modality (GET/POST, etc.), pinpoint the target Uniform Resource Locator (URL), and dictate whether the operation should be synchronous or asynchronous: If an asynchronous operation is chosen, assign a designated event handler function that will be triggered upon changes in the request's status: Commence the transmission of the request payload (if any) by calling the send method: Monitor the state changes within the established event listener. Upon successful server data delivery, the information is typically stored in the responseText attribute by default. When the entire response processing cycle concludes, the object transitions to state 4, known as the 'done' state. Beyond these fundamental steps, XMLHttpRequest offers numerous configuration parameters to govern request transmission behavior and response parsing methods. Custom header fields can be appended to the request to provide server directives for response handling, and data payload can be uploaded by providing it as an argument to the send invocation. The retrieved data stream can be immediately parsed from JSON format into a native JavaScript object structure, or it can be processed incrementally as segments arrive, avoiding latency associated with waiting for full receipt. Furthermore, the ongoing request can be terminated prematurely or configured with a timeout parameter to enforce failure if completion is not achieved within a defined time window.

See Also

`