Skip to main content
Glama

Drag Race MCP 👑

一个非官方的、由社区驱动的 Drag Race 知识 MCP(模型上下文协议)服务器。

drag-race-mcp 通过 MCP 工具为 AI 助手提供对皇后、赛季、剧集和粉丝传说的结构化访问。

免责声明

这是一个非官方粉丝项目与 RuPaul、World of Wonder 或 Drag Race 系列无关,也未获得其认可或赞助


作为 MCP 客户端使用

本包是一个 stdio MCP 服务器。您的客户端将其作为子进程启动,并通过 stdin/stdout 进行 JSON-RPC 通信——请勿自行启动服务器。

启动命令(任选其一):

方式

命令 / 参数

已发布包

npx@tkalejandro/drag-race-mcp

本地克隆(已构建)

nodedist/index.js(先运行 pnpm build

本地克隆(开发)

pnpmexec tsx src/index.ts(在仓库根目录)

像 Cursor 这样的宿主可以在 MCP 配置中配置相同的命令(参见 使用 Cursor 进行本地测试)。以下是编程式客户端的最小示例。

TypeScript

npm install @modelcontextprotocol/client
import { Client } from "@modelcontextprotocol/client";
import { StdioClientTransport } from "@modelcontextprotocol/client/stdio";

const client = new Client({ name: "drag-race-client", version: "1.0.0" });

const transport = new StdioClientTransport({
  command: "npx",
  args: ["-y", "@tkalejandro/drag-race-mcp"],
  // Local clone instead:
  // command: "node",
  // args: ["dist/index.js"],
  // cwd: "/path/to/drag-race-mcp",
});

await client.connect(transport);

const { tools } = await client.listTools();
console.log(tools.map((t) => t.name));

const result = await client.callTool({
  name: "search_queens",
  arguments: { query: "jinkx", limit: 5 },
});

for (const block of result.content) {
  if (block.type === "text") console.log(block.text);
}

await client.close();

Python

pip install mcp
# or: uv add mcp
import asyncio

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client


async def main() -> None:
    server = StdioServerParameters(
        command="npx",
        args=["-y", "@tkalejandro/drag-race-mcp"],
        # Local clone instead:
        # command="node",
        # args=["dist/index.js"],
        # cwd="/path/to/drag-race-mcp",
    )

    async with stdio_client(server) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            tools = await session.list_tools()
            print([t.name for t in tools.tools])

            result = await session.call_tool(
                "search_queens",
                arguments={"query": "jinkx", "limit": 5},
            )
            for block in result.content:
                if block.type == "text":
                    print(block.text)


asyncio.run(main())

工具名称和参数与 MCP 工具 中的表格一致(例如 get_queenget_seasonget_queen_earnings)。


Related MCP server: Pokemon MCP Server

功能

已就绪

  • 类型化知识模型(赛季、皇后、剧集、传说)

  • JSON 知识库 + Zod 验证 + 完整性检查

  • 核心 MCP 读取工具(列表 / 搜索 / 获取赛季、皇后、剧集、传说)

  • 适合 Cursor 的本地 MCP 配置 + 工作流文档

即将推出

  • 皇后比较、推荐、更丰富的统计

  • 更广泛的系列覆盖;后续可选 RAG


示例问题

  • 谁是 Porkchop 皇后?

  • 哪些皇后同时参加了第 5 季和全明星赛?

  • 比较 Jinkx Monsoon 和 Bianca Del Rio。

  • 哪些皇后拥有最多的挑战胜利?

  • 推荐一个喜剧元素丰富的赛季。

  • 解释 Alyssa Edwards 和 Coco Montrese 之间的竞争。


数据模型(供代理和贡献者使用)

ID 和目录位于 src/kb/catalogs.ts;实体形状是 src/kb/schemas/ 中的 Zod 模式(类型通过 z.infer 获得)。设计目的是让模型能够浏览事实,而无需在重复的散文上消耗 token。

硬事实

类型

位置

存储内容

Season

kb/schemas/season.ts

系列赛季元数据、演员 ID、获胜者、奖金、主持人/评委

Queen

kb/schemas/queen.ts

变装名、别名、每季出场和胜利

Episode

kb/schemas/episode.ts

每周挑战、T 台、对口型、淘汰

Money

kb/schemas/money.ts

奖金记录:{ amount, currency, context, isSponsor?, isCharity? } — 赛季 cashPrice、剧集迷你/主挑战/对口型 earnings,并在皇后胜利中镜像。对于非现金赞助奖品,使用 amount: 0 + context;对于慈善奖金,使用 isCharity

PersonRef

kb/schemas/person.ts

主持人/评委 { name, queenId? }

SeasonId / Currency / LoreTag

kb/catalogs.ts

封闭目录 + 字符串 ID 别名

这些是排名、胜利、演员名单和剧集结果的事实来源

ID 保持 token 精简

在可能的情况下,我们通过稳定 ID 进行链接,而不是完整的嵌套对象:

ID

示例

说明

SeasonId

US-S17AS-S10CVTW-S02

已知赛季的封闭枚举

EpisodeId

US-S17-E05

{SeasonId}-E{NN}

QueenId

jinkx-monsoon

短横线分隔的 slug(开放集合;稍后从数据验证)

LoreId

alyssa-coco-rivalry

短横线分隔的 slug

为什么使用 ID?

  • 工具响应中的有效负载更小(传递 castIds,仅在需要时展开)

  • 更安全的 LLM 贡献(引用 US-S06 而不是重写赛季文本)

  • 易于连接:赛季 → 皇后 ID → 查找皇后;皇后胜利 → episodeId → 查找剧集

赛季存储 castIdsepisodeIds。皇后存储指向 episodeId 的出场统计。工具(以及后续的 list_queen_ids)帮助模型发现有效 ID,而不是凭空捏造。

传说扩展模型的能力

硬事实回答发生了什么传说回答为什么重要以及事物如何关联

Lore {
  id, title, summary, tags,
  queenIds?, seasonIds?, episodeIds?
}

添加传说条目来教授竞争、标志性时刻、喜剧赛季、变装家族、争议等——带有标签(rivalrydramacomedyiconic、……)并通过 ID 链接回事实目录。

LLM / 人类的贡献循环:

  1. 链接时优先使用现有 ID

  2. 当某些内容缺失或错误时,添加或修正硬事实记录

  3. 当需要叙事、关联或粉丝背景时,添加传说

这就是知识库在不重复完整皇后/赛季数据块的情况下增长的方式。


数据覆盖

跟踪每个 SeasonId 存在哪些数据。当该部分在知识库中时,将 翻转为

含义

赛季

赛季记录(元数据、演员 ID、获胜者、奖金、主持人/评委)

皇后

演员的皇后记录(出场、胜利)

剧集

赛季的剧集记录

传说

至少有一条传说条目链接到该赛季

一切从空开始——这是贡献地图。选择任何 并填充它。

挑战奖金(Money 覆盖)

剧集 ✅ 表示存在剧集记录——并非每个迷你/主挑战奖金都已填写。每周奖金位于挑战和对口型上的可选 earningsMoney)中;皇后的 challengeWins / miniChallengeWins / lipSyncWins 镜像这些金额。赛季大奖使用 cashPrice(每个赛季必填)。

  • 来源优先: 当公开来源未列出奖金时,省略 earnings(许多英国 RuPeter 周没有现金条目)。

  • 职业生涯总计: 使用 MCP 工具 get_queen_earnings(个人现金 vs 慈善 vs 非现金 context 奖金)。

目前大约 70 / 82 个赛季包至少有一些每周 earnings

尚无每周 earnings(12 个) — 如果 Fandom 或剧集来源列出了 Wikipedia 遗漏的奖金,这些是很好的贡献目标:

AS-S01CVTW-S01CVTW-S02ES-S05UK-S02UK-S03UK-S04UK-S05UK-S07UKVTW-S01UKVTW-S02UKVTW-S03

薄弱 / 不完整(模式):

  • 早期美国季的迷你挑战通常只有优势(US-S01S08:主挑战大多已填写;迷你挑战稀疏)

  • 英国 / UKVTW / CVTW 通常稀疏(徽章或未记录的每周现金)

  • 一些全明星小费/主挑战仍有空缺(例如 AS-S04 小费;AS-S07 / AS-S09 主挑战)

  • 几个国际包在主挑战迷你挑战上很强,但并非两者(例如法国迷你挑战为空;巴西 / 墨西哥 / 泰国部分)

不要在下方的系列表中添加奖金列——请在此处跟踪奖金深度。

美国 — RuPaul's Drag Race

SeasonId

Season

Queens

Episodes

Lore

US-S01

US-S02

US-S03

US-S04

US-S05

US-S06

US-S07

US-S08

US-S09

US-S10

US-S11

US-S12

US-S13

US-S14

US-S15

US-S16

US-S17

US-S18

AS — 全明星

SeasonId

Season

Queens

Episodes

Lore

AS-S01

AS-S02

AS-S03

AS-S04

AS-S05

AS-S06

AS-S07

AS-S08

AS-S09

AS-S10

AS-S11

英国

SeasonId

Season

Queens

Episodes

Lore

UK-S01

UK-S02

UK-S03

UK-S04

UK-S05

UK-S06

UK-S07

UKVTW-S01

UKVTW-S02

UKVTW-S03

加拿大

SeasonId

Season

Queens

Episodes

Lore

CA-S01

CA-S02

CA-S03

CA-S04

CA-S05

CA-S06

CVTW-S01

CVTW-S02

CAS-S01

欧洲

SeasonId

季度

皇后

集数

背景故事

ES-S01

ES-S02

ES-S03

ES-S04

ES-S05

ESAS-S01

ESAS-S02

FR-S01

FR-S02

FR-S03

FR-S04

IT-S01

IT-S02

IT-S03

DE-S01

NL-S01

NL-S02

BE-S01

BE-S02

SE-S01

拉丁美洲

SeasonId

季度

皇后

集数

背景故事

MX-S01

MX-S02

MX-S03

MXLR-S01

BR-S01

BR-S02

亚太及全球

SeasonId

季度

皇后

集数

背景故事

TH-S01

TH-S02

TH-S03

PH-S01

PH-S02

PH-S03

PH-S04

PHSR-S01

GAS-S01

DU-S01

DU-S02

DU-S03

DU-S04

DUVTW-S01


项目结构

├── src/
│   ├── index.ts              # MCP entry (stdio)
│   ├── server.ts             # Server + tool registration
│   ├── data/                 # JSON only (no TypeScript)
│   │   ├── queens/           # One JSON file per QueenId
│   │   └── seasons/
│   │       └── US-S01/ … US-S07/, AS-S01/, AS-S02/
│   │           ├── season.json
│   │           ├── episodes.json
│   │           └── lore.json
│   ├── kb/                   # Data layer: catalogs, Zod, load, integrity
│   │   ├── catalogs.ts
│   │   ├── schemas/
│   │   ├── load.ts
│   │   ├── integrity.ts
│   │   └── index.ts
│   ├── services/             # Utilities tools call (not MCP)
│   │   ├── accessors/        # accessors.ts → get* / list*Ids
│   │   ├── seasons/          # list_season_ids.ts
│   │   ├── queens/           # search_queens.ts, list_queen_ids_for_season.ts
│   │   ├── lore/             # search_lore.ts
│   │   └── shared/           # limits.ts
│   └── tools/                # MCP registerTool wrappers only
│       ├── general/          # welcome_user.ts
│       ├── seasons/          # list_season_ids.ts, get_season.ts
│       ├── queens/           # list_queen_ids.ts, search_queens.ts, get_queen.ts, get_queen_earnings.ts
│       ├── episodes/         # get_episode.ts
│       └── lore/             # get_lore.ts, search_lore.ts
│
├── .cursor/
│   ├── mcp.json              # Local Cursor MCP config ADD WHEN YOU NEED IT.
│   └── skills/
│       ├── drag-race-data/   # How to contribute season/queen JSON
│       └── typescript-style/ # Arrow-const functions + TS conventions
│
├── package.json
├── tsconfig.json
└── README.md

JSON 事实数据位于 src/data/ 下(皇后为全局;季度为 src/data/seasons/<SeasonId>/)。src/kb/ 层通过 Zod + Maps 验证并索引它们。使用 Agent 贡献时请参阅 .cursor/skills/drag-race-data/

验证数据

src/data/ 下添加或编辑任何内容后,运行:

pnpm test

这会通过 Zod 加载每个 JSON 文件,拒绝错误字段和重复 ID,并显示文件 + 字段路径的失败信息。git commit 通过 Husky 预提交钩子运行相同的检查——但在编辑时仍应自行运行测试,以便在提交前发现问题。全新克隆后,运行一次 pnpm install,以便 Husky 安装钩子。


在 Cursor 中本地测试

这就是 Agent 聊天(如此类聊天)如何查看并调用 drag-race-mcp 中的工具。

1. 安装并运行前置条件

pnpm install

不需要自己保持终端进程运行。Cursor 使用 .cursor/mcp.json 启动 MCP 服务器。

2. 项目 MCP 配置

此仓库已包含 .cursor/mcp.json

{
  "mcpServers": {
    "drag-race-mcp": {
      "command": "pnpm",
      "args": [
        "--dir",
        "/ABS/PATH/TO/drag-race-mcp",
        "exec",
        "tsx",
        "src/index.ts"
      ]
    }
  }
}

如果不同,请将 --dir 路径更新为机器上的克隆路径。

当工作区打开时,Cursor 会从 .cursor/mcp.json 加载项目 MCP 配置。如果你愿意,也可以在 Cursor 设置 → MCP(用户级)下添加同一服务器。

3. 启用/刷新服务器

  1. 打开 Cursor 设置 → MCP

  2. 找到 drag-race-mcp

  3. 确认它已连接(无错误状态)。如果你更改了代码或配置,请使用刷新/重启

  4. 在此工作区中打开新的 Agent 聊天,以便它获取工具列表

4. 冒烟测试工具

向 Agent 询问类似内容:

使用我的名字调用 welcome_user 工具。

如果 MCP 连接正确,Agent 将调用 welcome_user 并从此服务器返回欢迎字符串。

这与开发中使用的路径相同:Cursor 通过 MCP 发现服务器的工具,然后模型可以调用它们(列出工具 → 选择一个 → 使用参数运行 → 读取结果)。

5. 添加工具之后

  1. 在服务器上注册工具(参见 src/tools/general/welcome_user.ts

  2. 在 Cursor 中重启/刷新 MCP 服务器

  3. 启动新的 Agent 聊天

  4. 让 Agent 按名称使用新工具,或描述任务并让它选择工具

提示

  • 工具的 description 和 Zod .describe(...) 文本是模型读取的内容——请保持清晰

  • 如果工具未显示:检查 MCP 错误日志、mcp.json 中的路径,以及 pnpm exec tsx src/index.ts 是否能在终端中干净运行

  • MCP 重启后最好使用新聊天,以便工具目录是最新的


MCP 工具

工具

描述

welcome_user

冒烟测试/问候

list_season_ids

列出已加载的季度;可选 regionusukcanadaeuropelatam_brasia_pacificspecials

get_season

季度记录 + 关联 ID

list_queen_ids

列出某个 seasonId(必填)的皇后 ID

search_queens

按姓名/别名搜索皇后(默认限制 20,最大 50)

get_queen

完整皇后记录

get_queen_earnings

职业生涯奖金明细(现金、慈善、非现金)

get_episode

剧集详情

get_lore

按 ID 获取背景故事条目

search_lore

按查询、标签、皇后和/或季度搜索背景故事

计划中(v2+): compare_queensrecommend_season、统计聚合。


路线图

v1

  • 稳定的 TypeScript 接口(ID + 硬事实 + 背景故事)

  • JSON 数据 + Zod 模式

  • 核心读取工具(皇后/季度/剧集/背景故事)

  • 记录本地 Cursor 工作流程

v2

  • 更丰富的搜索与统计

  • 推荐

  • 数据中更广泛的系列覆盖

v3

  • 语义搜索(RAG)

  • 社区评分/更丰富的元数据


贡献

欢迎贡献——尤其是填补 数据覆盖 中的空白:

  • 修正错误的硬事实

  • 添加缺失的皇后/季度/剧集(使用 ID 约定)

  • 添加关联现有 ID 的背景故事

  • 挑战奖金(金钱覆盖) 下列出的季度填补缺失的挑战/对口型 earnings(并镜像皇后获胜行);遵循 .cursor/skills/drag-race-data/SKILL.md 中的金钱规则

  • 完成某部分后,在本 README 中将对应单元格标记为

  • 新的 MCP 工具与文档

拉取请求与提交

不要直接推送到 main(分支保护)。在分支上工作并打开 PR。

分支名称

  • feat/... — 新能力(类型、工具、季度数据)

  • fix/... — 错误修复

  • docs/... — 仅 README/注释

  • chore/... — 工具、依赖、清理

提交/PR 标题(Conventional Commits 风格)

前缀

用途

feat:

解锁新代理行为的新功能或数据/类型

fix:

错误修复

docs:

仅文档

chore:

维护(依赖、配置、格式化)

refactor:

无行为变更的代码更改

示例:

  • feat: add Season and SeasonId types

  • feat: add US-S06 season + cast data

  • fix: correct porkchopIds for US-S01

  • docs: update data coverage checklist

PR 正文 — 简要说明原因,外加一个小型测试计划(例如 tsc、哪些覆盖单元格已翻转、MCP 工具冒烟测试)。

打开 issue 或 PR。


许可证

MIT


致谢

由社区构建,为社区服务。Drag Race 粉丝、MCP 构建者和 AI 爱好者——欢迎来到这里。

免责声明: Drag Race MCP 是一个非官方粉丝项目。它与 RuPaul、World of Wonder 或 Drag Race 系列没有任何关联、认可或赞助关系。

A
license - permissive license
C
quality
B
maintenance

Maintenance

UpdatingMaintainers
UpdatingResponse time
Release cycle
0Releases (12mo)
Commit activity

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    An MCP server that provides detailed Pokémon information by integrating with the PokeAPI, allowing users to fetch comprehensive data about Pokémon and simulate battles.
    2
    2
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides standardized access to Pokemon data, allowing users to search, compare, and retrieve detailed information about Pokemon through natural language tools.
    5

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tkalejandro/drag-race-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server