Skip to main content
Glama
gamzadongza

Danbooru Tags MCP Server

by gamzadongza
README.md
# Danbooru Tags MCP Server

MCP 서버를 통해 Danbooru의 태그 정보와 캐릭터 통계를 검색할 수 있습니다.

## 🎯 주요 기능

### 도구 (Tools)

#### 1. `get_post_tags`
특정 Danbooru 포스트의 모든 태그를 추출합니다.

**입력:**
- `post_id_or_url` (string): 포스트 ID 또는 URL

**출력 예시:**
```json
{
  "post_id": 2973340,
  "url": "https://danbooru.donmai.us/posts/2973340",
  "total_tags": 47,
  "all_tags": ["1girl", "armpits", "black_boots", ...],
  "categories": {
    "general": ["1girl", "armpits", ...],
    "artist": ["ress"],
    "copyright": ["elsword"],
    "character": ["crimson_avenger_(elsword)", ...],
    "meta": []
  }
}
```

#### 2. `get_character_tags`
캐릭터의 자주 사용되는 태그 통계를 분석합니다.

**입력:**
- `character_tag` (string, required): 캐릭터 태그명
- `num_posts` (number, optional): 분석할 포스트 수 (기본: 100)
- `top_n` (number, optional): 반환할 상위 태그 개수 (기본: 50)
- `category` (string, optional): 카테고리 필터 (general/artist/copyright/character/meta)
- `include_tags` (array, optional): 반드시 포함할 태그
- `exclude_tags` (array, optional): 제외할 태그
- `clothing_only` (boolean, optional): 의상 태그만 반환

**출력 예시:**
```json
{
  "character_tag": "hatsune_miku",
  "posts_analyzed": 100,
  "filters": {
    "include_tags": ["tachi-e"]
  },
  "top_tags": [
    {"rank": 1, "tag": "hatsune_miku", "count": 100, "percentage": 100.0},
    {"rank": 2, "tag": "long_hair", "count": 90, "percentage": 90.0}
  ],
  "clothing_tags": [
    {"tag": "necktie", "count": 75, "percentage": 75.0}
  ]
}
```

#### 3. `get_wiki_info`
Danbooru Wiki에서 태그/캐릭터 정보를 검색합니다.

**입력:**
- `tag_name` (string): 태그명

**출력 예시:**
```json
{
  "title": "hatsune_miku",
  "other_names": ["初音ミク", "miku"],
  "body": "Hatsune Miku is a Japanese VOCALOID...",
  "body_formatted": "포맷팅된 본문",
  "created_at": "2007-09-12T17:15:58.073-04:00",
  "updated_at": "2025-09-13T13:43:39.561-04:00"
}
```

## 📦 설치 및 사용

### 로컬에서 사용 (config.json)

1. **Claude Desktop 설정 파일 열기:**
   - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
   - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`

2. **MCP 서버 추가:**
```json
{
  "mcpServers": {
    "danbooru-tags": {
      "command": "npx",
      "args": [
        "-y",
        "@smithery/cli@latest",
        "run",
        "@gamzadongza/danbooru-tags-mcp"
      ]
    }
  }
}
```

3. **Claude Desktop 재시작**

### HTTPS URL로 사용 (클라우드)

Claude.ai 또는 모바일 앱에서 다음 URL을 추가하세요:

```
https://server.smithery.ai/@gamzadongza/danbooru-tags-mcp/mcp?api_key=YOUR_API_KEY
```

## 💡 사용 예시

### 포스트 태그 추출
```
User: 이 Danbooru 이미지의 태그를 분석해줘: https://danbooru.donmai.us/posts/2973340
Claude: [get_post_tags 도구 자동 호출]
```

### 캐릭터 태그 통계
```
User: 하츠네 미쿠의 자주 사용되는 태그 100개 분석해줘
Claude: [get_character_tags 도구 자동 호출]
```

### 스탠딩 일러스트만 필터링
```
User: 크림슨 어벤저의 스탠딩 일러스트에서 자주 나오는 의상 태그는?
Claude: [get_character_tags with include_tags: ["tachi-e"] 호출]
```

### Wiki 정보 검색
```
User: tachi-e 태그가 뭐야?
Claude: [get_wiki_info 도구 자동 호출]
```

## 🛠️ 개발

### 로컬 개발

```bash
# 의존성 설치
npm install

# TypeScript 빌드
npm run build

# 서버 실행
npm start
```

### Docker 빌드

```bash
docker build -t danbooru-tags-mcp .
docker run -p 3000:3000 danbooru-tags-mcp
```

## 📚 기술 스택

- **TypeScript** - 타입 안전성
- **Express** - HTTP 서버
- **MCP SDK** - Model Context Protocol 구현
- **SSEServerTransport** - Server-Sent Events 지원

## 🔗 관련 링크

- **Danbooru API 문서:** https://danbooru.donmai.us/wiki_pages/help:api
- **MCP 공식 문서:** https://modelcontextprotocol.io/
- **Smithery:** https://smithery.ai

## 📄 라이선스

MIT

## 👤 작성자

**gamzadongza**

- GitHub: https://github.com/gamzadongza
- 관련 프로젝트: 
  - [turso-mcp-server](https://github.com/gamzadongza/turso-mcp-server)
  - [danbooru-turso-mcp](https://github.com/gamzadongza/danbooru-turso-mcp)