Token导航 LogoToken导航TokenDH.com
Mtg Prices Au logo
运维云端stdio官方级别未说明来源级核验

Mtg Prices Au

MCP Server

用于快速查询澳大利亚Magic: The Gathering卡牌零售价格的MCP服务器,帮助用户评估拍卖或市场列表中的价格是否合理。

工具数

1

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude云端部署Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

findingsimple

提供方

findingsimple

最后核验

2026/5/17 20:23

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run pytest -v

详细介绍

mtg价格au

MCP服务器用于查找澳大利亚魔术:收集卡零售价格。检查 MTG日期澳大利亚卡中心 同时。

用例

快速评估Facebook拍卖或市场上的价格是否物有所值:

  1. 查看列表: *“MH1 NM的否定力——65澳元”*
  2. 问克劳德: *“65美元是否定力MH1的好价格吗?”*
  3. 克劳德打电话来 get_au_price 适用于MTGMate+卡中心的澳大利亚零售
  4. 克劳德给出了一个结论:好交易/公平/定价过高vs零售

注: 此工具用于个人非商业用途。它为个人卡查找抓取公开列出的零售价格——它不是为批量数据收集或商业价格聚合而设计的。

设置

需要Python 3.11+和 紫外线.

uv sync

使用克劳德代码注册

claude mcp add mtg-prices-au --scope user -- /bin/bash -c "cd /path/to/mtg-prices-au && .venv/bin/python -m src.server"

替换 /path/to/mtg-prices-au 以及此存储库的实际路径。

这将在中生成以下条目 ~/.claude.json:

{
  "mcpServers": {
    "mtg-prices-au": {
      "command": "/bin/bash",
      "args": ["-c", "cd /path/to/mtg-prices-au && .venv/bin/python -m src.server"],
      "type": "stdio"
    }
  }
}
注:cd && 使用包装器代替 cwd 字段,因为VS代码扩展名 忽略 cwd,当多个MCP服务器共享同一个MCP服务器时,会导致模块路径冲突 -m src.server 入口点。

工具: get_au_price

参数类型必填说明
card_namestringYes卡片名称(例如“否定力”)
set_codestring设置要筛选的代码(例如“MH1”)

返回两个商店的澳元定价、库存水平和所有可用打印件。当 set_code 省略,返回所有打印结果,并突出显示每家商店最便宜的库存选项。如果一个存储失败,另一个存储的结果仍然会返回。

拆分和双面卡名(例如“磨损”)会自动处理——正面名称用于查找。

结果将缓存5分钟(如果一个源失败,则缓存1分钟)。缓存的响应包括 "cached": true"lookup_time_ms": 0.

示例响应

{
  "card_name": "Force of Negation",
  "lookup_time_ms": 950,
  "mtgmate": {
    "url": "https://www.mtgmate.com.au/cards/Force_of_Negation",
    "cheapest_in_stock": {
      "name": "Force of Negation",
      "set_name": "Modern Horizons",
      "set_code": "MH1",
      "collector_number": "52",
      "price_aud": 87.0,
      "stock": 4,
      "url": "https://www.mtgmate.com.au/cards/Force_of_Negation/MH1/52",
      "finish": "Nonfoil"
    },
    "all_printings": [...]
  },
  "cardhub": {
    "url": "https://thecardhubaustralia.com.au/search?type=product&q=Force%20of%20Negation",
    "cheapest_in_stock": {
      "name": "Force of Negation",
      "set_name": "Modern Horizons",
      "set_code": "MH1",
      "collector_number": "52",
      "price_aud": 80.01,
      "available": true,
      "url": "https://thecardhubaustralia.com.au/products/force-of-negation-52-modern-horizons",
      "finish": "Nonfoil",
      "condition": "Near Mint"
    },
    "all_printings": [...]
  }
}

发展

# Run tests
uv run pytest -v

# Run a single test
uv run pytest tests/test_mtgmate.py::TestFetchCardPrices::test_cheapest_in_stock_selected -v

# Run the server directly (stdio)
uv run python -m src.server

运作原理

MTG日期

MTGMate将所有卡定价数据以JSON格式嵌入React组件中(FilterableTable)在每张卡的列表页面上。服务器提取这种结构化数据,而不是抓取渲染的HTML,这既更可靠,又能在一个请求中为我们提供价格、库存计数、集合信息和完成类型。

关键细节:

  • React JSON的价格如下 (例如。 8700 =87.00澳元)
  • 始终使用所有打印列表页面(/cards/Card_Name)--特定打印页面的JSON-LD定价已过时
  • 需要一个Firefox用户代理标头(MTGMate对默认Python请求返回403)
  • HTTP通过 urllib.request (stdlib),通过正则表达式提取的React props(不需要HTML解析库)
  • React JSON中包含缺货打印( stock: 0)然后回来了 all_printings

澳大利亚卡中心

Card Hub是一家Shopify商店。服务器使用两个Shopify JSON端点,不需要HTML解析:

  1. 搜索建议API (/search/suggest.json)--发现与卡名匹配的产品(最多10个结果)
  2. 产品JSON (/products/{handle}.js)--获取每种产品的变体定价

关键细节:

  • 产品JSON中的价格 (例如。 8422 =84.22澳元)
  • 每种产品都有不同的状态(接近薄荷色,轻微演奏)x表面处理(无箔、箔)
  • 从Shopify产品标签中提取设置代码(例如。 "MH1", "2X2")
  • 可用性是布尔值(无库存计数)
  • 产品提取同时运行(最多2名工人通过 ThreadPoolExecutor)
  • 仅限Stdlib(urllib, json)--没有其他依赖关系

已知限制

  • Card Hub建议API上限为10个结果。 具有许多打印的卡(例如基本焊盘、Sol Ring)可能会返回不完整的卡中心数据。当达到此限制时,服务器会记录。
  • Card Hub可以提取多种产品。 每次打印都需要单独的 .js 端点获取。这些并行运行(一次2个),但一张打印次数多的卡仍然比MTGMate的单请求方法花费更长的时间。结果将缓存5分钟,以避免冗余请求。
  • 集合代码提取是启发式的。 Card Hub集合代码是从Shopify产品标签(大写字母数字字符串)推断出来的。这工作可靠,但如果Card Hub添加新的大写短标签,则可能会误判标签。

废钞

我们通过艰难的方式学到的东西——如果刮刀坏了,这很有用。

MTG日期

  • 该网站不是服务器呈现的。 MTGMate是一个Rails+React应用程序。卡数据存在于 data-react-props JSON属性 FilterableTable div,不在渲染的HTML中。如果抓取中断,请检查此组件是否已重命名或替换为客户端API获取。
  • 两种页面类型,不同的数据。 列表页面(/cards/Card_Name)有React道具和当前价格。具体打印页(/cards/Card_Name/SET/num)JSON-LD定价可能过时(观察到同一张卡的JSON-LD价格为83美元,而实际价格为87美元)。始终使用列表页面。
  • 设置筛选的URL不存在。 /cards/Card_Name/SET (没有收集器编号)返回404。获取完整列表后,在客户端按设置代码过滤。
  • 需要用户代理。 MTGMate将HTTP 403返回为默认的Python/cill用户代理字符串。Firefox UA标头绕过了这一点。无需Cloudflare,无需JS渲染,无需Cookie。
  • 价格以美分为单位。 React JSON将价格存储为以美分为单位的整数(例如。 8700 = $87.00).特定打印页面上的JSON-LD将它们存储为十进制字符串(例如。 "83.00").

澳大利亚卡中心

  • 这是一家Shopify商店。/search/suggest.json/products/{handle}.js 端点是标准的Shopify。如果Card Hub从Shopify迁移出去,刮刀将完全断裂。
  • 产品标题对卡片元数据进行编码。 格式 "Card Name (collector#) [Set Name]" 是一致的,但不能保证。如果标题与预期模式不匹配,解析器会优雅地回退(返回没有设置元数据的卡片名称)。
  • 标签包含设置的代码。 Shopify标签如 ["MH1", "Modern Horizons", "R", ...] 是设定代码的来源。标签排序无法保证,因此提取器会获取第一个2-5个字符的大写字母数字标签,该标签不是已知的非集合代码(条件等级、常见缩写)。
  • 跳过零价格变体。 Card Hub使用价格=0作为“未定价”的标志,而不是“免费”。

目录标签

目录标签

PythonClaude云端部署卡牌价格查询本地部署MTG工具价格比较个人使用非商业工具

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

session

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiosession部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP