Grok Image MCP

MCP server for Grok image generation and editing

Documentation

mcp-server-grok-image

An MCP (Model Context Protocol) server for xAI's Grok image generation API. Built in Rust, exposes image generation and editing as MCP tools.

Communicates via stdio using JSON-RPC 2.0, like all MCP servers.

Tools

ToolDescription
generate_imageGenerate an image from a text prompt
edit_imageEdit an existing image using natural language instructions
list_stylesList available image styles for use with generate_image

generate_image

Generate an image from a text description.

Parameters:

NameTypeRequiredDescription
promptstringyesText description of the desired image
modelstringnoModel to use (default: grok-imagine-image)
nintegernoNumber of images to generate (1-10, default 1)
aspect_ratiostringnoAspect ratio: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2, auto, etc.
resolutionstringnoOutput resolution: 1k (~1024px, default) or 2k (~2048px)
response_formatstringnoOutput format: url (default, temporary) or b64_json
stylestringnoStyle name to apply (use list_styles to see options)

When a style is set, the prompt is wrapped in the style's template. For example, with style: "watercolor" and prompt: "a cat on a roof", the API receives "a cat on a roof, as a watercolor painting". Avoid including style language in the prompt itself when using this parameter.

The response includes the resolved prompt so you can see exactly what was sent to the API.

edit_image

Edit an existing image using natural language instructions.

Parameters:

NameTypeRequiredDescription
image_urlstringyesURL, base64 data URI, or local file path of the source image
promptstringyesNatural language edit instructions
modelstringnoModel to use (default: grok-imagine-image)
nintegernoNumber of variations to generate (1-10, default 1)
resolutionstringnoOutput resolution: 1k (~1024px, default) or 2k (~2048px)
response_formatstringnoOutput format: url (default, temporary) or b64_json

Note: The style parameter is intentionally not available on edit_image -- edit prompts are instructions (e.g. "remove the background"), not descriptions, so wrapping them in style templates would produce nonsense.

list_styles

Returns all available image styles with their name, description, and prompt template. No parameters.

Built-in Styles

StyleDescription
watercolorWatercolor painting style
oil-paintingOil painting with visible brushstrokes
pencil-sketchDetailed pencil sketch
pixel-artRetro pixel art
animeAnime style illustration
pop-artBold pop art style
art-nouveauArt nouveau with flowing organic lines
cinematicCinematic photography with dramatic lighting
portraitProfessional portrait photography
macroExtreme macro photography
aerialAerial drone photography
studioStudio photography on clean background
noirDark film noir style
vintageFaded vintage photograph

Available Models

ModelResolutionCostRate Limit
grok-imagine-image (default)1k/2k$0.02/image300 RPM

Prerequisites

Setup

Create the config file:

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

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

api_key = "xai-..."

Custom Styles

Add custom styles to your config file. Custom styles with the same name as a built-in will override it.

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"

Templates must contain the {prompt} placeholder. Any custom style missing it will be skipped with a warning at startup.

Build

cargo build --release

This produces target/release/mcp-server-grok-image.

For development:

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

MCP Configuration

Add to your Claude Desktop config (~/.config/Claude/claude_desktop_config.json):

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

Project Structure

src/
  main.rs  - everything: config, styles, API types, MCP server, tool definitions

License

MIT