Danbooru标签RAG MCP服务器
一种MCP(Model Context Protocol)服务器,提供Danbooru标记语义搜索。
概要
此MCP服务器提供了从自然语言查询中搜索Danbooru标记的功能。因为SDXL动画模型是在DanbooruTag中学习的,所以使用适当的标签可以提高图像生成的精度。
特徴
- 语义搜索:查找在语义上相关的标签,而不是关键字匹配
- 日本语・英语对应:多语言支持multilingual-e5-small模型
- 本地运行:完全在本地运行,不使用外部API
- 軽量:使用LanceDB进行有效的矢量搜索
技术栈
|组件|技术|原因| |---------------|------|------| |MCP SDK|mcp(官方SDK)|标准协议依据| |矢量数据库|轻量,最适合本地执行| 嵌入式模型日英兼容、高精度、CPU兼容 |软件包管理|现代高速|
安装
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"]
}
}
}首次启动时将自动构建索引(约60000个标记,需要几分钟)。
使用例
在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/
└── ... # テスト数据库目标:
- 窗户:
%LOCALAPPDATA%\danbooru-rag\lancedb - macOS:
~/Library/Application Support/danbooru-rag/lancedb - Linux:
~/.local/share/danbooru-rag/lancedb
设计判断
为什么是multilingual-e5-small?
- 日本语・英语両对应:允许用户查询任何语言
- 高精度:基准分数高于all-MiniLM-L6-v2
- CPU対応:即使没有GPU也能以实用的速度动作
- E5前缀:query:/passage:通过前缀提高精度
为什么LanceDB?
- 不需要服务器:最适合基于文件的本地运行
- Python本地:易于安装和使用
- 高速:优化向量搜索
为什么过滤出现频率100以下?
- 学习数据质量:低频标记对SDXL模型的学习不够
- 索引效率:99999件→减少到约60000件
- 検索精度向上:排除干扰的低频标记
开発
测试运行
uv run pytest tests/编码质量
# 型チェック
uv run mypy src/
# フォーマット
uv run ruff format src/
# リント
uv run ruff check src/许可证
MIT许可证
数据源
danbooru-tags.txt 啊 ComfyUI自定义脚本 中使用的以下数据为基础:
https://gist.githubusercontent.com/pythongosssss/1d3efa6050356a08cea975183088159a/raw/a18fb2f94f9156cf4476b0c24a09544d6c0baec6/danbooru-tags.txt
原始标记名称以下划线分隔(例如: blue_hair),但在本项目中以空格分隔(例如: blue hair),模板名称将采用不同的格式。
谢辞
- ComfyUI自定义脚本 -Danboru标签数据来源
- 模型上下文协议 -LLM工具集成标准协议
- 兰斯数据库 -快速矢量数据库
- 句子转换 -嵌入式模型库
