魔术卡牌数据服务

一个基于Scryfall API的魔术卡牌数据服务,提供搜索、获取卡牌详情和随机卡牌功能,适用于游戏分析和AI集成。

  • by colinhauch
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 colinhauch/scryfall-mcp-server

使用说明

Scryfall MCP服务器

一个模型上下文协议(MCP)服务器,用于显示 API公司 魔术:收集卡片数据。部署在Cloudflare Workers上。

快速开始

配置您的AI客户端以连接到已部署的服务器实例,或下载此仓库并在本地运行。

克劳德桌面

要将此MCP服务器与Claude Desktop一起使用,您需要 mcp遥控器 代理。

  1. 打开克劳德桌面设置: 设置>开发人员>编辑配置

  2. 添加此配置:

    {
      "mcpServers": {
        "scryfall": {
          "command": "npx",
          "args": [
            "mcp-remote",
            "https://scryfall-mcp-server.colin-hauch.workers.dev/sse"
          ]
        }
      }
    }
    
  3. 重新启动克劳德桌面

地方发展

{
  "mcpServers": {
    "scryfall": {
      "command": "npx",
      "args": ["mcp-remote", "http://localhost:8787/sse"]
    }
  }
}

Cloudflare AI游乐场

  1. 首选 https://playground.ai.cloudflare.com/
  2. 选择一个模型(mistral-small-3.1-24b-instruct 此处默认选中)
  3. 输入您的MCP服务器URL: https://scryfall-mcp-server.colin-hauch.workers.dev
  4. 开始使用Scryfall工具!

其他MCP客户端

任何兼容MCP的客户端都可以通过以下方式连接到服务器:

  • SSE端点: /sse (推荐给大多数客户)
  • MCP端点: /mcp (适用于支持直接MCP协议的客户端)

特性

  • 搜索卡片:使用Scryfall强大的搜索语法查找魔术卡
  • 获取卡详细信息:通过模糊匹配按名称检索特定卡片
  • 随机卡片:获取具有可选过滤功能的随机卡片
  • 字段选择:精确控制返回哪些卡数据以优化上下文使用

可用的MCP工具

search_cards

使用Scryfall的搜索语法搜索魔术卡。返回当前页面的所有结果(最多175张卡)。

参数:

  • query (字符串,必填):使用Scryfall语法搜索查询
    • 示例: "lightning bolt", "type:creature color:red", "f:commander pow>=5"
  • unique (字符串,可选):省略类似卡片的策略
    • 选项: "cards", "art", "prints"
  • order (字符串,可选):排序顺序
    • 选项: "name", "set", "released", "rarity", "color", "usd", "cmc", "power", "toughness", "edhrec"
  • dir (字符串,可选):排序方向
    • 选项: "auto", "asc", "desc"
  • page (数字,可选):分页页码(从1开始)。用于访问前175个以外的结果。
  • fields (数组或字符串,可选):控制返回哪个卡数据(默认为 "minimal")
    • 预定义组: "minimal", "gameplay", "pricing", "imagery", "full"
    • 自定义数组: ["name", "mana_cost", "prices.usd"]
    • 详见下文“字段选择”章节

例子:

{
  "query": "type:creature power>=5",
  "order": "power",
  "fields": "gameplay"
}

分页示例:

{
  "query": "type:creature",
  "page": 2
}

get_card_details

按确切名称获取一张或多张卡的详细信息。使用Scryfall的收集端点进行高效的批量查找(使用单个API调用,每个请求最多75张卡)。

参数:

  • names (字符串数组,必填):要搜索的确切卡名(可以是单个或多个,最多75个)
  • set (字符串,可选):按设置代码过滤所有卡(例如。, "mkm", "one")
  • fields (数组或字符串,可选):控制返回哪个卡数据(默认为 "gameplay")
    • 预定义组: "minimal", "gameplay", "pricing", "imagery", "full"
    • 自定义数组: ["name", "mana_cost", "prices.usd"]
    • 详见下文“字段选择”章节

注: 此工具使用精确名称匹配。卡名必须完全匹配(不区分大小写)。

示例:

单卡:

{
  "names": ["Black Lotus"],
  "fields": ["name", "mana_cost", "prices", "legalities"]
}

多张卡:

{
  "names": ["Black Lotus", "Mox Ruby", "Ancestral Recall"],
  "fields": "gameplay"
}

get_random_card

随机获得一张魔法卡。

参数:

  • query (字符串,可选):使用Scryfall搜索语法过滤随机选择(例如。, "type:creature")
  • fields (数组或字符串,可选):控制返回哪个卡数据
    • 预定义组: "minimal", "gameplay", "pricing", "imagery", "full"
    • 自定义数组: ["name", "mana_cost", "prices.usd"]
    • 详见下文“字段选择”章节

例子:

{
  "query": "type:legendary",
  "fields": "minimal"
}

字段选择

所有与卡相关的工具都支持可选字段选择,以控制返回哪些数据,帮助您优化AI工作流程中的上下文使用。

预定义字段组

在常见用例中使用这些方便的预设:

  • "minimal" -基本卡信息:名称、mana_cost、type_line、oracle_text
  • "gameplay" -游戏相关数据:最小+颜色、颜色标识、cmc、力量、韧性、忠诚度、稀有性
  • "pricing" -价格信息:名称、价格
  • "imagery" -图像数据:姓名、艺术家、Image_uris、插图_id
  • "full" -所有可用字段(默认情况下 fields 未指定)

自定义字段数组

准确指定您需要的字段:

{
  "name": "Lightning Bolt",
  "fields": ["name", "mana_cost", "oracle_text", "prices.usd"]
}

嵌套字段

使用点符号访问嵌套对象属性:

{
  "query": "format:vintage",
  "fields": ["name", "prices.usd", "prices.eur", "image_uris.normal"]
}

可用字段参考

MCP服务器在以下位置提供资源 scryfall://fields/reference 所有可用字段的完整列表。通过您的MCP客户端访问此页面以查看所有选项。

例子

用于快速查找的最小上下文:

{
  "query": "lightning bolt",
  "fields": "minimal"
}

价格检查:

{
  "names": ["Mox Ruby"],
  "fields": ["name", "set", "prices.usd", "prices.usd_foil"]
}

游戏分析:

{
  "query": "type:creature cmc<=2",
  "fields": "gameplay"
}

MCP资源

服务器为增强功能提供了额外的资源:

scryfall://search-syntax/full

完整的Scryfall搜索语法参考指南,包括所有关键字、运算符和高级过滤器。

scryfall://fields/reference

用于自定义字段选择的可用字段的完整列表,包括示例和使用指南。

速率限制和性能

服务器实施全面的速率限制 Scryfall API指南:

  • 主动限速:请求之间延迟100ms
  • 自动重试:HTTP 429错误的指数回退(1s→ 2s → 4s)
  • 错误处理:带有详细消息的结构化错误响应

许可证

本项目按原样提供,用于投资组合和教育目的。