Danbooru Search MCP
This server provides tools to search Danbooru for anime/game character and tag information, with built-in auto-correction of misspelled or aliased tags. Results can be returned in Markdown or structured JSON.
danbooru_get_character_profile– Get a complete character profile in one call: visual trait frequencies, wiki description, multilingual aliases, and tag implications (both directions, including costume variants).danbooru_search_character– Find tags that most frequently co-occur with a character tag (e.g.,ahoge,pink_hair,blue_eyes), ranked by frequency. Supports filtering by category or minimum frequency.danbooru_lookup_tag– Find the exact canonical name of a tag, resolve aliases/misspellings, and list variants using wildcard patterns (e.g.,*_(blue_archive)).danbooru_get_wiki_page– Retrieve the wiki description for any tag, including appearance, source work, voice actor, and alternate costumes.danbooru_get_tag_implications– Trace implication chains to see what tags are automatically applied when a given tag is used (e.g.,hoshino_(blue_archive)→blue_archive).
Optional: Provide Danbooru login credentials and an API key to increase rate limits.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Danbooru Search MCPWhat does the ahoge tag mean?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
⚠️ 纯 AI 生成声明 | Pure AI-Generated Notice
本项目代码由 AI(opencode + GLM-5.2)完全生成,未经人工编写。
This project's code is entirely generated by AI (opencode + GLM-5.2), without human-written code.
⚠️ Deprecated — 已废弃
This repository has been merged into
echo-xianyu/Booru-Pictag-Get-MCP(v0.2.0+). All five tools (danbooru_get_character_profile,danbooru_search_character,danbooru_lookup_tag,danbooru_get_wiki_page,danbooru_get_tag_implications) now live there alongside the prompt-building tools, behind a single MCP. This repo is archived — please migrate. SeeDEPRECATED.mdfor details and migration steps.本仓库已合并进
echo-xianyu/Booru-Pictag-Get-MCP(v0.2.0+),五个工具已整体迁入并和多站点搜图工具合并为单一 MCP。本仓库归档停更,请迁移至新仓库。
Danbooru Search MCP
Related MCP server: Gelbooru MCP
English
An MCP (Model Context Protocol) server that searches Danbooru for anime/game characters and their related tags. Given a character tag like hoshino_(blue_archive), it returns the most relevant co-occurring tags (ahoge, pink_hair, blue_eyes, heterochromia, ...) ranked by how often they appear together.
Features
Character profile in one call — visual traits, wiki description, multilingual aliases, and costume variant implications, all aggregated in parallel.
Auto-correction — misspelled tags are automatically resolved via Danbooru's autocomplete (e.g.
amamya_kokoro→amamiya_kokoro).No authentication required — the Danbooru read API is public. Setting
DANBOORU_LOGIN/DANBOORU_API_KEYis optional and only raises your rate limit.Zero-install deployment — runs via
uvxwith no manual install step.
Tools
# | Tool | Purpose |
1 |
| ⭐ Recommended first. Complete profile: traits + wiki + aliases + implications. |
2 |
| Visual trait frequencies for a character tag (ahoge, pink_hair, etc.). |
3 |
| Find/verify a tag's exact canonical name. Alias-corrected. |
4 |
| Get the textual wiki description for a tag. |
5 |
| Get the implication chain (A → B auto-adds). |
Requirements
Python 3.10+
uv (recommended) or
pip
Install & Configure
Add this to your MCP client config (claude_desktop_config.json, opencode.json, etc.):
{
"mcpServers": {
"danbooru": {
"command": "uvx",
"args": ["--from", "git+https://github.com/echo-xianyu/danbooru-MCP", "danbooru-mcp"]
}
}
}From a local directory:
{
"mcpServers": {
"danbooru": {
"command": "uvx",
"args": ["--from", "E:\\path\\to\\Danbooru-Search-MCP", "danbooru-mcp"]
}
}
}With optional authentication (higher rate limit):
{
"mcpServers": {
"danbooru": {
"command": "uvx",
"args": ["--from", "git+https://github.com/echo-xianyu/danbooru-MCP", "danbooru-mcp"],
"env": {
"DANBOORU_LOGIN": "your_username",
"DANBOORU_API_KEY": "your_api_key"
}
}
}
}Usage Examples
Ask your MCP-enabled assistant:
"Search
hoshino_(blue_archive), return the most relevant trait tags" → callsdanbooru_search_character, returnsahoge(0.92),pink_hair(0.92),halo(0.93), ..."Give me the full profile of Amamiya Kokoro" → calls
danbooru_get_character_profilewithtag=amamiya_kokoro."What does the ahoge tag mean?" → calls
danbooru_get_wiki_pagewithtitle=ahoge.
Danbooru Tag Format
Tags use lowercase with underscores, and parentheses for disambiguation:
Spaces → underscores:
blue archive→blue_archiveDisambiguation suffix:
hoshino_(blue_archive),rem_(re:zero)
Use danbooru_lookup_tag with a * wildcard to discover the exact canonical name first.
Rate Limits
Anonymous reads: 10 requests/second (shared global limit).
With API key: higher per-account limits.
The server sets a custom
User-Agentas required by Danbooru's policy.
License
MIT
中文
一个 MCP(模型上下文协议)服务器,通过 Danbooru 搜索动漫/游戏角色及其相关标签。输入角色标签如 hoshino_(blue_archive),返回最相关的共现标签(ahoge、pink_hair、blue_eyes、heterochromia...),按共现频率排序。
功能特点
一次调用获取完整角色档案 — 视觉特征、Wiki 描述、多语言别名、服装变体蕴含关系,并行聚合。
自动纠错 — 拼写的标签名自动通过 Danbooru autocomplete 纠正(如
amamya_kokoro→amamiya_kokoro)。无需认证 — Danbooru 只读 API 公开可用。设置
DANBOORU_LOGIN/DANBOORU_API_KEY是可选的,仅用于提升限速。零安装部署 — 通过
uvx运行,无需手动安装。
工具列表
# | 工具 | 用途 |
1 |
| ⭐ 推荐首选。 完整档案:特征 + Wiki + 别名 + 蕴含关系。 |
2 |
| 获取角色视觉特征频率(ahoge、pink_hair 等)。 |
3 |
| 查找/验证标签的规范名称,支持别名纠错。 |
4 |
| 获取标签的 Wiki 文字描述。 |
5 |
| 获取标签蕴含链(A → B 自动附加)。 |
环境要求
Python 3.10+
uv(推荐)或
pip
安装与配置
将以下内容添加到 MCP 客户端配置中(claude_desktop_config.json、opencode.json 等):
{
"mcpServers": {
"danbooru": {
"command": "uvx",
"args": ["--from", "git+https://github.com/echo-xianyu/danbooru-MCP", "danbooru-mcp"]
}
}
}从本地目录运行:
{
"mcpServers": {
"danbooru": {
"command": "uvx",
"args": ["--from", "E:\\path\\to\\Danbooru-Search-MCP", "danbooru-mcp"]
}
}
}带认证(提升限速,可选):
{
"mcpServers": {
"danbooru": {
"command": "uvx",
"args": ["--from", "git+https://github.com/echo-xianyu/danbooru-MCP", "danbooru-mcp"],
"env": {
"DANBOORU_LOGIN": "你的用户名",
"DANBOORU_API_KEY": "你的API密钥"
}
}
}
}使用示例
对支持 MCP 的 AI 助手说:
"搜索
hoshino_(blue_archive),返回最相关的特征标签" → 调用danbooru_search_character,返回ahoge(0.92)、pink_hair(0.92)、halo(0.93)..."给我天宫心(Amamiya Kokoro)的完整角色档案" → 调用
danbooru_get_character_profile,参数tag=amamiya_kokoro。"ahoge 这个标签是什么意思?" → 调用
danbooru_get_wiki_page,参数title=ahoge。
Danbooru 标签格式
标签使用小写 + 下划线,括号用于消歧:
空格 → 下划线:
blue archive→blue_archive消歧后缀:
hoshino_(blue_archive)、rem_(re:zero)
不确定标签名时,先用 danbooru_lookup_tag 加 * 通配符查找。
限速
匿名读取:10 请求/秒(全站共享)。
带 API 密钥:更高的账户级限速。
服务器已设置 Danbooru 要求的自定义
User-Agent。
许可证
MIT
Available Tools
5 toolsdanbooru_get_character_profileARead-onlyIdempotent
RECOMMENDED FIRST CHOICE for any character/tag lookup.
Returns everything in one call: visual traits (co-occurrence frequencies), wiki description, multilingual aliases, and tag implications in both directions (what this tag implies, and what tags imply this one — e.g. all costume variants).
Aggregates these data sources in parallel:
Related tags (co-occurrence frequencies) -> visual traits.
Wiki page -> textual description and multilingual aliases.
Tag implications (antecedent) -> tags auto-added by this tag.
Tag implications (consequent) -> tags that auto-add this tag (e.g. costume variants like
hoshino_(swimsuit)_(blue_archive)implyhoshino_(blue_archive)).
Each source degrades gracefully: a missing wiki page or empty implications do not fail the whole request.
When auto_resolve is enabled (default) and the queried tag does not
exist on Danbooru, the tool corrects the tag name via autocomplete and
rebuilds the profile. The correction is reported in resolved_from.
Args: params (GetProfileInput): Validated input: - tag (str): Character tag, e.g. 'hoshino_(blue_archive)'. - limit (int): Max characteristic tags (1-100, default 25). - response_format (ResponseFormat): 'markdown' or 'json'. - auto_resolve (bool): Auto-correct misspelled tags (default True).
Returns: str: Markdown profile or JSON. Success JSON schema: { "tag": {"name": str, "category": str, "category_id": int, "post_count": int}, "characteristics": [ {name, category, post_count, frequency}, ... ], "wiki_page_tags": [ {name, category, post_count}, ... ], "implied_by": [ {antecedent_name, consequent_name, status}, ... ], "implies_this": [ {antecedent_name, consequent_name, status}, ... ], "wiki": {"title": str, "other_names": [str], "body": str} | null, "resolved_from": {"original": str, "resolved": str, "corrected": bool} | null, "suggestions": [ {name, category, post_count, is_alias}, ... ] } Error: "Error: ".
Examples: - "Give me everything about Hoshino from Blue Archive" -> params with tag='hoshino_(blue_archive)'. - "Full profile of Rem from Re:Zero" -> params with tag='rem_(re:zero)'.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral details beyond annotations: it aggregates data sources in parallel, each degrades gracefully, and auto_resolve corrects misspelled tags. Annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint) are consistent and complemented by this context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with key information. It is longer than minimal but every section (recommendation, capabilities, data sources, parameters, return schema, examples) adds value. Could be slightly tightened in wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description is completely thorough: it explains data sources, graceful degradation, auto_resolve behavior, return schema fields, error handling, and provides examples. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite schema description coverage being 0%, the description compensates fully by explaining each parameter (tag, limit, auto_resolve, response_format) with behavior, defaults, and examples. It adds meaning beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns everything in one call for a character/tag lookup, listing visual traits, wiki description, multilingual aliases, and implications. It explicitly recommends it as the first choice, distinguishing it from sibling tools like danbooru_get_tag_implications or danbooru_get_wiki_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly recommends this tool as the first choice for any character/tag lookup, implying it should be used over siblings when a comprehensive profile is needed. It does not explicitly state when not to use it, but the contrast with siblings provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
danbooru_get_tag_implicationsARead-onlyIdempotent
Get the implication chain for a tag (A -> B auto-adds).
For character costume variants, use danbooru_get_character_profile
which queries both directions. This tool queries only the antecedent
direction (what does this tag imply).
A Danbooru implication A -> B means every post tagged A is
automatically also tagged B. This tool queries the antecedent
direction (what does this tag imply). For the reverse direction (what
tags imply this tag, e.g. costume variants), use
danbooru_get_character_profile which queries both directions.
For characters this often encodes the source work
(hoshino_(blue_archive) -> blue_archive) and structural traits. Not
every character tag has implications, so an empty list is a
valid result.
Args: params (GetImplicationsInput): Validated input: - tag (str): Antecedent tag, e.g. 'hoshino_(blue_archive)'. - limit (int): Max implications (1-1000, default 50). - response_format (ResponseFormat): 'markdown' or 'json'.
Returns: str: Markdown table or JSON. Success JSON schema: { "query": str, "implications": [ {"id": int, "antecedent_name": str, "consequent_name": str, "status": str, "created_at": str} ] } Error: "Error: ".
Examples: - "What tags are auto-added when tagging Hoshino?" -> params with tag='hoshino_(blue_archive)'. - "Trace the implication chain of pink_hair" -> params with tag='pink_hair'.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds that it queries only antecedent direction, that implications mean auto-adding of tags, and that an empty list is valid. No contradictions. Adds useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, distinction from sibling, mechanism, parameter explanation, return format, and examples. It is concise yet thorough, with each sentence adding value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations and output schema (described in text), the description covers purpose, usage, behavioral details, parameter roles, and examples. It is complete for an AI agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has detailed descriptions for each parameter (tag, limit, response_format) with examples and constraints. The description adds some example usage but does not significantly enhance parameter understanding beyond what schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the implication chain for a tag, explaining the 'A -> B' auto-add mechanism. It distinguishes itself from the sibling tool 'danbooru_get_character_profile' by specifying this tool queries only the antecedent direction, while sibling queries both directions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool (for antecedent implications) and when not to (for reverse direction, use character profile). It also mentions that an empty list is a valid result, guiding interpretation. Examples further clarify usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
danbooru_get_wiki_pageARead-onlyIdempotent
Get the textual wiki description for a tag.
For complete character info, use danbooru_get_character_profile
instead. This tool retrieves the wiki page only. Wiki pages contain the
canonical description, often listing a character's appearance, source
work, voice actor, and alternate costumes.
The body is written in Danbooru DText markup; this tool converts it to readable plain text in markdown mode.
Args: params (GetWikiInput): Validated input: - title (str): Wiki title, e.g. 'hoshino_(blue_archive)'. - body_limit (int): Truncate body to N chars (0 = full). - response_format (ResponseFormat): 'markdown' or 'json'.
Returns: str: Markdown or JSON. Success JSON schema: { "title": str, "category_name": str|null, "other_names": [str, ...], "body": str, "is_deleted": bool, "is_locked": bool, "created_at": str, "updated_at": str } Error: "Error: " (404 if no wiki page exists).
Examples: - "Describe Hoshino from Blue Archive" -> params with title='hoshino_(blue_archive)'. - "What does the ahoge tag mean?" -> params with title='ahoge'.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral details beyond annotations, such as conversion of Danbooru DText markup to plain text in markdown mode, truncation via body_limit, and error handling (404 for missing wiki page). Annotations already cover idempotency and read-only nature, so the description complements them well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Args, Returns, Examples) and is front-loaded with the core purpose. Every sentence adds value, and there is no superfluous information. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, usage, parameter details, return format (including a schema), error handling, and examples. With the output schema provided in the description and complete annotations, the description is fully adequate for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all three parameters, so the baseline is 3. The description adds some contextual examples and explains the purpose of title (e.g., 'like a Danbooru tag'), but does not significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the wiki description for a tag and distinguishes itself from the sibling 'danbooru_get_character_profile' by noting that the sibling should be used for complete character info. It specifies the resource (wiki page) and the action (get), making the purpose very specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides usage guidance by stating when to use an alternative ('For complete character info, use danbooru_get_character_profile instead'). It also includes examples that illustrate typical use cases, helping the agent understand appropriate contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
danbooru_lookup_tagARead-onlyIdempotent
Utility: find or verify a tag's exact canonical name.
NOT for character analysis — use danbooru_get_character_profile or
danbooru_search_character for that. This tool is for finding/verifying
tag names and listing related tag variants (e.g. all costume variants of
a character).
Uses Danbooru's autocomplete endpoint as the primary search engine because
it reliably resolves aliases (e.g. amamya_kokoro -> amamiya_kokoro)
and performs prefix matching without requiring explicit * wildcards.
The tags.json endpoint is used only as a fallback when autocomplete
returns nothing.
Args: params (LookupTagInput): Validated input: - query (str): Name pattern. Wildcards (*) supported but often unnecessary — autocomplete does prefix matching automatically. - category (Optional[TagCategory]): Filter by category. - limit (int): Max results (1-200, default 25). - order (str): 'count' | 'name' | 'date'. - hide_empty (bool): Hide zero-post tags (default True). - response_format (ResponseFormat): 'markdown' or 'json'. - auto_resolve (bool): Fall back to tags.json if autocomplete returns nothing (default True).
Returns: str: Markdown table or JSON. Success JSON schema: { "query": str, "results": [ {"name": str, "category": str, "category_id": int, "post_count": int, "is_deprecated": bool, "created_at": str, "is_alias": bool, "match_type": str} ] } Error: "Error: ".
Examples: - "Does the tag amamiya_kokoro exist?" -> query='amamiya_kokoro'. - "Find Amamiya Kokoro even if misspelled" -> query='amamya_kokoro' (autocomplete corrects it to amamiya_kokoro). - "List all Blue Archive character tags" -> query='*_(blue_archive)', category='character', order='count'.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is clear. The description adds valuable behavioral context: it uses Danbooru's autocomplete endpoint as primary, falls back to tags.json, resolves aliases, performs prefix matching, and describes the return format (markdown/JSON with detailed schema). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: utility statement, explicit exclusions, technical notes on endpoints, parameter details, return schema, and examples. It is front-loaded with the purpose. While it is somewhat lengthy, the complexity of the tool (multiple endpoints, fallback logic, return formats) justifies the length. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple endpoints, many parameters, output schema provided), the description is fully complete. It covers all necessary behavioral details, parameter semantics, return format, and includes explicit examples. The output schema is included, and the description leaves no ambiguity about how the tool behaves in various scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides good descriptions for all parameters (high coverage), so baseline is 3. The description adds value by explaining the autocomplete behavior, the role of auto_resolve, and giving examples of usage beyond what the schema provides. It also restates key parameter constraints clearly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'find or verify a tag's exact canonical name.' It explicitly distinguishes from sibling tools by stating it is NOT for character analysis and names the appropriate alternatives (danbooru_get_character_profile, danbooru_search_character). The verb 'find/verify' and resource 'tag name' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear when-to-use guidance: for finding/verifying tag names and listing related tag variants. It explicitly says not to use this for character analysis and names the correct alternatives. However, it does not explicitly address when to use this over other siblings like danbooru_get_tag_implications or danbooru_get_wiki_page, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
danbooru_search_characterARead-onlyIdempotent
Get visual trait frequencies for a character tag.
Best tool for character visual trait analysis. Use
danbooru_get_character_profile if you also need wiki/implications.
Given a character or copyright tag (e.g. hoshino_(blue_archive)), it
returns the tags that most frequently appear alongside it on Danbooru
posts. A tag with frequency 0.92 (like ahoge or pink_hair for
Hoshino) appears in 92%% of
posts carrying the query tag, so it is a defining visual trait.
Results are ordered by co-occurrence frequency (descending). Meta tags
such as highres are excluded by default because they describe image
quality, not the character.
When auto_resolve is enabled (default) and the queried tag does not
exist on Danbooru, the tool automatically queries the autocomplete
endpoint to find the correct name (e.g. correcting a misspelled
amamya_kokoro to amamiya_kokoro), re-runs the search with the
corrected name, and reports the correction in resolved_from.
Args: params (SearchCharacterInput): Validated input: - tag (str): Canonical Danbooru tag, e.g. 'hoshino_(blue_archive)'. - limit (int): Max related tags to return (1-100, default 25). - category (Optional[TagCategory]): Filter to one category. - min_frequency (float): Min co-occurrence frequency 0-1. - exclude_meta (bool): Drop meta tags (default True). - response_format (ResponseFormat): 'markdown' or 'json'. - auto_resolve (bool): Auto-correct misspelled tags (default True).
Returns: str: Markdown table or JSON. Success JSON schema: { "query": str, "tag": {"name": str, "category": str, "category_id": int, "post_count": int}, "related_tags": [ {"name": str, "category": str, "category_id": int, "post_count": int, "frequency": float, "jaccard_similarity": float, "overlap_coefficient": float} ], "wiki_page_tags": [ {"name": str, "category": str, "category_id": int, "post_count": int} ], "resolved_from": {"original": str, "resolved": str, "corrected": bool} | null, "suggestions": [ {name, category, post_count, is_alias}, ... ] # when tag not found } Error: "Error: ".
Examples: - "What does Hoshino from Blue Archive look like?" -> params with tag='hoshino_(blue_archive)' -> returns ahoge, pink_hair, blue_eyes, heterochromia, halo, ... - "Find all copyright tags related to this character" -> params with tag='hoshino_(blue_archive)', category='copyright'.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds rich behavioral context: results ordered by co-occurrence frequency, default exclusion of meta tags, auto_resolve behavior for misspelled tags, and what happens when a tag is not found. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, usage comparison, auto-resolve explanation, Args, Returns, and Examples. It is front-loaded with the key information and is not overly verbose for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all necessary aspects: purpose, input parameters, return format (including JSON schema), error handling, examples, and differentiation from siblings. It is complete enough for an agent to use the tool correctly without external information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides detailed descriptions for all parameters (high coverage). The description adds value by including examples (e.g., tag canonical form), clarifying the auto_resolve behavior, and explaining the meaning of frequency. This extra context justifies a score above the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get visual trait frequencies for a character tag.' It explicitly differentiates from the sibling tool 'danbooru_get_character_profile', saying to use that if wiki/implications are needed. The verb and resource are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance ('Best tool for character visual trait analysis') and when-not-to-use ('Use danbooru_get_character_profile if you also need wiki/implications'). It also gives concrete examples of queries, which helps an agent select the tool correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
danbooru_get_character_profile - First observed
danbooru_get_tag_implications - First observed
danbooru_get_wiki_page - First observed
danbooru_lookup_tag - First observed
danbooru_search_character
TDQS
Scored across 5 tools
Each tool has a clear, distinct purpose with explicit usage guidance. The comprehensive danbooru_get_character_profile is recommended as the first choice, while other tools handle specific subtasks like forward implications, wiki text, tag lookups, and visual trait frequencies. Overlap between get_character_profile and search_character is resolved by the description recommending get_character_profile for full info, minimizing ambiguity.
All tools follow a consistent danbooru_verb_noun pattern in snake_case. Three use 'get', one uses 'lookup', and one uses 'search'—all clear verbs paired with specific nouns (character_profile, tag_implications, wiki_page, tag, character). No mixing of conventions or vague names.
Five tools is well-scoped for a Danbooru search MCP covering character profiles, tag implications, wiki pages, tag lookups, and visual trait analysis. The number is neither too few to limit functionality nor excessive for the domain, providing a focused yet flexible set.
The tool surface covers core character/tag operations well: full profile, forward implications, wiki content, tag search, and visual trait analysis. Minor missing features include reverse implications only available within the profile tool (no standalone reverse tool) and lack of direct post/search capabilities. However, these gaps do not severely hinder common workflows.
Maintenance
Related MCP Connectors
Access and interact with anime and manga data seamlessly. Retrieve detailed information about your…
Search Stack Exchange questions, fetch Q&A threads as markdown, look up tag FAQs and user profiles.
Provide detailed Pokémon data and information through a standardized MCP interface. Enable LLMs an…
Look up meme template images by name or description, with disambiguation for ambiguous names.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceEnables 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-
- AlicenseAqualityDmaintenanceA Python MCP server that wraps the Gelbooru API. Connect it to any MCP-compatible client (Claude Desktop, Cursor, etc.) to search posts, look up tags, and generate Stable Diffusion prompts from real character appearance data — all directly from your AI assistant.871MIT
- AlicenseNot gradedqualityDmaintenanceEnables semantic search of Danbooru tags using natural language queries to generate precise prompts for anime-style image generation.7MIT
- FlicenseNot gradedqualityCmaintenanceIdentifies anime characters and works from illustrations, and traces back to Pixiv originals, artists, or animation screenshots using vision models and SauceNAO/Trace.moe.-