Grok Image MCP

Servidor MCP para generación y edición de imágenes con Grok

Documentación

mcp-server-grok-image

Un servidor MCP (Model Context Protocol) para la API de generación de imágenes de xAI Grok. Construido en Rust, expone la generación y edición de imágenes como herramientas MCP.

Se comunica a través de stdio usando JSON-RPC 2.0, como todos los servidores MCP.

Herramientas

HerramientaDescripción
generate_imageGenera una imagen a partir de un prompt de texto
edit_imageEdita una imagen existente usando instrucciones en lenguaje natural
headshotRetrato corporativo a partir de un retrato fuente (con relleno a 3:2 + prompt de edición fijo)
list_stylesLista los estilos de imagen disponibles para usar con generate_image

generate_image

Genera una imagen a partir de una descripción de texto.

Parámetros:

NombreTipoObligatorioDescripción
promptstringsíDescripción de texto de la imagen deseada
modelstringnoModelo a usar (predeterminado: grok-imagine-image-2.0)
nintegernoNúmero de imágenes a generar (1-10, predeterminado 1)
aspect_ratiostringnoRelación de aspecto: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2, 19.5:9, 9:19.5, 20:9, 9:20, 21:9, 5:2, auto
resolutionstringnoResolución de salida: 1k (~1024px, predeterminado) o 2k (~2048px)
qualitystringnolow, medium o auto (solo 2.0; omitido = auto. Auto actualmente sirve low para generación)
response_formatstringnoFormato de salida: url (predeterminado, temporal) o b64_json
stylestringnoNombre del estilo a aplicar (usa list_styles para ver las opciones)

Cuando se establece un estilo, el prompt se envuelve en la plantilla del estilo. Por ejemplo, con style: "watercolor" y prompt: "a cat on a roof", la API recibe "a cat on a roof, as a watercolor painting". Evita incluir lenguaje de estilo en el prompt mismo cuando uses este parámetro.

La respuesta incluye el prompt resuelto para que puedas ver exactamente lo que se envió a la API.

edit_image

Edita una imagen existente usando instrucciones en lenguaje natural.

Parámetros:

NombreTipoObligatorioDescripción
image_urlstringno*URL, data URI en base64 o ruta de archivo local de la imagen fuente. Mutuamente excluyente con images.
imagesstring[]no*Hasta 5 imágenes fuente para edición multi-imagen. Refiérelas en el prompt como <IMAGE_0>, <IMAGE_1>, …
promptstringsíInstrucciones de edición en lenguaje natural
modelstringnoModelo a usar (predeterminado: grok-imagine-image-2.0)
nintegernoNúmero de variaciones a generar (1-10, predeterminado 1)
aspect_ratiostringnoMismo conjunto que generate_image, incluyendo 21:9 y 5:2
resolutionstringnoResolución de salida: 1k (~1024px, predeterminado) o 2k (~2048px)
qualitystringnolow, medium o auto (solo 2.0; omitido = auto. Auto actualmente sirve medium para edición)
response_formatstringnoFormato de salida: url (predeterminado, temporal) o b64_json

* Proporciona image_url o images.

Nota: El parámetro style no está disponible intencionalmente en edit_image — los prompts de edición son instrucciones (p. ej., "elimina el fondo"), no descripciones, por lo que envolverlos en plantillas de estilo produciría resultados sin sentido.

headshot

Corrección de retrato solo expansión (equivalente al pipeline de Gemini en Imagine). No reencuadra la pose, no recorta el cabello ni rediseña a la persona.

  1. Redimensiona la fuente completa (ancho predeterminado 550px) — nunca recorta
  2. Añade barras blancas a los lados hasta el ancho del lienzo (predeterminado 780)
  3. Llama a grok-imagine-image-2.0 con calidad media: completa los hombros cortados si es necesario; limpia el fondo blanco sólido; conserva cara/cabello/pose/ropa/logotipos

Sin recorte / sin rembg / sin alfa transparente — mismo trabajo que la habilidad original de retrato de Gemini.

Parámetros:

NombreTipoObligatorioDescripción
imagestringsíRuta local, URL http(s) o URI data:
clothingstringnoSolo para relleno de hombros faltantes
notesstringnoDetalles que deben conservarse (gafas, texto exacto del logotipo, …)
pronounstringnohis / her / their (predeterminado their)
gravitystringnoGravedad del relleno lateral (North predeterminado)
content_widthintegernoAncho de redimensionado antes del relleno (predeterminado 550)
canvas_widthintegernoAncho con relleno (predeterminado 780)
resolutionstringno1k o 2k (predeterminado 2k)
output_pathstringnoRuta final opcional (también bajo save_dir)
nintegernoVariaciones (1–10, predeterminado 1)
qualitystringnolow / medium / auto (predeterminado medium)
modelstringnoPredeterminado grok-imagine-image-2.0

Intermedio con relleno: save_dir/headshot-padded_*.jpg.

list_styles

Devuelve todos los estilos de imagen disponibles con su nombre, descripción y plantilla de prompt. Sin parámetros.

Estilos Integrados

EstiloDescripción
watercolorEstilo de pintura a acuarela
oil-paintingPintura al óleo con pinceladas visibles
pencil-sketchBoceto detallado a lápiz
pixel-artArte pixelado retro
animeIlustración estilo anime
pop-artEstilo pop art audaz
art-nouveauArt nouveau con líneas orgánicas fluidas
cinematicFotografía cinematográfica con iluminación dramática
portraitFotografía de retrato profesional
macroFotografía macro extrema
aerialFotografía aérea con dron
studioFotografía de estudio sobre fondo limpio
noirEstilo noir cinematográfico oscuro
vintageFotografía vintage desvanecida

Modelos Disponibles

ModeloNotas
grok-imagine-image-2.0 (predeterminado)quality opcional (low / medium / auto), hasta 5 referencias de edición, 21:9 y 5:2. Auto actualmente sirve low para generación y medium para edición.
grok-imagine-image1.0. Aún disponible; sin parámetro quality.
grok-imagine-image-qualitySe retira el 2026-11-02. Después de eso, el slug es servido por grok-imagine-image-2.0 a quality: low ($0.01 menos por imagen que el modelo de calidad).

Requisitos previos

  • Rust (edición 2024)
  • Una clave de API de xAI de console.x.ai

Configuración

Crea el archivo de configuración:

mkdir -p ~/.config/mcp-server-grok-image

Crea ~/.config/mcp-server-grok-image/config.toml:

api_key = "xai-..."

Estilos Personalizados

Añade estilos personalizados a tu archivo de configuración. Los estilos personalizados con el mismo nombre que uno integrado lo sobrescribirán.

api_key = "xai-..."

[[styles]]
name = "my-style"
description = "My custom look"
template = "{prompt}, in my custom style"

[[styles]]
name = "watercolor"
description = "My watercolor variant"
template = "{prompt}, as a loose expressive watercolor with ink outlines"

Las plantillas deben contener el marcador de posición {prompt}. Cualquier estilo personalizado que no lo tenga se omitirá con una advertencia al inicio.

Compilación

cargo build --release

Esto produce target/release/mcp-server-grok-image.

Para desarrollo:

cargo build              # debug build
cargo run                # run in dev mode
RUST_LOG=debug cargo run # run with debug logging

Configuración MCP

Añade a la configuración de tu Claude Desktop (~/.config/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "grok-image": {
      "command": "/path/to/mcp-server-grok-image"
    }
  }
}

Estructura del Proyecto

src/
  main.rs      process entry (stdio MCP)
  config.rs    TOML / env config
  styles.rs    built-in + custom styles
  grok.rs      xAI request/response types
  params.rs    MCP tool params + validation
  image_io.rs  data URIs, local files, mime, fetch
  headshot.rs  letterbox pad + expand prompt
  server.rs    MCP tools and Grok HTTP

Licencia

MIT