MTG卡牌查询服务

一个基于Scryfall API的Magic: The Gathering卡牌和系列查询服务,专为与大型语言模型(LLM)集成而设计,提供快速、稳定的异步查询功能。

  • by baqqa
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 baqqa/severin

使用说明

✨ Severin:MTG Scryfall MCP工具集

一种紧凑的模型控制协议(MCP)服务,公开Magic:TheGathering卡和集的Scryfall API查找,专为与大型语言模型(LLM)集成而设计。

构建时注重速度、稳定性和原生Python异步性。


🚀 快速亮点

  • Native Async:使用httpx构建,用于纯非阻塞、高性能I/O。
  • Scryfall API:使用现代、可靠和最新的Scryfall-API。
  • MCP就绪:使用MCP.server.fastmcp自动生成LLM使用的工具模式。
  • 稳健搜索:按名称、颜色、类型、集合等提供细粒度搜索。

📦 安装

Severin需要Python 3.8+和以下依赖项:

# Install the necessary libraries
pip install httpx mcp

▶️ 运行服务器

该服务是在工具名称mtg.py下配置的。

为了确保稳定性和可靠的进程间通信,特别是在Windows环境中(标准I/O管道可能不稳定),请使用--stdio端口标志:

# Execute the service using your MCPO runtime
uvx mcpo --stdio-port 8000 -- python .\mtg.py

# Expected Output:
# INFO:       Connected to MCP server 'mtg_scryfall' with 5 tool definitions.
# INFO:       Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

🧾 暴露的工具(MCP架构)

以下函数用@mcp.tool()修饰,并可由LLM调用:

工具名称 描述 关键参数
search_cards 使用Scryfall的高级查询语法进行多字段卡片搜索。 name, colors, type_line, rarity, set_code, oracle_text, limit
get_sets 按代码或名称搜索集合(从完整的Scryfall列表中本地筛选)。 code, name
get_card_types 列出主要卡类型(例如,生物、即时)。 无
get_card_supertypes 列出卡片超类型(例如,传奇、基本)。 无
get_card_subtypes 列出示例卡子类型(例如,人类、光环)。 无

API配置:服务使用SCRYFALL_API_BASE=https://api.scryfall.com并包括Scryfall API政策要求的强制性USER_AGENT=“mtgfinder-mcp/1.0”。


🧪 示例用法(LLM/MCP)

LLM将根据用户请求和可用模式构造工具调用:

用户请求 示例工具调用
“找到Tarmogoyf” mtg_scryfall/search_cards(name="Tarmogoyf", limit=1)
“告诉我Innistrad的设置” mtg_scryfall/get_sets(name="Innistrad")
“寻找一个红色gobelin与颠覆” mtg_scryfall/search_cards(colors="R", type_line="Creature Goblin", oracle_text="trample")

🤝 贡献

  • GitHub上的公开问题和PR
  • 保持更改的重点,包括新工具的测试或示例

📜 许可证

麻省理工学院