返回市场
基于MCP的图像生成服务器

基于MCP的图像生成服务器

作者:aymec2 星标更新:2025-04-20

项目介绍

集成MCP接口的AI图像生成服务器

本项目提供了一个集成Stable Diffusion图像生成能力的模型上下文协议(MCP)服务器,使AI代理能够请求并接收生成的图像。
该项目基于Block的Goose自定义扩展教程

环境设置

  1. 创建一个虚拟环境,并强制使用.venv

    virtualenv .venv
    
  2. 激活虚拟环境:

    source .venv/bin/activate
    
  3. 安装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服务器,它提供了:

  1. http://127.0.0.1:6274上的Web界面,用于测试和调试
  2. 在端口6277上的代理服务器,用于转发MCP请求

使用FastMCP Inspector:

  1. 在浏览器中打开http://127.0.0.1:6274
  2. 使用交互式界面来:
    • 探索可用工具及其文档
    • 使用自己的提示测试generate_image工具
    • 查看请求/响应历史
    • 调试MCP服务器中的任何问题

图像生成服务的自定义端口:

source .venv/bin/activate  # 激活你的虚拟环境
export IMAGE_GEN_DIR=/绝对路径/到文件夹 # 设置生成图像的目标文件夹
image-gen-mcp --port 5001

直接API访问

通过发送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的集成

要在Goose中添加此MCP服务器作为扩展:

  1. 前往设置 > 扩展 > 添加
  2. 类型设置为标准IO
  3. 提供ID“image_generator”,名称“图像生成器”,并提供适当的描述。
  4. 命令字段中,提供可执行文件的绝对路径:
    uv run /完整路径/到你的项目/.venv/bin/image-gen-mcp
    
  5. 添加环境变量IMAGE_GEN_DIR,并选择一个文件夹以存储生成的图像

一旦集成完成,你可以在Goose中使用图像生成工具,只需要求它根据特定提示生成图像即可。

使用OpenAI GPT-4o时可以立即工作。
使用Ollama可以在本地运行所有内容,尝试了几种模型后,唯一能工作的模型是mistral-small3.1
即使在高端MacBook Pro上,mistral-small3.1的响应速度也比OpenAI GPT-4o慢得多。

服务架构

两个服务都集成在一个应用程序中:

  1. 图像生成服务(src/image_gen_mcp/generator.py)

    • 使用Stable Diffusion处理实际的图像生成
    • 提供简单的HTTP API进行图像生成
    • 返回图像URL、尺寸和元数据
    • 包括一个直接端点来提供生成的图像
    • 默认运行在端口5000(可通过--port自定义)
    • 在同一进程内的独立线程中运行
  2. MCP服务器(src/image_gen_mcp/server.py)

    • 为AI代理提供标准化的MCP接口
    • 将请求转发给集成的图像生成服务
    • 返回一个格式化的MCP图像对象,包含URL和元数据

停止服务

使用Ctrl+C停止两个服务,因为它们现在在同一进程中运行。