Ultimate MCP server for Civitai — search models, browse top images with prompts, download LoRAs/Checkpoints, analyze trends. Use when user asks about AI models, LoRAs, checkpoints, Stable Diffusion, Flux, image generation prompts, or Civitai.
Scanned 9/1/2026
Install to Claude Code
npx -y skills add timoncool/civitai-mcp-ultimate --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of civitai-mcp-ultimate?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/timoncool-civitai-mcp-ultimate)More formats (shields.io, HTML) on the badges page.
---
name: civitai-mcp-ultimate
description: Ultimate MCP server for Civitai — search models, browse top images with prompts, download LoRAs/Checkpoints, analyze trends. Use when user asks about AI models, LoRAs, checkpoints, Stable Diffusion, Flux, image generation prompts, or Civitai.
---
# Civitai MCP Ultimate — 14 Tools Reference
## Quick Tool Map
| Goal | Tool | Key Params |
|------|------|-----------|
| Find models by name | `search_models` | `query` (Meilisearch), `types`, `base_model` |
| Find models by creator | `search_models` | `username` (most reliable) |
| Batch fetch by IDs | `search_models` | `ids=[123, 456]` |
| Full model details | `get_model` | `model_id` |
| Version details + hashes | `get_model_version` | `version_id` |
| Identify model from file | `get_model_version_by_hash` | SHA256/AutoV2/CRC32/BLAKE3 |
| Top checkpoints | `get_top_checkpoints` | `base_model`, `period` |
| Top LoRAs | `get_top_loras` | `base_model`, `nsfw` |
| Browse images/videos | `browse_images` | `model_id`, `content_type`, `tag`, `base_model` |
| Trending images/videos | `get_top_images` | `sort`, `period`, `content_type`, `browsing_level` |
| Example images for model | `get_model_images` | `model_id` |
| Extract best prompts | `get_image_generation_data` | `model_id` |
| Download URL | `get_download_url` | `version_id` |
| Download commands | `get_download_info` | `model_id`, `comfyui_path` |
## Common Recipes (Quick Reference)
### Top image by likes yesterday, specific base model
```
get_top_images(sort="Most Reactions", period="Day", content_type="image", base_model="Flux.1 D", limit=1)
```
### Top video by comments this week
```
get_top_images(sort="Most Comments", period="Week", content_type="video", limit=1)
```
### Most popular SDXL model this month
```
search_models(base_model="SDXL 1.0", sort="Most Downloaded", period="Month", limit=1)
```
### Top 5 images from the most popular Flux model today
```
search_models(types=["Checkpoint"], base_model="Flux.1 D", sort="Most Downloaded", period="Day", limit=1)
-> get model_id
get_model_images(model_id=ID, limit=5)
```
### Community images for a model (sorted by reactions)
```
browse_images(model_id=ID, sort="Most Reactions", period="Month", limit=5)
```
**NOTE**: `model_id` auto-resolves to the latest version. To see images from a specific version, use `model_version_id` directly:
```
get_model(model_id=ID) # -> see all versions with IDs
browse_images(model_version_id=VERSION_ID, sort="Most Reactions", period="AllTime", limit=5)
```
### Most popular NSFW image this month with prompt
```
get_top_images(sort="Most Reactions", period="Month", content_type="image", browsing_level="XXX", has_meta=true, limit=1)
```
### Find a specific LoRA by name (e.g. hands fix)
```
search_models(query="hands fix", types=["LORA"], sort="Most Downloaded", limit=5)
```
**NOTE**: Text search uses Meilisearch (fast, accurate). Combining `query` + `types` + `base_model` works via Meilisearch! Falls back to REST API only when using REST-only params (ids, favorites, license filters).
### Top 10 LoRA by downloads this month
```
get_top_loras(sort="Most Downloaded", period="Month", limit=10)
```
### Anime images from ComfyUI, only with metadata
```
get_top_images(tag="anime", tools="ComfyUI", has_meta=true, period="Week", limit=5)
```
### Only videos made on Civitai
```
get_top_images(content_type="video", made_on_site=true, period="Month", limit=5)
```
### Only original works (no remixes)
```
get_top_images(originals_only=true, period="Week", limit=10)
```
### XXX content only
```
get_top_images(browsing_level="XXX", sort="Most Reactions", period="Day", limit=5)
browse_images(browsing_level="X,XXX", content_type="video", period="Week", limit=3)
```
## Image/Video Cache
All images and videos are **automatically downloaded** to `~/.civitai-mcp-cache/`:
- Images: 512px thumbnails (saves bandwidth)
- Videos: original quality
- Auto-cleanup: files older than 24h deleted on server startup
- Local paths returned in output — use **Read tool** to preview images
## Workflows
### 1. Find the Best LoRA for a Style
```
get_top_loras(base_model="Flux.1 D", period="Week", limit=10)
-> pick model_id
get_model(model_id=ID)
-> read trigger words, description, versions
get_image_generation_data(model_id=ID, limit=5)
-> extract prompts, settings, LoRA weight
get_download_info(model_id=ID, comfyui_path="C:/ComfyUI/models")
-> ready-to-paste curl/wget/PowerShell
```
### 2. Prompt Mining
```
get_top_images(sort="Most Reactions", period="Week", has_meta=true, limit=10)
-> each image has: prompt, negative prompt, steps, CFG, sampler, seed, LoRAs
```
For a specific model:
```
get_image_generation_data(model_id=ID, sort="Most Reactions", limit=5)
-> only images WITH metadata
```
### 3. Download Model to ComfyUI
```
get_download_info(model_id=858800, comfyui_path="D:/ComfyUI/models")
```
Returns: curl + wget + PowerShell commands, ComfyUI subfolder, all hashes, scan results.
### 4. Identify Unknown .safetensors File
```
get_model_version_by_hash(hash="E837144C55") # AutoV2 hash
```
### 5. Compare Models by Popularity
```
get_top_checkpoints(base_model="Flux.1 D", period="Month", sort="Most Downloaded", limit=20)
get_top_checkpoints(base_model="SDXL 1.0", period="Month", sort="Most Downloaded", limit=20)
```
## Enum Cheat Sheet
### Model Types
`Checkpoint`, `LORA`, `LoCon`, `TextualInversion`, `Hypernetwork`, `Controlnet`, `Poses`, `VAE`, `Upscaler`, `Wildcards`, `MotionModule`, `Workflows`, `Other`
### Base Models
| Category | Values |
|----------|--------|
| SD 1.x | `SD 1.4`, `SD 1.5`, `SD 1.5 LCM`, `SD 1.5 Hyper`, `SD 2.0`, `SD 2.1` |
| SDXL | `SDXL 1.0`, `SDXL Lightning`, `SDXL Hyper` |
| Flux | `Flux.1 S`, `Flux.1 D`, `Flux.1 Krea`, `Flux.1 Kontext`, `Flux.2 D`, `Flux.2 Klein 9B/4B` |
| Anime | `Pony`, `Pony V7`, `Illustrious`, `NoobAI`, `Anima` |
| Z-Image | `ZImageBase`, `ZImageTurbo` |
| Other | `Qwen`, `Chroma`, `HiDream`, `AuraFlow`, `Hunyuan 1`, `Kolors`, `PixArt a/E`, `Lumina` |
| Video | `CogVideoX`, `Hunyuan Video`, `LTXV`, `LTXV2`, `LTXV 2.3`, `Mochi`, `Wan Video 1.3B t2v`, `Wan Video 14B t2v`, `Wan Video 14B i2v 480p/720p`, `Wan Video 2.2 TI2V-5B/I2V-A14B/T2V-A14B`, `Wan Video 2.5 I2V/T2V` |
### Sort
- Models (Meilisearch): `Most Downloaded`, `Highest Rated`, `Most Collected`, `Most Comments`, `Most Tipped`, `Newest`, `Oldest`
- Models (REST API): `Highest Rated`, `Most Downloaded`, `Newest`
- Images/Videos: `Most Reactions`, `Most Comments`, `Most Collected`, `Newest`, `Oldest`
### Period
`AllTime`, `Year`, `Month`, `Week`, `Day`
### Browsing Level
`PG` (1), `PG-13` (2), `R` (4), `X` (8), `XXX` (16) — comma-separated for multiple, e.g. "X,XXX"
### Content Type
`image`, `video`
### NSFW Levels (legacy)
`None`, `Soft`, `Mature`, `X`
### Image Modifiers
`has_meta`, `made_on_site`, `originals_only`, `remixes_only` — boolean flags
### Image Filters
`tag` (e.g. "anime"), `base_model` (e.g. "Flux.1 D"), `tools` (e.g. "ComfyUI"), `techniques` (e.g. "txt2img")
### ComfyUI Folder Mapping
`Checkpoint` -> `checkpoints/`, `LORA`/`LoCon` -> `loras/`, `TextualInversion` -> `embeddings/`, `Controlnet` -> `controlnet/`, `VAE` -> `vae/`, `Upscaler` -> `upscale_models/`
## Known Quirks
1. **search_models via REST API: query + types/base_model = empty results**. Fixed in v0.2.0 — text search now uses Meilisearch which supports combining query with type/baseModel/tag/username filters. REST API fallback still has this limitation.
2. **search_models by username**: Most reliable search method. Always prefer `username="CreatorName"`.
3. **get_creators**: Civitai endpoint is slow (30s+) and may return 500. Use `search_models(username=...)` instead.
4. **"Most Reactions" sort cursor bug**: Returns null cursor, preventing pagination beyond page 1.
5. **License filters** (`allow_no_credit`, etc.): Civitai API may return 400.
6. **modelId ignored on /images endpoint**: Civitai API ignores `modelId` param — only `modelVersionId` works. Fixed in v0.2.1: `browse_images`, `get_model_images`, and `get_image_generation_data` now auto-resolve `model_id` to `model_version_id` (uses latest version). You can still pass `model_version_id` directly to target a specific version.
7. **browsingLevel**: Bitmask system (1=PG, 2=PG-13, 4=R, 8=X, 16=XXX). Undocumented but stable.
8. **content_type/tag/tools/techniques**: All undocumented API params but verified working 2026-03-24.
9. **get_tags**: No NSFW filter available. Returns generic tags (character, anime, woman...) without model counts. Cannot query "top NSFW tags" — use `browse_images(browsing_level="X,XXX")` and inspect tags on returned images instead.
## Environment Variables
```
CIVITAI_API_KEY — Civitai API key (NSFW access + higher rate limits)
CIVITAI_MCP_LANG — en (default) | ru
COMFYUI_MODELS_PATH — default ComfyUI models path for download_info
MEILISEARCH_KEY — Meilisearch search-only key (optional, has built-in default)
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!