Skip to main content
Glama
Zaozaotvk40

Danbooru Tag RAG MCP Server

by Zaozaotvk40

Danbooru Tag RAG MCP Server

Danbooruタグのセマンティック検索を提供するMCP (Model Context Protocol) サーバーです。

概要

このMCPサーバーは、自然言語のクエリからDanbooruタグを検索する機能を提供します。SDXLアニメモデルはDanbooruタグで学習されているため、適切なタグを使用することで画像生成の精度が向上します。

特徴

  • セマンティック検索: キーワード一致ではなく、意味的に関連するタグを検索

  • 日本語・英語対応: multilingual-e5-small モデルによる多言語サポート

  • ローカル実行: 外部APIを使用せず、完全にローカルで動作

  • 軽量: LanceDBによる効率的なベクトル検索

Related MCP server: Danbooru Tags MCP Server

技術スタック

コンポーネント

技術

理由

MCP SDK

mcp (公式SDK)

標準プロトコル準拠

ベクトルDB

LanceDB

軽量、ローカル実行に最適

埋め込みモデル

multilingual-e5-small

日英対応、高精度、CPU対応

パッケージ管理

uv

モダンで高速

インストール

Claude Desktopの設定ファイル(claude_desktop_config.json)に以下を追加:

{
  "mcpServers": {
    "danbooru-rag": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/Zaozaotvk40/danbooru-rag-mcp.git", "danbooru-rag-mcp"]
    }
  }
}

初回起動時にインデックスが自動構築されます(約60,000タグ、数分かかります)。

使用例

Claude Desktopでこのツールを有効にすると、自然言語でプロンプト生成を依頼できます。

例1: キャラクター描写

あなた: 「青い髪のツインテールの女の子が魔法を使っているシーンのプロンプトを作って」

Claude: semantic_searchで関連タグを検索し、以下のようなプロンプトを生成します:
→ 1girl, blue hair, twintails, magic, casting spell, glowing, magical effects, ...

例2: 風景シーン

あなた: 「夕焼けのファンタジー風景のプロンプトをお願い」

Claude: 関連タグを検索して組み合わせます:
→ scenery, sunset, fantasy, sky, clouds, orange sky, landscape, no humans, ...

例3: 複雑なシーン

あなた: 「カフェで本を読んでいる眼鏡の女の子、窓から光が差し込んでいる感じで」

Claude: 複数の要素を検索して統合します:
→ 1girl, glasses, book, reading, cafe, indoors, window, sunlight, sitting, ...

Claudeが自動的にsemantic_searchツールを使用し、Danbooruタグに基づいた画像生成プロンプトを作成します。

プロジェクト構造

danbooru-rag-mcp/
├── README.md                 # このファイル
├── pyproject.toml            # パッケージ設定
├── danbooru-tags.txt         # ソースデータ
├── src/
│   └── danbooru_rag/
│       ├── __init__.py       # パッケージ初期化
│       ├── __main__.py       # モジュールエントリーポイント
│       ├── config.py         # 設定定数
│       ├── embeddings.py     # 埋め込み生成
│       ├── database.py       # LanceDB操作
│       ├── builder.py        # インデックス自動構築
│       └── server.py         # MCPサーバー本体
├── scripts/
│   └── build_index.py        # インデックス手動構築
└── tests/
    └── ...                   # テスト

データベース保存先:

  • Windows: %LOCALAPPDATA%\danbooru-rag\lancedb

  • macOS: ~/Library/Application Support/danbooru-rag/lancedb

  • Linux: ~/.local/share/danbooru-rag/lancedb

設計判断

なぜmultilingual-e5-smallか?

  1. 日本語・英語両対応: ユーザーがどちらの言語でクエリしても対応

  2. 高精度: all-MiniLM-L6-v2より高いベンチマークスコア

  3. CPU対応: GPUなしでも実用的な速度で動作

  4. E5プレフィックス: query:/passage: プレフィックスで精度向上

なぜLanceDBか?

  1. サーバー不要: ファイルベースでローカル実行に最適

  2. Pythonネイティブ: 簡単にインストール・使用可能

  3. 高速: ベクトル検索に最適化

なぜ出現頻度100以下をフィルタリングするか?

  1. 学習データの品質: 低頻度タグはSDXLモデルの学習が不十分

  2. インデックス効率: 99,999件 → 約60,000件に削減

  3. 検索精度向上: ノイズとなる低頻度タグを除外

開発

テスト実行

uv run pytest tests/

コード品質

# 型チェック
uv run mypy src/

# フォーマット
uv run ruff format src/

# リント
uv run ruff check src/

ライセンス

MIT License

データソース

danbooru-tags.txtComfyUI-Custom-Scripts で利用されている以下のデータをベースにしています:

https://gist.githubusercontent.com/pythongosssss/1d3efa6050356a08cea975183088159a/raw/a18fb2f94f9156cf4476b0c24a09544d6c0baec6/danbooru-tags.txt

オリジナルのタグ名はアンダーバー区切り(例: blue_hair)ですが、本プロジェクトではスペース区切り(例: blue hair)に変換して使用しています。

謝辞

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    F
    maintenance
    Enables searching and analyzing Danbooru tags, character statistics, and wiki information. Extracts tags from posts, analyzes frequently used tags for characters with customizable filters, and retrieves detailed wiki entries.
    1
    -
  • A
    license
    A
    quality
    C
    maintenance
    Searches Danbooru for anime/game characters and their associated tags, providing tools to retrieve character profiles, co-occurring tags, wiki descriptions, and tag implications.
    5
    12
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables semantic search and retrieval of AI alignment articles from Alignment Forum and LessWrong, allowing users to explore research and discover unknown unknowns through natural language queries.
    MIT