drag-race-mcp
ドラッグレース MCP 👑
ドラッグレースの知識を提供する、非公式・コミュニティ主導のMCP(Model Context Protocol)サーバーです。
drag-race-mcp は、MCPツールを通じてAIアシスタントにクイーン、シーズン、エピソード、ファンの言い伝え(ロア)への構造化されたアクセスを提供します。
免責事項
これは非公式のファンプロジェクトであり、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
質問例
ポークチョップクイーンは誰?
シーズン5とオールスターズの両方に出場したクイーンは?
Jinkx MonsoonとBianca Del Rioを比較して。
チャレンジ勝利数が最も多いクイーンは?
コメディが多いシーズンをおすすめして。
Alyssa EdwardsとCoco Montreseの確執について説明して。
データモデル(エージェントとコントリビューター向け)
IDとカタログは src/kb/catalogs.ts にあり、エンティティの形状は src/kb/schemas/ のZodスキーマ(z.infer による型)です。モデルが繰り返しの散文にトークンを費やさずに事実をナビゲートできるように設計されています。
ハードファクト(確定事実)
型 | 場所 | 格納内容 |
|
| フランチャイズシーズンのメタデータ、キャストID、勝者、賞金、ホスト/審査員 |
|
| ドラッグネーム、別名、シーズンごとの出演と勝利 |
|
| 週ごとのチャレンジ、ランウェイ、リップシンク、脱落 |
|
| 賞金記録: |
|
| ホスト/審査員 |
|
| クローズドカタログ + 文字列IDエイリアス |
これらは順位、勝利、キャストリスト、エピソードの結果の信頼できる情報源です。
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を省略します(多くのUK 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ミニはアドバンテージのみの場合が多い(
US-S01–S08: マキシはほぼ埋まっている、ミニはまばら)UK / UKVTW / CVTWは全体的にまばら(バッジまたは文書化されていない週次現金)
一部のオールスターズのチップ/マキシに穴が残っている(例:
AS-S04のチップ、AS-S07/AS-S09のマキシ)いくつかの国際パックはマキシまたはミニのどちらかに強いが両方ではない(例: FRのミニは空、BR / MX / THは部分的)
以下のフランチャイズ表にPrize列を追加しないでください — 賞金の深さはここで追跡してください。
US — ルポールのドラッグレース
SeasonId | Season | Queens | Episodes | Lore |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
AS — オールスターズ
SeasonId | Season | Queens | Episodes | Lore |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ |
UK
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でそれらを検証・インデックス化します。エージェントとコントリビュートする際は.cursor/skills/drag-race-data/を参照してください。
データの検証
src/data/配下に何かを追加・編集した後は、以下を実行してください:
pnpm testこれにより、すべてのJSONファイルがZodを通して読み込まれ、不正なフィールドや重複IDが拒否され、ファイル+フィールドパスとともに失敗します。git commitはHuskyのpre-commitフック経由で同じチェックを実行しますが、コミット前に問題を発見できるよう、編集時には自分でもテストを実行してください。新規クローン後は、Huskyがフックをインストールできるようpnpm installを一度実行してください。
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 Settings → MCP(ユーザーレベル)に追加することもできます。
3. サーバーの有効化/更新
Cursor Settings → 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 |
| 1つの |
| 名前/エイリアスでクイーンを検索(デフォルト上限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のMoneyルールに従うスライスが完了したら、この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