盖尔博鲁mcp
  
蟒蛇 主控程序 包装的服务器 黄钻API。将其连接到任何兼容MCP的客户端(Claude Desktop、Cursor等),以搜索帖子、查找标签,并从真实的角色外观数据生成稳定扩散提示——所有这些都可以直接从您的AI助手中完成。
______________________________________________________________________
✨ 特性
🎨 稳定扩散提示生成
- 角色提示:根据真实的Gelbooru标签频率数据自动生成准确的SD提示
- 外观故障:单独的眼睛、头发和服装/配饰标签类别
- 智能缓存:缓存24小时的结果-没有重复的API命中
🔍 帖子和标签搜索
- 高级过滤:按标签、分数、分辨率、评级、上传者、池等搜索
- 完整标记语法:AND、OR、通配符、排除、元标记、排序和分页
- 标签查找:检查标签是否存在、帖子计数并发现相关标签
👥 社区工具
- 用户搜索:按名称或通配符模式查找Gelbooru用户帐户
- 评论:检索任何帖子ID的帖子评论
- 已删除的帖子:跟踪给定帖子ID上方删除的内容
______________________________________________________________________
📦 安装
先决条件
- Python 3.10+
git
快速开始
- 克隆存储库:
git clone https://github.com/citronlegacy/gelbooru-mcp.git
cd gelbooru-mcp- 运行安装程序:
chmod +x install.sh && ./install.sh
# or without chmod:
bash install.sh- 或手动安装:
pip install mcp注: 添加.gelbooru_cache/和.venv/到你的.gitignore以避免提交缓存数据或虚拟环境。
获取Gelboru API密钥
- 访问您的 Gelbooru帐户选项页面
- 登录您的Gelbooru帐户
- 复制您的 API密钥 和 用户ID
- 将它们设置为环境变量(见下文)
______________________________________________________________________
🔑 认证
API凭据是可选的,但强烈建议使用-未经身份验证的请求会受到限制,每个查询只能使用2个标签。Gelbooru Patreon的支持者收到无限的请求。
export GELBOORU_API_KEY="your_api_key"
export GELBOORU_USER_ID="your_user_id"这两个值都在你的 Gelbooru帐户选项页面没有它们,服务器仍然可以工作,但请求可能会受到限制。盖尔博鲁的Patreon支持者不受利率限制。
______________________________________________________________________
▶️ 运行服务器
python gelbooru_mcp.py
# or via the venv created by install.sh:
.venv/bin/python gelbooru_mcp.py______________________________________________________________________
⚙️ 配置
克劳德桌面版
将以下内容添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"gelbooru-mcp": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["/absolute/path/to/gelbooru_mcp.py"],
"env": {
"GELBOORU_API_KEY": "your_api_key",
"GELBOORU_USER_ID": "your_user_id"
}
}
}
}其他MCP客户端
根据客户的文档进行配置:
- 命令:
/absolute/path/to/.venv/bin/python - 参数:
/absolute/path/to/gelbooru_mcp.py - 运输标准: stdio
______________________________________________________________________
💡 用法示例
为角色生成稳定扩散提示
“为Re:Zero中的Rem构建一个稳定的扩散提示。”
LLM电话 build_prompt 随着 character_name: "rem_(re:zero)" 并返回:
rem (re:zero), blue eyes, blue hair, short hair, maid, maid headdress, maid apron, ...______________________________________________________________________
查找高品质壁纸图像
“向我展示宽度至少为1920px的顶级风景图像。”
LLM电话 search_posts 随着 tags: "scenery width:>=1920 sort:score:desc".
______________________________________________________________________
查看标签的受欢迎程度
“标签‘misty\_(口袋妖怪)’在Gelbooru上有多少帖子?”
LLM电话 search_tags 随着 name: "misty_(pokemon)" 并阅读 count 现场。
______________________________________________________________________
🛠️ 可用工具
| 工具 | 说明 | 关键参数 |
|---|---|---|
build_prompt | 为字符生成稳定扩散提示字符串 | character_name, max_images, include_other |
get_character_tags | 使用频率计数获取结构化标签细分 | character_name, max_images |
search_posts | 支持完整标签语法的搜索帖子 | tags, limit, pid, id |
search_tags | 按名称、模式或ID查找标签 | name, name_pattern, orderby, limit |
search_users | 查找Gelbooru用户帐户 | name, name_pattern, limit |
get_comments | 检索帖子的评论 | post_id |
get_deleted_posts | 列出最近删除的帖子 | last_id, limit |
______________________________________________________________________
📖 工具参考
build_prompt
获取标记最多的 rating:general solo 发布一个字符,并组装一个即可粘贴的Stable Diffusion提示字符串。内部调用 get_character_tags 因此,结果在第一次获取后被缓存。
参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
character_name | string | ✅ | — | Gelbooru字符标签,例如。 misty_(pokemon) |
max_images | 整数 | ❌ | 300 | 要分析的帖子。更多=先取越慢,标签越可靠。之后缓存。 |
include_other | boolean | ❌ | true | 包括非眼睛/头发标签(衣服、配饰等)。设置为 false 仅用于外观提示。 |
示例响应
{
"prompt": {
"character": "misty (pokemon)",
"posts_analysed": 284,
"cache_hit": false,
"prompt_string": "misty (pokemon), green eyes, orange hair, side ponytail, gym leader, shorts, suspenders",
"tags": {
"eye": ["green eyes"],
"hair": ["orange hair", "side ponytail"],
"other": ["gym leader", "shorts", "suspenders"]
}
}
}LLM提示: 始终使用Gelbooru的下划线格式(misty_(pokemon)不Misty (Pokemon)).如果不确定确切的标签,请致电search_tags随着name_pattern第一。
______________________________________________________________________
get_character_tags
与相同的数据源 build_prompt 但返回具有频率计数的完整结构化标签细分。当您想自己检查、过滤或重新格式化标签时,请使用此功能。
参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
character_name | string | ✅ | — | Gelbooru字符标签,例如。 rem_(re:zero) |
max_images | 整数 | ❌ | 300 | 要分析的得分最高的帖子数量。 |
示例响应
{
"character_tags": {
"name": "rem_(re:zero)",
"posts_analysed": 300,
"cache_hit": true,
"eye": [
{ "tag": "blue eyes", "count": 261, "frequency": 0.87 }
],
"hair": [
{ "tag": "blue hair", "count": 274, "frequency": 0.913 },
{ "tag": "short hair", "count": 198, "frequency": 0.66 }
],
"other": [
{ "tag": "maid", "count": 231, "frequency": 0.77 }
]
}
}frequency 是具有该标签的已分析帖子的分数(0.0-1.0)。接近1.0的标签几乎是通用的;低于0.3的标签是情境性的。
缓存环境变量:
| 环境变量 | 默认值 | 描述 |
|---|---|---|
GELBOORU_CACHE_DIR | .gelbooru_cache/ 脚本旁边 | 自定义缓存文件夹路径 |
GELBOORU_CACHE_TTL | 86400 (24小时) | 缓存寿命(秒) |
______________________________________________________________________
search_posts
使用任何标签组合搜索Gelbooru帖子。支持完整的Gelbooru标签语法,包括元标签、排序和过滤。
参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
tags | string | ❌ | — | 标记查询字符串(请参见 标记语法参考 在......下面 |
limit | 整数 | ❌ | 20 | 要返回的帖子(最多 100) |
pid | 整数 | ❌ | 0 | 页码(0索引)用于分页 |
id | 整数 | ❌ | — | 通过其Gelbooru帖子ID获取单个帖子 |
cid | 整数 | ❌ | — | 按更改ID(Unix时间戳)获取帖子 |
______________________________________________________________________
get_deleted_posts
检索已从Gelbooru删除的帖子,可选择过滤到给定帖子ID以上的帖子。
参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
last_id | 整数 | ❌ | — | 仅返回ID高于此值的已删除帖子。可用于同步本地镜像。 |
limit | 整数 | ❌ | 20 | 要返回的帖子(最多 100) |
______________________________________________________________________
search_tags
按名称、通配符模式或ID查找Gelbooru标签。可用于检查标签是否存在、查找帖子数量、发现相关标签或自动补全。
参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
name | string | ❌ | — | 精确的标签名称,例如。 blue_hair |
names | string | ❌ | — | 以空格分隔的精确标签名称列表,例如。 cat_ears dog_ears fox_ears |
name_pattern | string | ❌ | — | SQL LIKE通配符: % =任何字符, _ =一个字符。例如 %schoolgirl% |
id | 整数 | ❌ | — | 按标签的数据库ID查找标签 |
after_id | 整数 | ❌ | — | 返回ID大于此值的标签 |
limit | 整数 | ❌ | 20 | 要返回的标签(最大值 100) |
order | string | ❌ | — | ASC 或 DESC |
orderby | string | ❌ | — | 排序字段: date, count,或 name |
LLM提示: 如果用户用自然语言给出角色名称(例如“口袋妖怪的迷雾”),请使用name_pattern随着%misty%_(pokemon)%在拨打电话之前找到正确的Gelbooru标签get_character_tags或build_prompt.
______________________________________________________________________
search_users
按名称搜索Gelbooru用户帐户。
参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
name | string | ❌ | — | 确切用户名 |
name_pattern | string | ❌ | — | SQL LIKE通配符用户名搜索 |
limit | 整数 | ❌ | 20 | 要返回的结果(最大值 100) |
pid | 整数 | ❌ | 0 | 分页页码 |
______________________________________________________________________
get_comments
检索特定帖子的评论。
参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
post_id | 整数 | ✅ | — | 用于获取评论的Gelbooru帖子ID |
______________________________________________________________________
🏷️ 标记语法参考
| 语法 | 含义 |
|---|---|
tag1 tag2 | 同时带有标签1和标签2的帖子 |
{tag1 ~ tag2 ~ tag3} | 带有标签1或标签2或标签3的帖子 |
-tag1 | 排除带有标签1的帖子 |
*tag1 | 通配符前缀(以tag1结尾的标签) |
tag1* | 通配符后缀(以tag1开头的标签) |
rating:general | 按等级筛选: general, questionable,或 explicit |
-rating:explicit | 排除评级 |
score:>=50 | 得分至少50 |
width:>=1920 | 图像宽度≥1920px |
height:>1080 | 图像高度>1080px |
user:bob | 由用户“bob”上传 |
fav:1 | ID为1的用户喜欢的帖子 |
pool:2 | 池ID 2中的帖子 |
sort:score:desc | 按分数排序(desc或asc) |
sort:random | 根据每个请求随机订购 |
sort:random:1234 | 固定种子的随机顺序(0-10000) |
sort:updated:desc | 按最近更新的排序 |
______________________________________________________________________
🤖 LLM注意事项
- 字符标签格式: Gelbooru使用
character_(series)带下划线的格式。在传递给工具之前,始终转换自然语言名称——“Rem from Re:Zero”→rem_(re:zero)《命运之剑》→saber_(fate). - 字符提示的工作流程: 如果确切的标签未知,请调用
search_tags随着name_pattern第一→ 确认标签存在并有帖子→ 然后打电话build_prompt. - 分页:
search_posts每次调用最多返回100个结果。使用pid浏览页面。get_character_tags和build_prompt在内部处理自己的分页。 - 隐藏物:
get_character_tags和build_prompt将结果缓存24小时。这cache_hit响应中的字段指示是使用了实时数据还是缓存数据。 - 评级: Gelbooru使用
general,questionable,以及explicit.get_character_tags和build_prompt始终筛选到rating:general以获得更清晰、更具代表性的字符数据。
______________________________________________________________________
⚠️ 已知限制
- 标签搜索限制: Gelbooru强制每个未经身份验证的搜索查询最多2个标签。对于复杂的多标签查询,设置
GELBOORU_API_KEY和GELBOORU_USER_ID. get_character_tags精度: 结果取决于角色在Gelbooru上标记的一致性。小众或最近添加的角色可能帖子较少,频率数据也不太可靠。rating:general仅适用于字符工具:build_prompt和get_character_tags故意限制rating:general以获得干净、有代表性的外观数据。明确的帖子被设计排除在外。- 缓存为per
(character_name, max_images)一对: 改变max_images打开该角色的缓存。
______________________________________________________________________
🐛 故障排除
服务器无法启动:
- 确保已安装Python 3.10+:
python --version - 验证虚拟环境是否已创建:
ls .venv/ - 重新运行安装程序:
bash install.sh
API速率限制/抑制请求:
- 集
GELBOORU_API_KEY和GELBOORU_USER_ID环境变量 - Gelbooru Patreon的支持者收到无限次请求
找不到字符/结果为空:
- 确认标签存在
search_tags使用name_pattern - 检查拼写——Gelbooru使用
character_(series)下划线格式 - 有些角色可能很少有一致标记的帖子
标签语法错误/标签太多:
- 未经身份验证的用户每次查询最多只能有2个标签
- 使用API凭据对复杂的多标记搜索进行身份验证
______________________________________________________________________
🤝 贡献
欢迎拉取请求!如果您发现一个字符标签分类错误(例如,发筒中缺少发型标签,或者噪音标签通过净化过滤器),请使用标签及其所属列表打开问题或PR。
开发环境
- 分叉存储库
- 创建要素分支
- 进行更改
- 提交拉取请求
______________________________________________________________________
📄 许可证
MIT许可证——见 许可证 了解详情。
______________________________________________________________________
🔗 链接
- 📚 API文件
- 🏷️ Gelbooru标签搜索备忘单
- 🔧 MCP文件
- 🐦 Gelbooru在X/推特上
- 🐛 错误报告
- 💡 功能请求和讨论

