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:
{
"tag": "yatogami_tenka",
"max_posts": 1000
}
Response:
{
"success": true,
"tag": "yatogami_tenka",
"collected": 119,
"new_posts": 111,
"updated_posts": 8
}
📊 Database Schema
This MCP uses the following table structure:
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)
- Push to GitHub
- Deploy on Smithery with environment variables:
TURSO_DATABASE_URL- Your Turso database URLTURSO_AUTH_TOKEN- Your Turso auth token
Local Development
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
