
Disney Lorcana TCG Collection
io.github.IcaroBichir由 GitHub 账号 IcaroBichir 发布v2.6.1更新于 Oct 24, 2026
MCP server for Disney Lorcana TCG: enrich collections, search cards, build decks, audit data.
概览
本地 MCP 服务器,让助手获取迪士尼 Lorcana 卡牌数据、补全收藏、分析牌组并构建牌组。
- 可以做什么
- 补全 TCGPlayer 收藏导出文件,加入墨水、费用、数值、关键词与能力,并生成可导入 dreamborn.ink 的文件;可选刷新市场价格,并对照实时数据审计已补全文件中的过时字段。按准确名称查询卡牌,模糊解析口语化或拼错的名称,列出所有版本及其赛制合法性与最低价,并按颜色、类型、稀有度、系列、费用、关键词、能力文本或子类型搜索全部卡池。按赛制合法性筛选收藏,并找出能演唱指定歌曲的角色,可选标记自己是否拥有。分析牌组列表的费用曲线、可上墨比例、颜色构成与 Core Constructed 合法性,并与收藏对比。
- 适用场景
- 适合玩迪士尼 Lorcana 并希望助手把 TCGPlayer 导出变成可用卡牌数据库、回答卡牌与版本问题、检查牌组合法性、估算补齐牌组的花费,或基于自己的卡牌生成起始牌组或现开牌组的人。
- 运行要求
- 以 stdio 在本地运行,无需账号、登录或 API 密钥。需要 Python 及 uv 或 pip 安装 PyPI 包(或使用一键 Claude Desktop 安装包),以及支持 stdio 的客户端,如 Claude Desktop、Claude Code、Cursor、VS Code、Windsurf、Cline 或 Zed;不支持网页客户端。需要访问公开卡牌与价格 API 的网络,失败时回退到内置离线快照。
安装
在 SourceWeft 中
- 打开 控制台中的 Disney Lorcana TCG Collection,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
lorcana-mcp
[Tests] [PyPI] [Python] [License: MIT] [MCP Registry] [mcp.so] [lorcana-mcp MCP server]
MCP server that connects Claude to Disney Lorcana card data. Export your collection from TCGPlayer, hand it to Claude, and get it fully enriched with ink cost, stats, keywords, abilities, and format legality — plus a ready-to-import file for dreamborn.ink.
The simple version
What it does: plug this into Claude and it becomes a Disney Lorcana expert that knows your actual collection — no more tab-switching between TCGPlayer, dreamborn.ink, and a wiki.
Once it's connected, you can just talk to Claude like:
- 🗂️ "Enrich my collection at ~/Downloads/export.csv" — turns a bare TCGPlayer export into a full card database (cost, stats, keywords, abilities) plus a file ready to import into dreamborn.ink
- 🔎 "What's that card, big pete?" — finds cards even if you don't remember the exact name or spelling
- 🎴 "Show me cheap Evasive characters in Amber" — searches the entire card pool by color, cost, keyword, rarity, whatever
- 🎵 "Who can sing Be Our Guest for free?" — finds the best Singer combos for a song
- 📋 "Is this deck legal? 4x Goofy - Musketeer, 4x..." — checks curve, colors, and tournament legality of any deck list
- 💰 "What am I missing to finish this deck, and what would it cost?" — compares a deck list to your collection and prices the gap with live market data
- 🏗️ "Build me a Core Constructed Amber/Sapphire deck" — automatically assembles a legal, curve-balanced decklist from your collection, an ideal build priced to complete, or a full market build
- ✅ "Is my collection data still accurate?" — audits your CSV against live card data and flags anything stale
Everything reads from public card APIs plus your own exported CSV — no account, no login, nothing to configure.
Get it running in under a minute
Claude Desktop — one click: download lorcana-mcp.mcpb and double-click it (or Settings → Extensions → Install extension…). No terminal, no Python install, nothing to configure.
Everything else — one command:
1. Connect it (uvx fetches it on demand — install uv first, or pip install lorcana-mcp and drop the uvx):
Using Claude Desktop config, Cursor, VS Code, Windsurf, Cline, or Zed instead? Every client is covered in docs/INSTALL.md.
2. Talk to it: Export your collection from TCGPlayer (My Account → My Collection → Export), then just say:
"Enrich my collection at /path/to/your/export.csv"
That's it — Claude does the rest. Everything below is reference detail for when you want more control.
Tools
Thirteen tools are available in Claude once the server is running:
Listed on
Install
You don't have to install anything if you use uvx (below) or the Claude Desktop bundle. To install the package explicitly:
From source:
Claude Desktop bundle: lorcana-mcp.mcpb on the releases page — a one-click install that bundles its own runtime. Built from packaging/mcpb/.
Add to your client
lorcana-mcp is a local stdio server — it runs on your machine, no hosting or API key. docs/INSTALL.md is the full guide, with copy-paste config for every client. The short version:
Claude Code (CLI)
Claude Desktop (manual config)
Easiest is the one-click bundle. To wire it up by hand instead, edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\, or Settings → Developer → Edit Config):
Use "command": "lorcana-mcp", "args": ["serve"] if you installed with pip rather than uv. Fully quit and reopen Claude Desktop after saving.
Usage
Once the server is connected, just talk to Claude naturally. No slash commands needed.
Enrich a collection
Export your collection from TCGPlayer → My Collection → Export CSV, then:
"Enrich my collection at /Users/me/Downloads/Lorcana_063026.csv"
Claude will fetch card data from the APIs and write two files next to your input:
enriched_Lorcana_063026.csv— your collection with 10 new columnsdreamborn_Lorcana_063026.csv— ready to import at dreamborn.ink
On re-runs, pass the previous enriched file as a cache to skip already-seen cards:
"Enrich /Users/me/Downloads/Lorcana_new.csv using /Users/me/lorcana/enriched_Lorcana_old.csv as cache"
To refresh prices on demand without re-exporting from TCGPlayer:
"Re-enrich my collection at /Users/me/lorcana/enriched_Lorcana_063026.csv and refresh prices"
refresh_prices=True overwrites each row's TCG Market Price with a live tcgcsv.com lookup for that exact printing — useful when an enriched CSV's prices are stale.
Look up a card
"Look up Mirage - Super Recruiter"
"What are the stats on Alma Madrigal - Heart of the Family?"
"Is Will o' the Wisp legal in Core?"
Returns: ink color, cost, type, subtypes, STR/WIL/Lore, inkable status, keywords, full ability text, format legality, and a card image URL.
Resolve an informal or misspelled card name
"Find the card 'goofy musketeer'"
"What's that card 'big pete'?"
"Look up 'elsa' — not sure which version"
Tokenizes the query and scores it against every card's name and subtitle, tolerating missing dashes, missing subtitles, word order, and minor typos. Returns full detail for a single confident match, a ranked top-3 with confidence scores when several cards are plausible (e.g. a bare name matching every printing of that character), or nothing if the query doesn't resemble any card.
Search the full card pool
"Show me all Evasive characters in Amethyst that cost 3 or less"
"Find Toy characters"
"Search for Rare Steel cards from Wilds Unknown"
Filters: ink color(s), card type (Character / Action / Item / Location / Song), rarity, set name, cost range, keyword, ability text substring, and subtype — all combinable, plus pagination (offset + limit). Results are grouped by ink color and sorted by cost.
Find who can sing a song
"Which characters can sing Be Our Guest?"
"Show me Amber characters that can sing a cost-7 song"
"Who can sing Friends on the Other Side, and which ones do I own?" (pass your enriched collection CSV)
A character can sing a song if its printed cost meets the song's cost outright, or it has a matching Singer X keyword — Singer lets a cheap character punch above its actual cost for singing purposes only. Results split into Singer-keyword "discount" picks (highest Singer value, then cheapest actual cost) and plain cost-qualifiers (cheapest first). Pass collection_csv to flag ownership.
Filter your collection by format
"Which of my cards are legal in Core Constructed?"
"Show me my Infinity-legal cards grouped by ink color"
"What Poorcana-legal cards do I have in Amber?"
Valid formats: core, infinity, core_zh, core_ja, poorcana
Poorcana filtering uses the Rarity column in your enriched CSV (Common + Uncommon only) — no API call needed.
Core/Infinity/regional legality comes from duels.ink, which tracks the current rotation for each region.
Audit an existing enriched file
"Audit my collection at /Users/me/lorcana/enriched_collection.csv"
Useful after a new set releases or if a card's data looks wrong. Compares every non-promo card against live API data and reports field-by-field discrepancies.
Analyze a deck list
"Analyze this deck: 4x Goofy - Musketeer, 4x Elsa - Spirit of Winter, ..." (paste a full list, one card per line)
Accepts 4x Card Name or 4 Card Name; quantity defaults to 1 if omitted. Lines starting with # or // are treated as comments.
Returns: ink curve (1-2/3-4/5-6/7+ cost brackets), inkable vs. uninkable count, color split, card type split, an estimated lore-per-turn (sum of Character lore values), a Core Constructed legality check (60-card minimum, max 4 copies of any card, at most 2 ink colors), and any card names that couldn't be resolved.
Check what a deck list is missing
"What am I missing to build this deck?" (paste the deck list and point me at your collection CSV)
"How much would it cost to finish this Amber/Steel list?"
Same deck list format as analyze_deck. Cross-references against your enriched collection CSV, then splits results into cards you already have enough of and cards you're missing or short on. For cards you're short on (own at least one printing already), the cost comes straight from the CSV's own TCG Market Price column — no network call needed. Only cards you own zero copies of fall back to a live TCGPlayer lookup via tcgcsv.com (cheapest printing across all sets/rarities, since gameplay is identical), and even then only if at least one card actually needs it. Live price data is cached for 24h, so the first call that needs it takes a bit longer while it warms up.
Enriched columns
The enricher adds these 10 columns to the raw TCGPlayer export:
Data sources
Card data is fetched live and cached locally for 24 hours at ~/.cache/lorcana-mcp/. If LorcanaJSON is unreachable, the server falls back to a bundled card snapshot (lorcana_mcp/data/allcards_fallback.json.gz, refreshed each release) and warns once that data may be stale. Manage the cache with the CLI:
Supported sets
New sets are picked up automatically via LorcanaJSON as long as the set name is added to the internal mapping. Open an issue if a new set isn't resolving.
TCGPlayer export format
Go to TCGPlayer → My Account → My Collection → Export. The raw file has columns like Product Name, Set Name, Number, Rarity, Condition, Printing, and Add to Quantity (this is the real owned-quantity column — Total Quantity is always blank in exports).
Promo cards: resolved automatically where possible. dreamborn.ink's bulk import represents a promo as
(Set Number, Card Number)whereSet Numberis the LJ set the promo drop is tied to andCard Numberis the full"N/Series"string (e.g."57/P3") — verified against a real dreamborn export, not just its card-browser display (an earlier attempt based on the display alone silently corrupted imports; see CHANGELOG.md's 0.2.2/0.2.3 entries). Any promo not yet in that map still needs manual entry via dreamborn.ink's card search after importing the rest.
CLI reference
Staying up to date
The card data is always live (fetched from public APIs, cached 24h) — but the
bundled metagame snapshot (get_meta) and any tool/behaviour changes only move
when you update the package:
Claude Desktop .mcpb users: re-download lorcana-mcp.mcpb and reinstall — the bundle pins an exact version and does not auto-update. Restart your MCP client after updating so it reconnects to the new server.
Get told when there's a new release:
- The server checks PyPI about once a day (fail-silent, cached, one request) and, if it's behind, prints a one-line notice to stderr on startup — visible in Claude Code's MCP logs / Claude Desktop's log files — and appends a note to
get_meta's output. Opt out withLORCANA_MCP_NO_UPDATE_CHECK=1in the server'senv. - Or watch the repo: Watch → Custom → Releases, or subscribe to the Atom feed
https://github.com/IcaroBichir/lorcana-mcp/releases.atom.
Development
355 tests, no network calls required. CI runs the full suite on Python 3.11, 3.12, and 3.13 on every pull request and on push to main (see .github/workflows/tests.yml).
License
MIT — see LICENSE.
🤖 CLAUDE READ THIS
If you're an AI agent (Claude or otherwise) with this MCP server connected, read this section before making tool calls. It's the fast path to using this correctly.
Which tool to call
Hard rules
- Always pass absolute paths for
csv_path/input_path/collection_csv. Relative paths resolve against the server process's cwd, not the user's — this fails silently or points at the wrong file. If you don't have an absolute path, ask the user or find the file first. - Default to
resolve_cardoverlookup_cardunless the user gave you a name you're confident is exact and correctly spelled. When in doubt,resolve_cardis strictly more forgiving and costs nothing extra. - Never hand-roll price lookups.
find_song_synergies,what_am_i_missing, andbuild_deckalready call tcgcsv.com internally with 24h caching and cheapest-printing logic. Don'tcurlTCGPlayer or scrape prices yourself. - Gameplay is identical across printings (base, Enchanted, Epic, promo — same name, cost, stats, abilities). Every price-aware tool already picks the cheapest printing automatically; don't second-guess a suspiciously low result, and don't treat rarity as a gameplay signal. Use
list_printingswhen the user needs the per-printing breakdown (which one is legal in a format, which is cheapest, whether it got an Enchanted). - If a user says data looks wrong or stale, suggest
lorcana-mcp cache clearbefore assuming a tool is broken — card and price data is cached 24h. - Ambiguous tool output is a feature, not an error.
resolve_cardandfind_song_synergiescan return a ranked "did you mean" list instead of a single answer — present it to the user rather than guessing which one they meant. build_deckis a curve/keyword-value heuristic, not a synergy engine. It doesn't detect multi-card combos (Merlin/Mim bounce, Steelsong, etc.) — don't present its output as a finished, tournament-tuned decklist. Treat it as a strong starting point to review and adjust, not a final answer.
Known gotchas (found the hard way — see CHANGELOG.md)
Product ID(CSV column 1) ≠TCGplayer Id(column 2). OnlyProduct IDmatches external pricing APIs (LorcanaJSON'sexternalLinks.tcgPlayerId, tcgcsv.com'sproductId). Column 2 is an unrelated secondary ID — if you're ever writing custom code against this data, matching on it silently returns zero results.- Promo cards resolve via
PROMO_DREAMBORN_ROW/PROMO_DREAMBORN_ROW_BY_NUMBER(api.py) — verified against a real dreamborn.ink export, not its card-browser display (an earlier browser-based guess silently corrupted a real import; CHANGELOG.md 0.2.2). A promo's dreambornCard Numberis the full"N/Series"string, not split into a separate series field — don't re-split it if extending this map. Anything not yet in the map still needs manual entry via dreamborn.ink's search after importing. - Duplicate-looking rows in search results are printings, not bugs —
search_cardsandfind_song_synergiesalready deduplicate alt-art/Enchanted reprints by name internally, so don't be surprised the count is lower than you'd expect from a raw card list.
If you're modifying this codebase
- Run
pytestbefore and after any change — 355 tests, all network-free (external calls are mocked;tests/conftest.pyalso disables the PyPI update check). - Code layout: pure/testable logic lives in
api.py(card data + fuzzy matching + pricing),deck.py(deck list parsing/analysis),deckbuilder.py(Constructed deck synthesis),sealed.py(Sealed pool resolution + 40-card builds),enricher.py(CSV pipeline),meta.py+tournaments.py(bundled metagame/tournament snapshot), andupdate_check.py(PyPI version check).server.pyonly wraps those as MCP tools and formats output — keep it that way rather than putting logic directly in tool functions.lorcana_mcp/data/allcards_fallback.json.gzis the offline card-data fallback (refresh withscripts/update_fallback_snapshot.py). - A release bumps the version in four files (
pyproject.toml,server.json,packaging/mcpb/pyproject.toml— both itsversionand thelorcana-mcp==pin — andpackaging/mcpb/manifest.json), adds aCHANGELOG.mdentry, and updates this README +docs/INSTALL.mdif tool behavior changed. Checkgit logfor thechore: release X.Y.Zpattern. - Publishing is a separate, explicit step (
python -m build,twine upload,mcp-publisher publish) — never assume a version bump inpyproject.tomlmeans it's live on PyPI or the registry. Check before telling a user a feature is "available."
来源:README.md,提交 4e8d1db
工具
0版本历史
4- v2.6.1最新Oct 19, 2026
- v2.6.0Oct 14, 2026
- v2.5.0Oct 7, 2026
- v2.4.0Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分