README.md•2.5 kB
# 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