本项目提供了一个集成Stable Diffusion图像生成能力的模型上下文协议(MCP)服务器,使AI代理能够请求并接收生成的图像。
该项目基于Block的Goose自定义扩展教程。
创建一个虚拟环境,并强制使用.venv:
virtualenv .venv
激活虚拟环境:
source .venv/bin/activate
安装MCP包(用于Goose集成):
pip install -e .
MCP服务器包括集成的图像生成服务。你可以通过一条命令启动两者:
标准模式:
source .venv/bin/activate # 激活你的虚拟环境
export IMAGE_GEN_DIR=/绝对路径/到文件夹 # 设置生成图像的目标文件夹
image-gen-mcp
开发模式与FastMCP Inspector: 打开两个终端:
终端1
source .venv/bin/activate # 激活你的虚拟环境
export IMAGE_GEN_DIR=/绝对路径/到文件夹 # 设置生成图像的目标文件夹
image-gen-mcp # 启动图像生成服务(以及一个我们不会使用的MCP服务器)
终端2
source .venv/bin/activate # 激活你的虚拟环境
export IMAGE_GEN_DIR=/绝对路径/到文件夹 # 设置生成图像的目标文件夹
mcp dev src/image_gen_mcp/server.py # 使用Inspector启动MCP服务器
注意:仅在使用开发模式时,图像生成服务必须单独启动。
这将启动带有FastMCP Inspector的MCP服务器,它提供了:
使用FastMCP Inspector:
generate_image工具图像生成服务的自定义端口:
source .venv/bin/activate # 激活你的虚拟环境
export IMAGE_GEN_DIR=/绝对路径/到文件夹 # 设置生成图像的目标文件夹
image-gen-mcp --port 5001
通过发送POST请求到图像生成服务来生成图像:
curl -X POST http://localhost:5000/generate \
-H "Content-Type: application/json" \
-d '{"prompt": "日落时分的未来城市景观"}'
响应将包含访问生成图像的URL以及元数据:
{
"type": "image",
"format": "png",
"url": "http://localhost:5000/images/123e4567-e89b-12d3-a456-426614174000.png",
"width": 512,
"height": 512,
"filename": "123e4567-e89b-12d3-a456-426614174000.png",
"filepath": "generated_images/123e4567-e89b-12d3-a456-426614174000.png",
"mime_type": "image/png",
"prompt": "日落时分的未来城市景观",
"alt_text": "由AI生成的图像:日落时分的未来城市景观"
}
你可以通过返回的image_url直接访问生成的图像。
src/image_gen_mcp/ - 包含实现的包目录
server.py - MCP服务器实现generator.py - 图像生成服务__init__.py - 包初始化和CLI入口点__main__.py - 允许作为模块运行的包要在Goose中添加此MCP服务器作为扩展:
设置 > 扩展 > 添加。类型设置为标准IO。命令字段中,提供可执行文件的绝对路径:
uv run /完整路径/到你的项目/.venv/bin/image-gen-mcp
IMAGE_GEN_DIR,并选择一个文件夹以存储生成的图像一旦集成完成,你可以在Goose中使用图像生成工具,只需要求它根据特定提示生成图像即可。
使用OpenAI GPT-4o时可以立即工作。
使用Ollama可以在本地运行所有内容,尝试了几种模型后,唯一能工作的模型是mistral-small3.1。
即使在高端MacBook Pro上,mistral-small3.1的响应速度也比OpenAI GPT-4o慢得多。
两个服务都集成在一个应用程序中:
图像生成服务(src/image_gen_mcp/generator.py)
MCP服务器(src/image_gen_mcp/server.py)
使用Ctrl+C停止两个服务,因为它们现在在同一进程中运行。