About Lorcana MCP
Lorcana MCP is an MCP server published by danielenricocahall in the Search category: mCP server for searching, exploring, and aggregating Disney Lorcana cards.
The repository has 1 stars and 0 forks, with the last commit 10 days ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/danielenricocahall/lorcana-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (10)
aggregate_cardsGroup counts by `cost` (ink curve), `rarity`, `color`, `set_code`, or `type`
Parameters not published.
count_cardsCount cards matching a filter without paying for the card objects
Parameters not published.
deck_statsInk curve, color split, inkable count, type breakdown, keyword counts, subtype counts, and per-card keyword tags
Parameters not published.
export_deckRender a deck back out as a Dreamborn/Pixelborn-compatible text list
Parameters not published.
import_deckParse a Dreamborn/Pixelborn deck list into resolved cards, with fuzzy candidates for unresolved lines
Parameters not published.
resolve_cardFuzzy-match an informal, partial, or misspelled card name to the closest cards
Parameters not published.
search_cardsFilter and retrieve cards by name, color, cost, rarity, type, keyword, stats, set, and body text. Supports `response_format="toon"` for ~10% fewer tokens
Parameters not published.
server_statusStartup metadata (card count, configuration)
Parameters not published.
top_traitsMost common traits (Storyborn, Hero, Villain, Ally, ...) across all cards
Parameters not published.
validate_deckCheck a deck against format rules (≥60 cards, max 4 copies, ≤2 inks, dual-ink requirements); returns `{legal, total_cards, inks, violations}`
Parameters not published.
Ask AI
Ask AI about Lorcana MCP
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
Lorcana MCP Server
An MCP server for searching and aggregating Disney Lorcana cards.
Startup behavior
On startup, the server fetches all cards from lorcanajson.org via a GET request to https://lorcanajson.org/files/current/en/allCards.json.
Cards are kept in-memory as a Python list for fast filtering. With ~2,700 cards this is lightweight and requires no external database. A local JSON file cache (LORCANA_CACHE_PATH, default cards.json) lets the server skip the API fetch on subsequent startups.
Startup data loading is controlled by:
LORCANA_REFRESH_ON_STARTUP:true: always fetch from API and repopulate storagefalse: use existing cache if available
LORCANA_SKIP_IF_DB_EXISTS:true(default): skip API fetch if the cache file already contains cardsfalse: fetch and repopulate
Quick start (no clone required)
The server is published to GHCR and the MCP Registry. Pull and run it directly:
docker pull ghcr.io/danielenricocahall/lorcana-mcp:latest
docker run --rm -i ghcr.io/danielenricocahall/lorcana-mcp:latest
To persist the card cache across container restarts, mount a volume:
docker run --rm -i \
-e LORCANA_CACHE_PATH=/data/cards.json \
-e LORCANA_SKIP_IF_DB_EXISTS=true \
-v lorcana_mcp_data:/data \
ghcr.io/danielenricocahall/lorcana-mcp:latest
Run locally (stdio MCP)
uv run python main.py
Docker
Build image
docker build -t lorcana-mcp:latest .
Run as stdio MCP server
docker run --rm -i lorcana-mcp:latest
Docker Compose
Start with compose
docker compose build
docker compose run --rm -T lorcana-mcp
Notes:
- No port is exposed; MCP communication is over stdio.
- Use a volume to persist the JSON cache across restarts.
Config
LORCANA_API(default:https://lorcanajson.org/files/current/en/allCards.json)LORCANA_CACHE_PATH(default:cards.json) — local file for caching fetched cardsLORCANA_HTTP_TIMEOUT_SECONDS(default:60)LORCANA_REFRESH_ON_STARTUP(falsedefault)LORCANA_SKIP_IF_DB_EXISTS(truedefault)
MCP client setup examples
Local process (Claude Desktop-style)
{
"mcpServers": {
"lorcana": {
"command": "uv",
"args": ["run", "python", "/absolute/path/to/lorcana-mcp/main.py"]
}
}
}
Published image — GHCR (Claude Desktop-style, no clone required)
{
"mcpServers": {
"lorcana": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/danielenricocahall/lorcana-mcp:latest"
]
}
}
}
Docker process (Claude Desktop-style, locally built)
{
"mcpServers": {
"lorcana": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"lorcana-mcp:latest"
]
}
}
}
Docker Compose process (Claude Desktop-style)
{
"mcpServers": {
"lorcana": {
"command": "docker",
"args": ["compose", "run", "--rm", "-T", "lorcana-mcp"]
}
}
}
Via the Claude CLI — published image (global, no clone required)
claude mcp add --scope user \
-- lorcana docker run --rm -i \
ghcr.io/danielenricocahall/lorcana-mcp:latest
Via the Claude CLI — locally built
claude mcp add --scope user \
-- lorcana docker run --rm -i lorcana-mcp:latest
Example questions
Once connected to an MCP client, you can ask natural language questions like:
Card lookup
- "Show me all cards named Moana"
- "What does the card Maui - Hero to All do?"
- "Find all legendary amber cards"
Deck building
- "What are the cheapest ruby characters with at least 3 strength?"
- "Show me inkable sapphire cards that cost 4 or less"
- "Find steel characters with 5 or more willpower"
- "What 3-lore characters exist in emerald?"
Keyword & ability search
- "How many Singer cards cost exactly 5?"
- "How many Evasive characters are there in the first set?"
- "How many ruby cards have Reckless?"
- "Find all cards with Ward in their text"
- "Show me Shift cards in amethyst"
Stats & aggregations
- "How many cards are in each set?"
- "What's the color distribution across all cards?"
- "What are the most common traits?"
- "Show me the ink curve — how many cards exist at each cost?"
- "How many legendary cards are inkable?"
Cross-filter queries
- "How many amber characters have 3 or more lore?"
- "Find cheap (cost 2-3) characters with high strength (4+) in steel"
- "How many cards in set 1 have Evasive and cost less than 4?"
Note: Keyword searches like
Evasive,Singer 5, orRecklessmatch against thefull_textfield and work reliably since keywords appear verbatim in card text.
MCP tools
search_cards— filter and retrieve card objectscount_cards— count cards matching a filter without returning full objectsget_card_by_id— fetch a single card by its IDaggregate_cards— count cards grouped by any fieldink_curve_stats— card counts by ink costtop_traits— most common traits across all cardscolor_distribution— card count per colorrarity_breakdown— card count per rarityset_distribution— card count per setserver_status— startup metadata (card count, config)
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.