Skip to main content
Glama

ドラッグレース MCP 👑

ドラッグレースの知識を提供する、非公式・コミュニティ主導のMCP(Model Context Protocol)サーバーです。

drag-race-mcp は、MCPツールを通じてAIアシスタントにクイーン、シーズン、エピソード、ファンの言い伝え(ロア)への構造化されたアクセスを提供します。

免責事項

これは非公式のファンプロジェクトであり、RuPaul、World of Wonder、またはドラッグレースフランチャイズとは提携、承認、スポンサー関係は一切ありません


MCPクライアントとしての利用

このパッケージはstdio MCPサーバーです。クライアントが子プロセスとして起動し、stdin/stdout経由でJSON-RPCをやり取りします。サーバーを自分で起動しないでください。

起動コマンド(いずれかを選択):

方法

コマンド / 引数

公開パッケージ

npx@tkalejandro/drag-race-mcp

ローカルクローン(ビルド済み)

nodedist/index.js(先に pnpm build を実行)

ローカルクローン(開発)

pnpmexec tsx src/index.ts(リポジトリルートから)

Cursorなどのホストは、MCP設定で同じコマンドを配線できます(Test locally with 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 tools の表と一致します(例: get_queenget_seasonget_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 による型)です。モデルが繰り返しの散文にトークンを費やさずに事実をナビゲートできるように設計されています。

ハードファクト(確定事実)

場所

格納内容

Season

kb/schemas/season.ts

フランチャイズシーズンのメタデータ、キャストID、勝者、賞金、ホスト/審査員

Queen

kb/schemas/queen.ts

ドラッグネーム、別名、シーズンごとの出演と勝利

Episode

kb/schemas/episode.ts

週ごとのチャレンジ、ランウェイ、リップシンク、脱落

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でトークンを小さく保つ

可能な限り、完全なネストされたオブジェクトではなく安定したIDでリンクします:

ID

備考

SeasonId

US-S17AS-S10CVTW-S02

既知のシーズンのクローズド列挙型

EpisodeId

US-S17-E05

{SeasonId}-E{NN}

QueenId

jinkx-monsoon

ケバブケースのスラッグ(オープンセット、後でデータから検証)

LoreId

alyssa-coco-rivalry

ケバブケースのスラッグ

なぜIDなのか?

  • ツールレスポンスのペイロードが小さくなる(castIds を渡し、必要なときだけ展開)

  • LLMのコントリビューションがより安全(シーズンのテキストを書き直す代わりに US-S06 を参照)

  • 簡単な結合: シーズン → クイーンID → クイーンを検索、クイーンの勝利 → episodeId → エピソードを検索

シーズンは castIdsepisodeIds を格納します。クイーンは episodeId を指す出演統計を格納します。ツール(および将来の list_queen_ids)は、モデルがIDを捏造するのではなく、有効なIDを発見するのに役立ちます。

ロアがモデルの力を拡張する

ハードファクトは何が起こったかに答えます。ロアなぜそれが重要なのかどのように関連しているのかに答えます:

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

確執、象徴的な瞬間、コメディシーズン、ドラッグファミリー、論争などを教えるためにロアエントリを追加します — タグ付け(rivalrydramacomedyiconic、…)され、IDを介してファクトカタログにリンクされます。

LLM / 人間のためのコントリビューションループ:

  1. リンクするときは既存のIDを優先する

  2. 何かが欠けているか間違っている場合は、ハードファクトレコードを追加または修正する

  3. ナラティブ、相関関係、ファンの文脈を追加したいときはロアを追加する

これが、クイーン/シーズンの完全なブロブをあちこちに重複させることなくKBが成長する方法です。


データカバレッジ

SeasonId にどのデータが存在するかを追跡します。そのスライスがナレッジベースにあるとき、 に切り替えます。

意味

Season

シーズンレコード(メタ、キャストID、勝者、賞金、ホスト/審査員)

Queens

キャストのクイーンレコード(出演、勝利)

Episodes

シーズンのエピソードレコード

Lore

このシーズンにリンクされた少なくとも1つのロアエントリ

すべて空から始まります — これがコントリビューションマップです。任意の を選んで埋めてください。

チャレンジ賞金(Moneyカバレッジ)

エピソード ✅ はエピソードレコードが存在することを意味します — すべてのミニ/マキシ賞金が埋まっているわけではありません。週次賞金はチャレンジとリップシンクのオプションの earningsMoney)にあり、クイーンの challengeWins / miniChallengeWins / lipSyncWins はそれらの金額を反映します。シーズンのグランプリは cashPrice を使用します(全シーズンで必須)。

  • ソース優先: 公開ソースが賞金を記載していない場合は earnings を省略します(多くのUK 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ミニはアドバンテージのみの場合が多い(US-S01S08: マキシはほぼ埋まっている、ミニはまばら)

  • UK / UKVTW / CVTWは全体的にまばら(バッジまたは文書化されていない週次現金)

  • 一部のオールスターズのチップ/マキシに穴が残っている(例: AS-S04 のチップ、AS-S07 / AS-S09 のマキシ)

  • いくつかの国際パックはマキシまたはミニのどちらかに強いが両方ではない(例: FRのミニは空、BR / MX / THは部分的)

以下のフランチャイズ表にPrize列を追加しないでください — 賞金の深さはここで追跡してください。

US — ルポールのドラッグレース

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

UK

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でそれらを検証・インデックス化します。エージェントとコントリビュートする際は.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. サーバーの有効化/更新

  1. Cursor Settings → MCPを開く

  2. drag-race-mcpを見つける

  3. 接続を確認する(エラー状態でないこと)。コードや設定を変更した場合は更新/再起動を使用する

  4. このワークスペースで新しいAgentチャットを開き、ツールリストを取得する

4. ツールのスモークテスト

エージェントに次のように尋ねてください:

welcome_userツールを私の名前で呼び出してください。

MCPが正しく接続されていれば、エージェントはwelcome_userを呼び出し、このサーバーからウェルカム文字列を返します。

これは開発で使用されるのと同じ経路です:CursorがMCP経由でサーバーのツールを発見し、モデルがそれらを呼び出せます(ツール一覧 → 選択 → 引数で実行 → 結果を読む)。

5. ツール追加後

  1. サーバーにツールを登録する(src/tools/general/welcome_user.tsを参照)

  2. CursorでMCPサーバーを再起動/更新する

  3. 新しいAgentチャットを開始する

  4. エージェントに新しいツールを名前で使用するよう依頼するか、タスクを説明してツールを選択させる

ヒント

  • ツールの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

1つの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のMoneyルールに従う

  • スライスが完了したら、この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