欢迎光临
我们一直在努力

AI Agent + PyCharm MCP 连接器配置与自定义 ComfyUI 执行器实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

AI Agent + PyCharm MCP 连接器配置与自定义 ComfyUI 执行器实战

让 AI 助手真正操控 PyCharm 终端、运行 ComfyUI 工作流 —— 从官方 MCP 到自建连接器的完整记录

Comfy MCP 公测:把 Claude、Cursor、CodeX、Hermes 和 WorkBuddy 变成你的创意技术专家

Comfy Cloud MCP Server 抢先体验申请图文教程

QClaw 配置 Comfy Cloud MCP,只需简单几步

WorkBuddy 接入 Comfy Cloud MCP 完整实录:从 DNS 污染到 31 个工具全部启用

WorkBuddy + 本地 Comfy MCP 实战:用自然语言调生成你的第一张 AI 图片

WorkBuddy 连接本地 ComfyUI:从零到出图的保姆级教程

WorkBuddy + 本地 ComfyUI Wan2.1 文生视频实战:从连续报错到成功出片的完整踩坑记录

WorkBuddy + 本地 ComfyUI 完全使用手册:从出图到视频生成

WorkBuddy + 本地 ComfyUI MCP:免订阅费的自建方案

omfyUI MCP 115 工具全景解析:你的 AI Agent 到底能做什么

 




一、背景:为什么需要 PyCharm MCP?

在日常 ComfyUI 开发中,我的终端被切分成多个标签:

终端用途
终端 1 ComfyUI 服务(python main.py –port 8189 …)
终端 2 comfyui-mcp 服务器(npx -y comfyui-mcp –http –port 9100)
终端 3 Git 操作 / 代码调试

AI 助手(WorkBuddy / Cursor / Copilot 等)虽然能读文件、写代码,但 无法进入 PyCharm 的终端环境 执行命令。当需要重启 ComfyUI、切换启动参数、提交工作流测试时,要么我自己手动操作,要么让 AI 在独立 shell 中重新构建整个环境 —— 后者往往是失败的,因为独立 shell 不会继承 PyCharm 终端里已激活的 .venv 虚拟环境。

MCP(Model Context Protocol) 正好解决了这个问题。PyCharm 2025.2+ 版本内置了 MCP 服务器,允许外部 AI 工具通过标准协议调用 IDE 功能。




二、PyCharm MCP 配置步骤

2.1 在 PyCharm 中启用 MCP Server

设置(Ctrl+Alt+S)→ 工具 → MCP Server

关键操作:

  • 勾选 "启用 MCP Server"
  • 在 "客户端自动配置" 中找到 WorkBuddy,点击自动配置
  • 强烈推荐:勾选 "命令执行 → Brave 模式"
    • 全称:在无需确认的情况下运行 Shell 命令或运行配置
    • 不勾的话,每次执行命令 AI 都要弹窗等你点确认,效率极低
  • 勾选“启用 MCP 服务器”之后,界面会切换出配置菜单;

    往下滚动到菜单底部,找到“命令执行”选项并勾选。

    2.2 在 WorkBuddy 中信任连接器

    PyCharm 自动配置后,WorkBuddy 的 ~/.workbuddy/mcp.json 中会自动添加类似配置:

    json

    {
    "mcpServers": {
    "pycharm": {
    "url": "http://127.0.0.1:64462/sse",
    "disabled": false
    }
    }
    }

    然后进入 WorkBuddy → 连接器管理,找到 pycharm 条目,点击 "信任"。

    信任后是如下界面:

    2.3 验证连接

    信任后,WorkBuddy 会显示 pycharm 连接器拥有的工具数。此时可以看到 pycharm_execute_tool 一个通用入口,实际支持 48 个子命令。




    三、初次测试:踩坑记录

    ✅ 成功的测试

    python

    # 使用 venv Python 绝对路径,一切正常
    execute_terminal_command –command "H:/PythonProjects3/Win_ComfyUI/.venv/Scripts/python.exe –version"
    # 输出: Python 3.12.11 ✓

    execute_terminal_command –command "netstat -ano | findstr :8189"
    # 输出: 正确显示端口占用列表 ✓

    ❌ 失败的问题

    问题 1:不继承虚拟环境

    这是最大的坑。PyCharm MCP 的 execute_terminal_command 每次执行都会 启动一个全新的 shell 进程,不会继承你在 PyCharm 终端标签里已经激活的 .venv。这意味着:

    python

    # ❌ 这样不行!python 指向的是系统 Python,不是 venv 中的
    execute_terminal_command –command "python –version"

    # ✅ 必须用绝对路径
    execute_terminal_command –command "H:/PythonProjects3/Win_ComfyUI/.venv/Scripts/python.exe –version"

    问题 2:转义地狱

    当命令中包含嵌套的引号时,Windows CMD 的转义规则会让你崩溃:

    bash

    # ❌ 多重转义后语法错误
    curl.exe -X POST … -d "{\\\\"prompt\\\\":{\\\\"1\\\\":…}}"

    # ✅ 解决方案:写脚本文件,然后执行脚本
    python test_zimage.py

    问题 3:端口冲突

    旧的 MCP 服务器进程残留导致端口占用:

    Error: listen EADDRINUSE: address already in use 127.0.0.1:9100

    解决方案:用 PyCharm MCP 自己杀自己:

    python

    execute_terminal_command –command "taskkill /F /PID 84828"




    四、自定义连接器:comfyui-runner

    4.1 设计动机

    PyCharm MCP 的"每次新进程不继承 venv"问题是架构性的,无法在配置层面解决。我需要一个 天生就在 venv 环境中运行 的 MCP 服务器,专门处理 ComfyUI 相关的操作。

    4.2 技术选型

    方案优点缺点
    Node.js MCP 生态成熟 需要额外安装 npm 包
    Python mcp SDK 已在 venv 中(v1.24.0),零额外依赖 –
    Python fastmcp 更简洁的 API 轻量封装,底层同 mcp

    选择 Python mcp stdio 模式:启动时用 .venv/Scripts/python.exe 作为解释器,天然继承整个虚拟环境。

    4.3 架构设计

    ┌──────────────┐ stdio ┌───────────────────┐ REST API ┌──────────┐
    │ WorkBuddy │ ◄──────────► │ comfyui-runner MCP │ ◄────────────► │ ComfyUI │
    │ (AI 助手) │ JSON-RPC │ (server.py) │ HTTP :8189 │ :8189 │
    └──────────────┘ └───────────────────┘ └──────────┘
    │ │
    │ 信任一次后自动运行 │ 运行在 ComfyUI .venv 中
    │ │ 自动检测端口 → 8188/8189/8190
    ▼ ▼
    ~/.workbuddy/mcp.json H:/…/comfyui_mcp_runner/server.py

    4.4 提供的 8 个工具

    python

    # 1. execute_python – 在 venv 中执行 Python 代码
    execute_python(code="print('hello from venv')")

    # 2. execute_shell – 执行 Shell 命令(自动替换 python 为 venv Python)
    execute_shell(command="pip list | findstr torch")

    # 3. comfyui_status – 检查 ComfyUI 运行状态
    comfyui_status()
    # → {"status": "running", "version": "0.27.0", "port": 8189, …}

    # 4. comfyui_stop – 停止 ComfyUI
    comfyui_stop()

    # 5. comfyui_restart – 停止 + 启动
    comfyui_restart(extra_args="–use-pytorch-cross-attention")

    # 6. submit_workflow – 提交工作流并等待完成
    submit_workflow(workflow_json='{"1": {…}}', timeout=120)
    # → {"status": "completed", "images": [{"filename": "zimage_cat_00001_.png"}]}

    # 7. list_outputs – 列出生成图片
    list_outputs(count=10, prefix="zimage_cat")

    # 8. read_file – 读取项目文件
    read_file(path="test_zimage.py")

    4.5 核心代码

    python

    # server.py 核心结构
    from mcp.server import Server
    from mcp.server.stdio import stdio_server

    COMFYUI_DIR = Path(__file__).resolve().parent.parent
    VENV_PYTHON = COMFYUI_DIR / ".venv" / "Scripts" / "python.exe"

    server = Server("comfyui-runner")

    @server.call_tool()
    async def call_tool(name: str, arguments: dict):
    if name == "comfyui_status":
    # 自动扫描 8188/8189/8190 端口
    port = _get_comfyui_port()
    # 请求 system_stats API
    …
    elif name == "submit_workflow":
    # 提交 prompt → 轮询 history → 返回图片信息
    …

    async def main():
    async with stdio_server() as (read_stream, write_stream):
    await server.run(read_stream, write_stream, …)

    4.6 注册到 WorkBuddy

    在 ~/.workbuddy/mcp.json 中添加 stdio 类型的配置:

    json

    {
    "comfyui-runner": {
    "command": "H:/PythonProjects3/Win_ComfyUI/.venv/Scripts/python.exe",
    "args": ["H:/PythonProjects3/Win_ComfyUI/comfyui_mcp_runner/server.py"],
    "disabled": false
    }
    }

    关键点:command 是 解释器路径,args 是 脚本路径。WorkBuddy 会启动 解释器 脚本 的子进程,通过 stdio 进行 JSON-RPC 通信。

    4.7 comfyui-runner vs PyCharm MCP 互补策略

    对比维度comfyui-runnerPyCharm MCP
    venv 继承 ✅ 天生继承 ❌ 每次新进程
    Shell 命令 ✅ 自动路径替换 ⚠️ 需手动写绝对路径
    ComfyUI 工作流 ✅ 内置提交/轮询 ❌ 需手写 curl
    PyCharm 编辑器 ❌ 不支持 ✅ 打开文件/搜索/替换
    运行配置 ❌ 不支持 ✅ 执行 PyCharm 运行配置
    启动方式 自动(stdio) 需 PyCharm 保持运行
    适用场景 ComfyUI 运维、工作流测试 IDE 操作、代码编辑

    最佳实践:两者同时启用,WorkBuddy 会根据任务自动选择合适的连接器。




    五、Z-Image Turbo 工作流实测

    有了自定义连接器后,来实际测试一下 Z-Image Turbo 文生图。

    5.1 模型准备

    组件模型文件路径
    UNET z_image_turbo_bf16.safetensors models/diffusion_models/
    CLIP qwen_3_4b.safetensors models/clip/
    VAE z-image-ae.safetensors models/vae/

    注意:Z-Image Turbo 的 VAE 实际上复用了 Flux VAE,MD5 完全一致。可以用符号链接创建别名:

    powershell

    New-Item -ItemType SymbolicLink -Path "models/vae/z-image-ae.safetensors" -Target "models/vae/ae.safetensors"

    5.2 工作流结构

    json

    {
    "1": {"class_type": "UNETLoader", "inputs": {"unet_name": "z_image_turbo_bf16.safetensors", "weight_dtype": "default"}},
    "2": {"class_type": "CLIPLoader", "inputs": {"clip_name": "qwen_3_4b.safetensors", "type": "qwen_image"}},
    "3": {"class_type": "VAELoader", "inputs": {"vae_name": "z-image-ae.safetensors"}},
    "4": {"class_type": "TextEncodeZImageOmni", "inputs": {"clip": ["2",0], "prompt": "…", "auto_resize_images": true, "vae": ["3",0]}},
    "5": {"class_type": "EmptyLatentImage", "inputs": {"width": 1024, "height": 1024, "batch_size": 1}},
    "6": {"class_type": "KSampler", "inputs": {"model": ["1",0], "positive": ["4",0], "negative": ["4",0], "latent_image": ["5",0], "seed": 42, "steps": 4, "cfg": 1.0, "sampler_name": "euler", "scheduler": "normal"}},
    "7": {"class_type": "VAEDecode", "inputs": {"samples": ["6",0], "vae": ["3",0]}},
    "8": {"class_type": "SaveImage", "inputs": {"filename_prefix": "zimage_cat", "images": ["7",0]}}
    }

    5.3 关键踩坑

    坑 1:TextEncodeZImageOmni 只有 1 个输出

    通过 /object_info/TextEncodeZImageOmni API 查询确认:这个节点只输出 一个 CONDITIONING(索引 0),不像 SDXL 的 CLIPTextEncode 那样输出 positive + negative 两个。所以 positive 和 negative 都要接到 ["4", 0]。

    坑 2:–use-flash-attention 导致噪声图

    第一次测试发现输出全是噪声。排查过程:

  • 换了 3 个 VAE(qwen_image_vae → flux_vae → z-image-ae)→ 问题依旧
  • 换了采样参数(euler_ancestral/beta, euler/normal, euler/simple)→ 问题依旧
  • MD5 对比确认 VAE 文件正确 → 问题依旧
  • 根因:ComfyUI 启动参数中的 –use-flash-attention 与 Z-Image Turbo 的注意力实现不兼容,导致数值精度异常
  • 解决方案:重启 ComfyUI,去掉 –use-flash-attention,或显式指定 –use-pytorch-cross-attention。

    5.4 测试结果

    参数组合耗时结果
    euler + normal, 4 steps, seed=42 ~21s ⭐ 最佳:猫可识别,局部轻微伪影
    euler_ancestral + beta, 8 steps, seed=54321 ~9s ❌ 伪影严重
    euler + simple, 8 steps, seed=77777 ~9s ❌ 严重色块/条纹
    euler + normal, 4 steps, seed=99999 ~6s ⚠️ 伪影明显

    结论:去掉 –use-flash-attention 后不再出纯噪声图,但 Z-Image Turbo 在当前环境下 仍不够稳定,对 seed 和 scheduler 高度敏感。euler + normal, 4 steps 是最佳组合,但无法保证每次都干净。

    进一步优化方向:

    • 用 –use-pytorch-cross-attention 显式启动再测
    • 确认 z_image_turbo_bf16.safetensors 文件完整性(MD5 校验)

    六、总结:MCP 连接器选型指南

    经过这次完整实践,总结出 MCP 连接器的 三层金字塔 架构:

    ┌──────────────────┐
    │ 自定义 MCP 服务器 │ ← 最高控制力,专用场景
    │ (comfyui-runner) │
    ├──────────────────┤
    │ IDE MCP 连接器 │ ← 中等控制力,IDE 操作
    │ (PyCharm MCP) │
    ├──────────────────┤
    │ 第三方 MCP 服务 │ ← 即开即用,功能固定
    │ (comfyui-local) │
    └──────────────────┘

    选型建议:

    场景推荐连接器
    日常生图 / 查模型 comfyui-local(115 工具,即开即用)
    重启 ComfyUI / 改启动参数 comfyui-runner(天生 venv 环境)
    编辑代码 / 搜索文件 pycharm(IDE 深度集成)
    提交自定义工作流 comfyui-runner(内置轮询等待)
    ComfyUI 崩溃恢复 comfyui-runner(stop + restart 一键)

    核心教训:

  • stdio 比 SSE 更可靠:自定义 MCP 用 stdio 传输,WorkBuddy 自动管理进程生命周期,不存在端口冲突
  • venv 环境是根本:任何需要在特定 Python 环境中执行的操作,都应该用该环境的解释器启动 MCP 服务器
  • 互补 > 替代:三个连接器各有所长,同时开启让 AI 自动选择合适的工具
  • 写脚本比写转义好:Windows CMD 的引号转义是噩梦,复杂操作写 .py 脚本然后执行

  • 附录:完整文件清单

    文件用途
    comfyui_mcp_runner/server.py 自定义 MCP 服务器源码(9 个工具)
    ~/.workbuddy/mcp.json MCP 连接器配置文件
    test_zimage.py Z-Image Turbo 工作流测试脚本

    本文为 ComfyCloudMCP 系列第 10 篇文章 上一篇:115 个 ComfyUI MCP 工具全景解析 环境:Windows 11 + PyCharm 2025.2 + ComfyUI v0.27.0 + Python 3.12 + RTX 3090

    赞(0)
    未经允许不得转载:171主机测评 » AI Agent + PyCharm MCP 连接器配置与自定义 ComfyUI 执行器实战
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址