使用说明
ComfyUI集成服务(适用于LM Studio/LLM代理)
允许任何LLM代理执行以下操作的小型本地HTTP服务:
- 提交ComfyUI工作流模板,
- 等待世代结束,
- 接收工件元数据和直接文件URL。
这是有意通用的,因此它适用于LM Studio插件/工具和其他代理框架。
它的作用
- 调用本地ComfyUI API(
/prompt,/history/{prompt_id},/view,/ws). - 支持带有占位符的工作流模板,如
{{prompt}}. - 可以从磁盘加载工作流,也可以在请求JSON中内联一个工作流。
- 返回生成的工件(图像文件名+URL)。
需求
- Python 3.10+
- 本地ComfyUI正在运行(默认值:
http://127.0.0.1:8188)
设置
cd $PROJECT_ROOT
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
跑
source .venv/bin/activate
export COMFYUI_BASE_URL=http://127.0.0.1:8188
export WORKFLOW_ROOT=./workflows
uvicorn app:app --host 127.0.0.1 --port 8099
打开API文档:
API
POST /generate
单次呼叫提交+等待。
例子:
curl -X POST http://127.0.0.1:8099/generate \
-H "Content-Type: application/json" \
-d '{
"workflow_path": "text2img.template.json",
"inputs": {
"prompt": "a cinematic photo of a red fox in snow",
"negative_prompt": "blurry, low quality",
"checkpoint": "v1-5-pruned-emaonly.safetensors",
"seed": 123456789,
"steps": 25,
"cfg": 7.5,
"width": 768,
"height": 768,
"filename_prefix": "lmstudio"
},
"timeout_sec": 240,
"poll_interval_sec": 1
}'
答复包括:
prompt_idartifacts[]随着filename,subfolder,type,url
POST /generate/stream
使用服务器发送事件(SSE)的流模式。内部使用ComfyUI WebSocket(/ws)而不是历史民意调查。
例子:
curl -N -X POST http://127.0.0.1:8099/generate/stream \
-H "Content-Type: application/json" \
-d '{
"workflow_path": "text2img.template.json",
"inputs": {
"prompt": "a cinematic photo of a red fox in snow",
"negative_prompt": "blurry, low quality",
"checkpoint": "v1-5-pruned-emaonly.safetensors",
"seed": 123456789,
"steps": 25,
"cfg": 7.5,
"width": 768,
"height": 768,
"filename_prefix": "lmstudio"
},
"timeout_sec": 240
}'
SSE事件类型:
submittedprogresscompletederror
为了 /generate/stream, timeout_sec 是一个不活动超时:只有在此期间没有流更新到达时,请求才会停止。
POST /submit + POST /result/{prompt_id}
两步异步流:
- 提交并获取
prompt_id. - 当你的代理人准备好了,等待结果。
模板占位符
任何完全匹配的字符串值 {{name}} 被替换为 inputs.name.
例子:
{
"text": "{{prompt}}",
"width": "{{width}}"
}
如果中缺少占位符 inputs,API返回 400.
LM工作室/代理集成
添加一个HTTP工具/操作,调用:
POST http://127.0.0.1:8099/generate
工具输入模式可以是:
{
"type": "object",
"properties": {
"workflow_path": { "type": "string" },
"inputs": { "type": "object" },
"timeout_sec": { "type": "integer", "default": 180 }
},
"required": ["workflow_path", "inputs"]
}
由于此服务公开了OpenAPI,许多框架可以直接从以下位置导入工具规范:
MCP服务器(为简单起见,建议使用)
此回购还包括一个MCP服务器,该服务器使用与HTTP API相同的共享核心:
$PROJECT_ROOT/mcp_server.py- 暴露的MCP工具:
comfy_generatecomfy_generate_streamcomfy_list_workflowscomfy_required_inputs
comfy_required_inputs 返回两者 required_inputs 和 required_input_details (name + description).
comfy_generate_stream 发出实时MCP进度通知(针对支持进度令牌的客户端)并返回最终工件。
运行MCP服务器
cd $PROJECT_ROOT
source .venv/bin/activate
pip install -r requirements.txt
export COMFYUI_BASE_URL=http://127.0.0.1:8188
export WORKFLOW_ROOT=./workflows
python mcp_server.py
LM Studio MCP配置(标准输入)
在LM Studio中添加指向以下内容的MCP服务器条目:
- 命令:
python - args:
["$PROJECT_ROOT/mcp_server.py"] - 环境:
COMFYUI_BASE_URL=http://127.0.0.1:8188WORKFLOW_ROOT=$PROJECT_ROOT/workflows
示例呼叫有效载荷 comfy_generate:
{
"workflow_path": "text2img.template.json",
"inputs": {
"prompt": "an ultra-detailed mountain landscape at sunrise",
"negative_prompt": "blurry, low quality",
"checkpoint": "v1-5-pruned-emaonly.safetensors",
"seed": 987654321,
"steps": 25,
"cfg": 7.5,
"width": 768,
"height": 768,
"filename_prefix": "lmstudio_mcp"
},
"timeout_sec": 240,
"poll_interval_sec": 1.0
}
备注
workflow_path仅限于以下文件WORKFLOW_ROOT.url值指向ComfyUI/view端点,因此运行代理的同一主机应能访问ComfyUI。
