drag-race-mcp
Drag Race MCP 👑
一个非官方的、由社区驱动的 Drag Race 知识 MCP(模型上下文协议)服务器。
drag-race-mcp 通过 MCP 工具为 AI 助手提供对皇后、赛季、剧集和粉丝传说的结构化访问。
免责声明
这是一个非官方粉丝项目,与 RuPaul、World of Wonder 或 Drag Race 系列无关,也未获得其认可或赞助。
作为 MCP 客户端使用
本包是一个 stdio MCP 服务器。您的客户端将其作为子进程启动,并通过 stdin/stdout 进行 JSON-RPC 通信——请勿自行启动服务器。
启动命令(任选其一):
方式 | 命令 / 参数 |
已发布包 |
|
本地克隆(已构建) |
|
本地克隆(开发) |
|
像 Cursor 这样的宿主可以在 MCP 配置中配置相同的命令(参见 使用 Cursor 进行本地测试)。以下是编程式客户端的最小示例。
TypeScript
npm install @modelcontextprotocol/clientimport { 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 mcpimport 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_queen、get_season、get_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。
硬事实
类型 | 位置 | 存储内容 |
|
| 系列赛季元数据、演员 ID、获胜者、奖金、主持人/评委 |
|
| 变装名、别名、每季出场和胜利 |
|
| 每周挑战、T 台、对口型、淘汰 |
|
| 奖金记录: |
|
| 主持人/评委 |
|
| 封闭目录 + 字符串 ID 别名 |
这些是排名、胜利、演员名单和剧集结果的事实来源。
ID 保持 token 精简
在可能的情况下,我们通过稳定 ID 进行链接,而不是完整的嵌套对象:
ID | 示例 | 说明 |
|
| 已知赛季的封闭枚举 |
|
|
|
|
| 短横线分隔的 slug(开放集合;稍后从数据验证) |
|
| 短横线分隔的 slug |
为什么使用 ID?
工具响应中的有效负载更小(传递
castIds,仅在需要时展开)更安全的 LLM 贡献(引用
US-S06而不是重写赛季文本)易于连接:赛季 → 皇后 ID → 查找皇后;皇后胜利 →
episodeId→ 查找剧集
赛季存储 castIds 和 episodeIds。皇后存储指向 episodeId 的出场统计。工具(以及后续的 list_queen_ids)帮助模型发现有效 ID,而不是凭空捏造。
传说扩展模型的能力
硬事实回答发生了什么。传说回答为什么重要以及事物如何关联:
Lore {
id, title, summary, tags,
queenIds?, seasonIds?, episodeIds?
}添加传说条目来教授竞争、标志性时刻、喜剧赛季、变装家族、争议等——带有标签(rivalry、drama、comedy、iconic、……)并通过 ID 链接回事实目录。
LLM / 人类的贡献循环:
链接时优先使用现有 ID
当某些内容缺失或错误时,添加或修正硬事实记录
当需要叙事、关联或粉丝背景时,添加传说
这就是知识库在不重复完整皇后/赛季数据块的情况下增长的方式。
数据覆盖
跟踪每个 SeasonId 存在哪些数据。当该部分在知识库中时,将 — 翻转为 ✅。
列 | 含义 |
赛季 | 赛季记录(元数据、演员 ID、获胜者、奖金、主持人/评委) |
皇后 | 演员的皇后记录(出场、胜利) |
剧集 | 赛季的剧集记录 |
传说 | 至少有一条传说条目链接到该赛季 |
一切从空开始——这是贡献地图。选择任何 — 并填充它。
挑战奖金(Money 覆盖)
剧集 ✅ 表示存在剧集记录——并非每个迷你/主挑战奖金都已填写。每周奖金位于挑战和对口型上的可选 earnings(Money)中;皇后的 challengeWins / miniChallengeWins / lipSyncWins 镜像这些金额。赛季大奖使用 cashPrice(每个赛季必填)。
来源优先: 当公开来源未列出奖金时,省略
earnings(许多英国 RuPeter 周没有现金条目)。职业生涯总计: 使用 MCP 工具
get_queen_earnings(个人现金 vs 慈善 vs 非现金context奖金)。
目前大约 70 / 82 个赛季包至少有一些每周 earnings。
尚无每周 earnings(12 个) — 如果 Fandom 或剧集来源列出了 Wikipedia 遗漏的奖金,这些是很好的贡献目标:
AS-S01、CVTW-S01、CVTW-S02、ES-S05、UK-S02、UK-S03、UK-S04、UK-S05、UK-S07、UKVTW-S01、UKVTW-S02、UKVTW-S03
薄弱 / 不完整(模式):
早期美国季的迷你挑战通常只有优势(
US-S01–S08:主挑战大多已填写;迷你挑战稀疏)英国 / UKVTW / CVTW 通常稀疏(徽章或未记录的每周现金)
一些全明星小费/主挑战仍有空缺(例如
AS-S04小费;AS-S07/AS-S09主挑战)几个国际包在主挑战或迷你挑战上很强,但并非两者(例如法国迷你挑战为空;巴西 / 墨西哥 / 泰国部分)
不要在下方的系列表中添加奖金列——请在此处跟踪奖金深度。
美国 — RuPaul's Drag Race
SeasonId | Season | Queens | Episodes | Lore |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
AS — 全明星
SeasonId | Season | Queens | Episodes | Lore |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
英国
SeasonId | Season | Queens | Episodes | Lore |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
加拿大
SeasonId | Season | Queens | Episodes | Lore |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
欧洲
SeasonId | 季度 | 皇后 | 集数 | 背景故事 |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| — | — | — | — |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| — | — | — | — |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
拉丁美洲
SeasonId | 季度 | 皇后 | 集数 | 背景故事 |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| — | — | — | — |
| — | — | — | — |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
亚太及全球
SeasonId | 季度 | 皇后 | 集数 | 背景故事 |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| — | — | — | — |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| — | — | — | — |
项目结构
├── 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.mdJSON 事实数据位于 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. 启用/刷新服务器
打开 Cursor 设置 → MCP
找到
drag-race-mcp确认它已连接(无错误状态)。如果你更改了代码或配置,请使用刷新/重启
在此工作区中打开新的 Agent 聊天,以便它获取工具列表
4. 冒烟测试工具
向 Agent 询问类似内容:
使用我的名字调用
welcome_user工具。
如果 MCP 连接正确,Agent 将调用 welcome_user 并从此服务器返回欢迎字符串。
这与开发中使用的路径相同:Cursor 通过 MCP 发现服务器的工具,然后模型可以调用它们(列出工具 → 选择一个 → 使用参数运行 → 读取结果)。
5. 添加工具之后
在服务器上注册工具(参见
src/tools/general/welcome_user.ts)在 Cursor 中重启/刷新 MCP 服务器
启动新的 Agent 聊天
让 Agent 按名称使用新工具,或描述任务并让它选择工具
提示
工具的
description和 Zod.describe(...)文本是模型读取的内容——请保持清晰如果工具未显示:检查 MCP 错误日志、
mcp.json中的路径,以及pnpm exec tsx src/index.ts是否能在终端中干净运行MCP 重启后最好使用新聊天,以便工具目录是最新的
MCP 工具
工具 | 描述 |
| 冒烟测试/问候 |
| 列出已加载的季度;可选 |
| 季度记录 + 关联 ID |
| 列出某个 |
| 按姓名/别名搜索皇后(默认限制 20,最大 50) |
| 完整皇后记录 |
| 职业生涯奖金明细(现金、慈善、非现金) |
| 剧集详情 |
| 按 ID 获取背景故事条目 |
| 按查询、标签、皇后和/或季度搜索背景故事 |
计划中(v2+): compare_queens、recommend_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: add Season and SeasonId typesfeat: add US-S06 season + cast datafix: correct porkchopIds for US-S01docs: update data coverage checklist
PR 正文 — 简要说明原因,外加一个小型测试计划(例如 tsc、哪些覆盖单元格已翻转、MCP 工具冒烟测试)。
打开 issue 或 PR。
许可证
MIT
致谢
由社区构建,为社区服务。Drag Race 粉丝、MCP 构建者和 AI 爱好者——欢迎来到这里。
免责声明: Drag Race MCP 是一个非官方粉丝项目。它与 RuPaul、World of Wonder 或 Drag Race 系列没有任何关联、认可或赞助关系。
Maintenance
Tools
Related MCP Servers
- FlicenseBqualityDmaintenanceAn 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.22
- FlicenseNot gradedqualityDmaintenanceAn 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
- AlicenseNot gradedqualityDmaintenanceMCP server providing tools to look up Pokémon, moves, abilities, items, locations, evolutions, and more from the PokéAPI via natural language.1663ISC
- AlicenseBqualityDmaintenanceAn MCP server that brings Star Trek knowledge from Memory Alpha into your AI sessions. Search articles, look up episodes, compare starships, and more.311MIT
Related MCP Connectors
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
This MCP server provides seamless access to Malaysia's government open data, including datasets, w…
An MCP server for deep research or task groups
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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