Skip to main content
Glama
gamzadongza

Danbooru-Turso MCP Server

by gamzadongza
README.md
# Danbooru-Turso MCP Server

Simple MCP server for collecting Danbooru character data and storing it in Turso database.

## 🎯 Purpose

Automatically collect and save Danbooru character data to Turso cloud database with automatic upsert (updates existing posts).

## ✨ Features

- 📥 **Collect character data** from Danbooru API with automatic pagination
- 💾 **Store in Turso** cloud database
- 🔄 **Auto-update** existing posts (INSERT OR REPLACE)
- ⚡ **Fast & Simple** - Single tool, single purpose

## 🛠️ Tool

### `collect_and_save`

Collect all posts for a character tag and save to Turso database.

**Parameters:**
- `tag` (required): Character tag to collect (e.g., "yatogami_tenka")
- `max_posts` (optional): Maximum number of posts to collect

**Example:**
```json
{
  "tag": "yatogami_tenka",
  "max_posts": 1000
}
```

**Response:**
```json
{
  "success": true,
  "tag": "yatogami_tenka",
  "collected": 119,

  "new_posts": 111,
  "updated_posts": 8
}
```

## 📊 Database Schema

This MCP uses the following table structure:

```sql
CREATE TABLE IF NOT EXISTS posts (
  id INTEGER PRIMARY KEY,
  tags TEXT NOT NULL,
  tag_count INTEGER NOT NULL,
  rating TEXT NOT NULL,
  score INTEGER NOT NULL,
  fav_count INTEGER NOT NULL,
  file_url TEXT NOT NULL,
  pixiv_id INTEGER
);
```

**Note:** If you need additional fields (like `image_width`, `image_height`, `created_at`, etc.), 
you can modify `src/services/turso.ts` to include them. The table is only created 
if it doesn't exist (`CREATE TABLE IF NOT EXISTS`), so existing data is safe.

Danbooru API returns 50+ fields per post. This MCP stores the most commonly used fields 
for performance and simplicity. The current schema covers the essential data for most use cases.

## 🚀 Deployment

### Smithery (Recommended)

1. Push to GitHub
2. Deploy on Smithery with environment variables:
   - `TURSO_DATABASE_URL` - Your Turso database URL
   - `TURSO_AUTH_TOKEN` - Your Turso auth token

### Local Development

```bash

npm install
npm run build
npm start
```

## 📦 Environment Variables

- `TURSO_DATABASE_URL` - Turso database URL (required)
- `TURSO_AUTH_TOKEN` - Turso auth token (required)
- `PORT` - Server port (default: 3000)

## 📖 Usage Example

**Collect data:**
```
collect_and_save({ 
  tag: "yatogami_tenka",
  max_posts: 500 
})
```

**Response:**
- Shows how many posts were collected
- Shows how many were new vs updated
- Handles duplicates automatically with UPSERT

## 📝 License

MIT