Z-Image Turbo–MCP服务器
一个HTTP模型上下文协议(MCP)服务器,在一个简单的MCP工具后面托管扩散器Z-Image-Turbo管道。使用NVIDIA GPU加速在Docker中运行。
服务器公开了一个工具:
generate_image(prompt: str) -> list[Image | str]
它返回一个PNG图像列表(MCP图像类型,原始PNG字节)和一条短消息。图像大小、步长和输出数量通过环境变量进行控制。
先决条件
- 码头工人
- 配备最新驱动程序的NVIDIA GPU
- NVIDIA容器工具包(将GPU传递到容器中)
快速入门(Docker Compose)
构建并启动服务器:
docker compose up --build -dMCP HTTP端点将在以下位置可用:
- 基本URL:
http://localhost:8000 - MCP路径:
http://localhost:8000/mcp
注意:这是一个MCP服务器,而不是一个REST API。使用MCP客户端(见下文)或附带的Python客户端调用工具。
要查看日志或停止:
docker compose logs -f
docker compose down配置
所有配置都是通过环境变量处理的(请参见 compose.yaml).默认值应用于 server.py.
ENABLE_CPU_OFFLOAD(默认值:true)
- true:将层卸载到CPU以减少VRAM使用(速度较慢,内存传输更多) - false:将模型完全放在GPU上以获得最大速度
DEFAULT_HEIGHT(默认值:1024)DEFAULT_WIDTH(默认值:1024)DEFAULT_STEPS(默认值:9)DEFAULT_SEED(可选;如果设置,输出是可重复的)DEFAULT_NUM_IMAGES(默认值:4)–每个提示生成的图像数量
其他相关作曲设置:
- Hugging Face缓存通过绑定挂载持久化:
${HOME}/.cache/huggingface:/root/.cache/huggingface - GPU通过以下方式保留
deploy.resources.reservations.devices使用NVIDIA驱动程序。
使用附带的Python客户端
您可以在中使用提供的客户端测试服务器 my_client.py。它连接到 http://localhost:8000/mcp 使用FastMCP Python客户端并调用 generate_image 工具。
服务器启动后,在本地(容器外)运行它:
python3 my_client.py如果你想保存返回的图像,你可以这样调整客户端:
import asyncio
from fastmcp import Client
from fastmcp.utilities.types import Image
client = Client("http://localhost:8000/mcp")
async def call_and_save(prompt: str):
async with client:
results = await client.call_tool("generate_image", {"prompt": prompt})
# Results is a list of Image objects (PNG bytes) and a trailing message string
img_idx = 0
for item in results:
if isinstance(item, Image):
with open(f"output_{img_idx}.png", "wb") as f:
f.write(item.data)
img_idx += 1
print(results[-1]) # e.g., "Generated N image(s) for prompt: ..."
asyncio.run(call_and_save("A futuristic cityscape at sunset"))MCP客户端集成
任何支持HTTP传输的MCP感知客户端都可以连接到 http://localhost:8000/mcp 并致电 generate_image 工具与单个 prompt 弦。图像大小、步长和批大小通过上面列出的环境变量(不是每次调用参数)进行控制。
引擎盖下面是什么?
server.py在上启动FastMCP HTTP服务器0.0.0.0:8000并缓慢地加载扩散器ZImagePipeline(Tongyi-MAI/Z-Image-Turbo).- CPU卸载可以通过以下方式切换
ENABLE_CPU_OFFLOAD. - GPU锁可确保一次只运行一代,以避免VRAM峰值。
故障排除
- 容器看不到GPU
- 确保安装了NVIDIA驱动程序和容器工具包。 - 在某些主机上,安装工具包后可能需要重新启动Docker。
- CUDA/驱动程序不匹配错误
- 该图像使用CUDA 12.8运行时。确保您的主机驱动程序支持CUDA 12。
- GPU内存不足(OOM)
- 集 ENABLE_CPU_OFFLOAD=true. - 减少 DEFAULT_NUM_IMAGES 和/或更低 DEFAULT_HEIGHT/DEFAULT_WIDTH.
- 首次请求缓慢
- 第一个提示将权重加载到内存中;后续通话更快。
- 拥抱人脸率限制或身份验证
- 如果您需要私人型号,请使用您的 huggingface 根据需要缓存和登录令牌。
开发说明
- Python deps被固定在
requirements.txt并安装在Docker镜像中。 - 该服务监听端口8000(在Compose中映射)。必要时进行调整。
