
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 分