Skip to main content
Glama
getsec

edhrec-mcp

by getsec

edhrec-mcp

An MCP server for Magic: The Gathering, focused on Commander (EDH). It exposes authoritative card data from Scryfall and community deckbuilding suggestions from EDHREC.

Tools

  • get_card(name) — card details: oracle text, mana cost, type, color identity, Commander legality, USD price, image.

  • search_cards(query, limit=20) — Scryfall query-syntax search.

  • get_commander_recommendations(commander, theme=None, budget=None) — EDHREC recommended cards (top, high-synergy, game changers, by type) with stats.

  • list_commander_themes(commander) — available themes/archetypes with counts.

  • get_average_decklist(commander, theme=None, budget=None) — the typical ~99 cards.

theme is a slug from list_commander_themes (e.g. infect). budget is budget or expensive.

Related MCP server: Scryfall MCP Server

Install

Uses uv for environment and dependency management.

uv sync

This creates .venv/ and installs the project from the locked dependencies.

Without uv, you can use a standard virtualenv instead:

python3 -m venv .venv && .venv/bin/pip install -e .

Run

uv run edhrec-mcp

Register with Claude Code

claude mcp add edhrec -- uv run --directory /absolute/path/to/edhrec-mcp edhrec-mcp

Or add to an MCP client config:

{
  "mcpServers": {
    "edhrec": {
      "command": "uv",
      "args": ["run", "--directory", "/absolute/path/to/edhrec-mcp", "edhrec-mcp"]
    }
  }
}

Data & caching

Responses are cached under ~/.cache/edhrec-mcp/ (override with EDHREC_MCP_CACHE_DIR): EDHREC pages 24h, Scryfall cards 12h. Prices may therefore be up to 12h stale. EDHREC has no official API; this server reads its public JSON endpoints politely (identifying User-Agent, throttled requests).

Development

uv sync --extra dev          # install runtime + dev dependencies
uv run pytest                # unit tests (no network)
uv run pytest -m network     # live integration tests

Available Tools

5 tools
get_average_decklistB

The typical ~99-card EDHREC decklist for a Commander.

Optional theme (theme slug) and budget ('budget'/'expensive') narrow it.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNo
budgetNo
commanderYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description should disclose behavioral traits. It mentions it's a decklist but doesn't describe the return format, error handling, or whether it's purely read-only. The brief description lacks sufficient behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, no redundancy. It could be slightly more structured but is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 3 parameters, the description is too minimal. It doesn't clarify that commander is required, what the decklist contains (card names, quantities?), or any edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description adds value by explaining that theme is a slug and budget is 'budget' or 'expensive'. However, the required commander parameter has no elaboration beyond its name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the typical 99-card EDHREC decklist for a Commander, distinguishing it from sibling tools like get_card or search_cards.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: when you need the average decklist for a commander. No explicit guidance on when not to use or alternatives like get_commander_recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cardA

Look up a Magic card by name (exact, falling back to fuzzy match).

Returns oracle text, mana cost, type line, color identity, Commander legality, USD price, image URL and set.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description lists all returned fields (oracle text, mana cost, etc.) and mentions fuzzy fallback. This adds behavioral context beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loading the purpose and then listing key return information. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, matching, and return fields adequately for a simple look-up tool. Could mention error handling or multiple matches, but not necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains that the 'name' parameter supports exact and fuzzy matching, adding meaning beyond the schema's simple string type. However, no other parameter details needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'look up' and the resource 'card', with details on matching behavior (exact then fuzzy). It distinguishes from sibling tools like search_cards.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives (e.g., search_cards). The matching logic is implied, but usage context is not provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_commander_recommendationsA

EDHREC card recommendations for a Commander.

Optional theme is a theme slug from list_commander_themes (e.g. 'infect'). Optional budget is 'budget' or 'expensive'. Returns card lists (top cards, high-synergy cards, game changers, by type) with synergy and inclusion stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNo
budgetNo
commanderYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It does not mention that the tool is read-only, any authentication requirements, or error handling for missing commanders. Basic purpose is given but safety and side effects are omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with the main purpose in the first sentence and parameter details following. It is front-loaded and avoids unnecessary words, though could be slightly more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately describes the return format (card lists with synergy and inclusion stats). It covers the three parameters and their roles. Minor gaps include not specifying data format or potential errors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds meaning for 'theme' (links to list_commander_themes) and 'budget' (enum values). However, 'commander' parameter lacks additional explanation despite being required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns EDHREC card recommendations for a Commander, distinguishing it from sibling tools for searching cards or getting decklists. It specifies the output includes card lists with synergy and inclusion stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains optional parameters and how to obtain theme slugs from list_commander_themes, but does not explicitly guide when to use this tool versus alternatives like get_average_decklist or get_card.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_commander_themesA

List EDHREC themes/archetypes available for a Commander, with deck counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
commanderYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It states the tool lists information, implying a read-only operation, but does not explicitly mention that it is non-destructive or any other behavioral traits like rate limits or authorization needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-formed sentence that conveys the core purpose. No unnecessary words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one parameter and no output schema, the description covers the input and output format (themes with deck counts). However, it lacks details about response structure, pagination, or any constraints, which would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'commander' has no schema description (0% coverage). The description adds value by clarifying it is 'a Commander' from EDHREC, connecting the parameter to the tool's purpose beyond the minimal schema title.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List'), identifies the resource ('EDHREC themes/archetypes'), and adds context ('available for a Commander, with deck counts'). It clearly distinguishes from sibling tools like get_commander_recommendations by focusing on themes rather than recommendations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While no explicit 'when-to-use' or 'when-not-to-use' is stated, the purpose is clear enough from the name and context. The sibling tools list suggests this is the only tool for listing themes, so usage guidelines are implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_cardsC

Search for Magic cards using Scryfall query syntax.

Example queries: 't:dragon c:r cmc<=4', 'o:"draw a card" t:instant'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits such as rate limits, pagination, ordering, or empty result behavior. For a search tool, more transparency is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences and example queries. Every part is useful, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no annotations, and 0% schema coverage, the description lacks completeness. It does not describe return values, pagination, or error behavior, leaving agents underinformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning for the 'query' parameter via Scryfall syntax and examples, but does not explain the 'limit' parameter, leaving a gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches for Magic cards using Scryfall query syntax. While it distinguishes from sibling tools like get_card by verb choice, it does not explicitly differentiate them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like get_card or list_commander_themes. The description only shows example queries but not context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv0.1.0
    • First observedget_average_decklist
    • First observedget_card
    • First observedget_commander_recommendations
    • First observedlist_commander_themes
    • First observedsearch_cards

TDQS

A3.8/5.0
Disambiguation5/5

Each tool has a distinct purpose: decklist retrieval, card lookup, recommendations, theme listing, and card search. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., get_average_decklist, list_commander_themes). Verbs like get, list, search are clear and predictable.

Tool Count5/5

5 tools is well-scoped for the EDHREC domain, covering core operations without being overly extensive or sparse.

Completeness5/5

The tool set covers essential EDHREC operations: decklist retrieval, card info, commander recommendations, theme listing, and card search. No obvious gaps that would hinder agent workflows.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP 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.
    45
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Unified 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.
    MIT

Latest Blog Posts

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/getsec/mtg-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server