9.5 KiB
API 参考
ComfyUI-AnimaTool 提供三种 API 接入方式:
- MCP Server - Cursor/Claude 原生图片显示
- ComfyUI HTTP API - 随 ComfyUI 启动
- 独立 FastAPI Server - 可独立部署
MCP Tools
generate_anima_image
生成二次元/插画图片。
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
prompt_hint |
string | 否 | - | 人类可读的需求摘要 |
aspect_ratio |
string | 否 | - | 长宽比(如 16:9、9:16) |
width |
integer | 否 | - | 宽度(像素,16 的倍数,会覆盖 aspect_ratio) |
height |
integer | 否 | - | 高度(像素,16 的倍数,会覆盖 aspect_ratio) |
quality_meta_year_safe |
string | 是 | - | 质量/年份/安全标签(必须含 safe/sensitive/nsfw/explicit) |
count |
string | 是 | - | 人数(1girl、2girls、1boy) |
character |
string | 否 | "" |
角色名 |
series |
string | 否 | "" |
作品名 |
appearance |
string | 否 | "" |
外观描述(发色、眼睛等) |
artist |
string | 是 | - | 画师(必须带 @,如 @fkey) |
style |
string | 否 | "" |
画风 |
tags |
string | 是 | - | Danbooru 标签(逗号分隔) |
nltags |
string | 否 | "" |
自然语言补充 |
environment |
string | 否 | "" |
环境/光影 |
neg |
string | 是 | - | 负面提示词 |
steps |
integer | 否 | 25 | 步数 |
cfg |
number | 否 | 4.5 | CFG |
sampler_name |
string | 否 | er_sde |
采样器 |
seed |
integer | 否 | 随机 | 种子 |
repeat |
integer | 否 | 1 | 提交几次独立生成任务(queue 模式,每次独立随机 seed)。范围 1-16 |
batch_size |
integer | 否 | 1 | 单次任务内生成几张(latent batch,更吃显存)。范围 1-4 |
loras |
array | 否 | [] |
追加 LoRA(仅 UNET)。每项 {"name": "...", "weight": 1.0},name 必须与 /models/loras 返回值一致 |
总生成张数 =
repeat×batch_size。推荐使用repeat(默认方式,显存友好)。
返回
MCP Server 返回:
ImageContent: 图片(base64 编码,原生显示)TextContent: 历史记录提示(如已保存为历史记录 #12。可用 reroll_anima_image(source="last") 重新生成。)
list_anima_models
查询 ComfyUI 当前可用的模型文件列表。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model_type |
string | 是 | loras / diffusion_models / vae / text_encoders |
当
model_type=loras时,强制只返回存在同名.jsonsidecar 元数据文件的 LoRA。
返回
TextContent:JSON 格式的模型列表。
list_anima_history
查看最近的图片生成历史记录。
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
limit |
integer | 否 | 5 | 返回最近几条(1-50) |
返回
TextContent:每行一条记录摘要,格式:
#12 [2026-02-06 17:30] @fkey | 1girl, white hair, blue eyes | seed:42 | 872x1160
#11 [2026-02-06 17:28] @ciloranko | 2girls, school uniform | seed:78923 | 1024x1024
reroll_anima_image
基于历史记录重新生成图片。引用一条历史记录作为基础参数,可选覆盖部分参数。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
source |
string | 是 | "last"(最近一条)或历史 ID(如 "12" 或 "#12") |
| 其他 | - | 否 | 所有 generate_anima_image 的参数均可作为覆盖项 |
seed默认自动随机(出不同画面)。手动指定 seed 可复现相同画面。repeat同样可用,如reroll_anima_image(source="last", repeat=3)一次出 3 张。
典型用法
| 场景 | 调用 |
|---|---|
| 再 roll 一次 | reroll_anima_image(source="last") |
| 再来 3 张 | reroll_anima_image(source="last", repeat=3) |
| 换个画师再来 | reroll_anima_image(source="last", artist="@ciloranko") |
| 回溯第 3 条记录 | reroll_anima_image(source="3") |
| 保持 seed 不变加 LoRA | reroll_anima_image(source="last", seed=原seed, loras=[...]) |
返回
与 generate_anima_image 一致(图片 + 历史记录提示)。
generate_qwen_image
使用 QwenEdit 引擎生成/编辑图片,支持自然语言、0参考文生图、局部修图换装。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
character_and_action |
string | 【生图必填】角色与主要动作的描述。局部修改时若不改动作请留空。 |
appearance_details |
string | 【生图必填】角色的外貌与服装细节。修图时如需强制锚定特征填入此处,否则留空。 |
environment_and_lighting |
string | 【生图必填】背景环境、光影描述。修图时若不改背景必须留空。 |
style_and_quality |
string | 【全局选填】画质词或整体画风(如 '8k,电影级光影')。 |
edit_actions |
array | 【修图必填】局部修改指令数组。纯生图必须留空。 |
preserve_constraints |
string | 【修图核心锁】强制防崩坏指令,如 '保持人物脸部特征和背景不变'。 |
render_text |
string | 【选填】需要 Qwen 在画面中精准生成的文字。 |
base_image |
string | 【选填】底图/原图的本地绝对路径(⚠️受MCP限制必须是绝对路径。独立 PyPI 包暂不支持 QwenEdit)。传入后切换为图生图模式(Picture 1)。 |
reference_images |
array | 【选填】参考图本地绝对路径数组(最多2张)。依次映射为 Picture 2, Picture 3。 |
aspect_ratio |
string | 【选填】生图/扩图长宽比(如 '16:9')。有底图时默认跟随原图比例。 |
seed |
integer | 【选填】随机种子。 |
repeat |
integer | 【选填】独立任务重复次数,每次随机 seed。 |
返回
MCP Server 返回:
ImageContent: 图片(原生显示)TextContent: 保存路径与 Qwen 最终发送的指令。
ComfyUI HTTP API
随 ComfyUI 启动自动注册以下路由。
GET /anima/health
健康检查。
响应:
{
"status": "ok",
"comfyui_url": "http://127.0.0.1:8188",
"tool_root": "/path/to/ComfyUI-AnimaTool"
}
GET /anima/schema
获取 Tool Schema(JSON Schema 格式)。
响应:
{
"name": "generate_anima_image",
"description": "...",
"parameters": { ... }
}
GET /anima/knowledge
获取专家知识库。
响应:
{
"anima_expert": "...",
"artist_list": "...",
"prompt_examples": "..."
}
POST /anima/generate
执行图片生成。支持 repeat 参数一次提交多个独立任务。
请求体:
{
"aspect_ratio": "3:4",
"quality_meta_year_safe": "masterpiece, best quality, newest, year 2024, safe",
"count": "1girl",
"artist": "@fkey, @jima",
"tags": "upper body, smile, white dress",
"neg": "worst quality, low quality, blurry, bad hands, nsfw",
"repeat": 1
}
响应:
{
"success": true,
"prompt_id": "uuid-xxx",
"positive": "masterpiece, best quality, ...",
"negative": "worst quality, ...",
"seed": 1234567890,
"width": 872,
"height": 1160,
"history_id": 12,
"images": [
{
"filename": "AnimaTool__00001_.png",
"subfolder": "",
"type": "output",
"view_url": "http://127.0.0.1:8188/view?filename=...",
"saved_path": "/path/to/outputs/AnimaTool__00001_.png",
"base64": "...",
"mime_type": "image/png",
"data_url": "data:image/png;base64,...",
"markdown": ""
}
]
}
repeat > 1时,响应为{"success": true, "results": [...]},每项结构同上。
GET /anima/history
查看最近生成历史。
参数:?limit=5(默认 5,范围 1-50)
响应:
{
"count": 2,
"records": [
{
"id": 12,
"timestamp": "2026-02-06T17:30:00",
"params": { "artist": "@fkey", "tags": "...", "..." : "..." },
"positive_text": "masterpiece, ...",
"seed": 1234567890,
"width": 872,
"height": 1160
}
]
}
POST /anima/reroll
基于历史记录重新生成。
请求体:
{
"source": "last",
"overrides": {
"artist": "@ciloranko",
"repeat": 3
}
}
source:"last"或历史 ID(如"12")。overrides中的参数会覆盖原始记录。 seed 不指定则自动随机。
响应:与 /anima/generate 一致。
独立 FastAPI Server
启动
cd ComfyUI-AnimaTool
pip install fastapi uvicorn
python -m servers.http_server
默认运行在 http://127.0.0.1:8000。
路由
| 路由 | 方法 | 说明 |
|---|---|---|
/ |
GET | 欢迎信息 |
/health |
GET | 健康检查 |
/schema |
GET | Tool Schema |
/knowledge |
GET | 专家知识 |
/generate |
POST | 执行生成(支持 repeat) |
/history |
GET | 查看生成历史 |
/reroll |
POST | 基于历史重新生成 |
/docs |
GET | Swagger UI |
Swagger UI
访问 http://127.0.0.1:8000/docs 查看交互式 API 文档。
CLI 工具
cd ComfyUI-AnimaTool
python -m servers.cli --help
示例
python -m servers.cli \
--aspect-ratio "3:4" \
--quality "masterpiece, best quality, newest, year 2024, safe" \
--count "1girl" \
--artist "@fkey, @jima" \
--tags "upper body, smile, white dress" \
--neg "worst quality, low quality, blurry"