drag-race-mcp
드래그 레이스 MCP 👑
드래그 레이스 지식을 위한 비공식 커뮤니티 기반 MCP(Model Context Protocol) 서버입니다.
drag-race-mcp는 AI 어시스턴트가 MCP 도구를 통해 퀸, 시즌, 에피소드, 팬 로어에 구조적으로 접근할 수 있게 해줍니다.
면책 고지
이 프로젝트는 비공식 팬 프로젝트이며 RuPaul, World of Wonder 또는 드래그 레이스 프랜차이즈와 제휴, 보증, 후원 관계가 없습니다.
MCP 클라이언트로 사용하기
이 패키지는 stdio MCP 서버입니다. 클라이언트가 이 서버를 자식 프로세스로 실행하고 stdin/stdout을 통해 JSON-RPC로 통신합니다. 서버를 직접 시작하지 마세요.
실행 명령(하나 선택):
방법 | 명령 / 인자 |
게시된 패키지 |
|
로컬 클론(빌드됨) |
|
로컬 클론(개발) |
|
Cursor 같은 호스트는 MCP 설정에서 동일한 명령을 연결할 수 있습니다(Test locally with 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 tools 표의 내용과 일치합니다(예: get_queen, get_season, get_queen_earnings).
Related MCP server: Pokemon MCP Server
기능
준비 완료
타입이 지정된 지식 모델(시즌, 퀸, 에피소드, 로어)
JSON 지식 베이스 + Zod 검증 + 무결성 검사
핵심 MCP 읽기 도구(시즌, 퀸, 에피소드, 로어 목록 / 검색 / 조회)
Cursor 친화적인 로컬 MCP 설정 + 워크플로 문서
예정
퀸 비교, 추천, 더 풍부한 통계
더 넓은 프랜차이즈 범위, 추후 선택적 RAG
예시 질문
Porkchop 퀸은 누구인가요?
시즌 5와 All Stars에 모두 출전한 퀸은 누구인가요?
Jinkx Monsoon과 Bianca Del Rio를 비교해 주세요.
챌린지 우승이 가장 많은 퀸은 누구인가요?
코미디가 많은 시즌을 추천해 주세요.
Alyssa Edwards와 Coco Montrese의 라이벌 관계를 설명해 주세요.
데이터 모델(에이전트 및 기여자용)
ID와 카탈로그는 src/kb/catalogs.ts에 있고, 엔티티 형태는 src/kb/schemas/의 Zod 스키마입니다(타입은 z.infer 사용). 모델이 반복적인 산문에 토큰을 낭비하지 않고 사실을 탐색할 수 있도록 설계되었습니다.
확정 사실
유형 | 위치 | 저장 내용 |
|
| 프랜차이즈 시즌 메타데이터, 캐스트 ID, 우승자, 상금, 호스트/심사위원 |
|
| 드래그 이름, 별칭, 시즌별 출연 및 우승 |
|
| 주별 챌린지, 런웨이, 립싱크, 탈락 |
|
| 상금 기록: |
|
| 호스트/심사위원 |
|
| 폐쇄형 카탈로그 + 문자열 ID 별칭 |
이것들이 순위, 우승, 캐스트 목록, 에피소드 결과의 근거 자료(source of truth) 입니다.
ID로 토큰 크기 최소화
가능한 모든 곳에서 전체 중첩 객체 대신 안정적인 ID로 연결합니다:
ID | 예시 | 참고 |
|
| 알려진 시즌의 폐쇄형 열거형 |
|
|
|
|
| 케밥-케이스 슬러그(개방형 집합, 이후 데이터로 검증) |
|
| 케밥-케이스 슬러그 |
왜 ID인가?
도구 응답의 페이로드가 더 작음(
castIds전달, 필요할 때만 확장)더 안전한 LLM 기여(시즌 텍스트를 다시 쓰는 대신
US-S06참조)쉬운 조인: 시즌 → 퀸 ID → 퀸 조회, 퀸 우승 →
episodeId→ 에피소드 조회
시즌은 castIds와 episodeIds를 저장합니다. 퀸은 episodeId를 가리키는 출연 통계를 저장합니다. 도구(그리고 이후 list_queen_ids)는 모델이 ID를 임의로 만들지 않고 유효한 ID를 발견하도록 돕습니다.
로어가 모델의 역량을 확장
확정 사실은 무슨 일이 일어났는지를 답합니다. 로어는 왜 중요한지, 어떻게 연결되는지를 답합니다:
Lore {
id, title, summary, tags,
queenIds?, seasonIds?, episodeIds?
}라이벌 관계, 상징적 순간, 코미디 시즌, 드래그 패밀리, 논란 등을 가르치기 위해 로어 항목을 추가하세요. 태그(rivalry, drama, comedy, iconic, …)를 달고 ID를 통해 사실 카탈로그에 다시 연결합니다.
LLM/인간을 위한 기여 루프:
연결 시 기존 ID 우선 사용
누락되거나 잘못된 확정 사실 레코드 추가 또는 수정
서사, 상관관계, 팬 맥락이 필요할 때 로어 추가
이렇게 하면 퀸/시즌 전체 블롭을 모든 곳에 중복하지 않고도 KB가 성장합니다.
데이터 범위
각 SeasonId에 어떤 데이터가 있는지 추적합니다. 해당 슬라이스가 지식 베이스에 있으면 —를 ✅로 바꾸세요.
열 | 의미 |
Season | 시즌 레코드(메타, 캐스트 ID, 우승자, 상금, 호스트/심사위원) |
Queens | 캐스트의 퀸 레코드(출연, 우승) |
Episodes | 시즌의 에피소드 레코드 |
Lore | 이 시즌에 연결된 로어 항목이 최소 1개 |
모든 항목은 빈 상태로 시작합니다. 이것이 기여 맵입니다. 아무 —나 골라 채우세요.
챌린지 상금(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: 맥시는 대부분 채워짐, 미니는 드묾)UK / UKVTW / CVTW는 전반적으로 부실(배지 또는 문서화되지 않은 주간 현금)
일부 All Stars 팁/맥시 공백 존재(예:
AS-S04팁,AS-S07/AS-S09맥시)여러 국제 팩은 맥시 또는 미니 중 하나만 강함(예: FR 미니 비어있음, BR / MX / TH 부분적)
아래 프랜차이즈 표에 Prize 열을 추가하지 마세요. 상금 깊이는 여기에서 추적하세요.
US — RuPaul's Drag Race
SeasonId | Season | Queens | Episodes | Lore |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
AS — All Stars
SeasonId | Season | Queens | Episodes | Lore |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
UK
SeasonId | Season | Queens | Episodes | Lore |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
Canada
SeasonId | Season | Queens | Episodes | Lore |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
Europe
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를 통해 이를 검증하고 인덱싱합니다. 에이전트와 함께 기여할 때는 .cursor/skills/drag-race-data/를 참조하세요.
데이터 검증
src/data/ 아래에서 무엇이든 추가하거나 편집한 후에는 다음을 실행하세요:
pnpm test이 명령은 모든 JSON 파일을 Zod로 로드하고, 잘못된 필드와 중복 ID를 거부하며, 파일 + 필드 경로와 함께 실패합니다. git commit은 Husky pre-commit 훅을 통해 동일한 검사를 실행합니다 — 커밋 전에 문제를 발견할 수 있도록 편집 중에도 직접 테스트를 실행하세요. 새로 클론한 후에는 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. 도구 스모크 테스트
에이전트에게 다음과 같이 요청하세요:
welcome_user도구를 제 이름으로 호출해 주세요.
MCP가 올바르게 연결되어 있으면 에이전트가 welcome_user를 호출하고 이 서버에서 환영 문자열을 반환합니다.
이것은 개발에서 사용되는 것과 동일한 경로입니다: Cursor가 MCP를 통해 서버의 도구를 발견하고, 모델이 이를 호출할 수 있습니다 (도구 나열 → 선택 → 인수로 실행 → 결과 읽기).
5. 도구 추가 후
서버에 도구 등록 (
src/tools/general/welcome_user.ts참조)Cursor에서 MCP 서버 재시작/새로고침
새 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 도구 스모크 테스트).
이슈 또는 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