grok-image MCP server
Commit Oct 14, 2026Enables AI clients to generate, edit, and style images using xAI's Grok API.
Also known as codeChap/mcp-server-grok-image, mcp-server-grok-image
- Stars
- 0
- Tools
- 37
- Downloads, 30 days
- —
- Latest version
- 0.1.0
- Last commit
- Oct 14, 2026
- License
- —
What is grok-image MCP?
grok-image enables AI clients to generate, edit, and style images using xAI's Grok API. It exposes 37 tools, such as generate_image, edit_image, headshot.
Summary generated from the project's README
About grok-image MCP server
Generating and modifying visual content through xAI's Grok API is what this Rust-based MCP server enables for developers using AI clients like Claude Desktop. By connecting via stdio, it provides a bridge to sophisticated image models such as grok-imagine-image-2.0. Users can create new visuals from text descriptions, apply specific artistic styles like watercolor or pixel-art, and adjust technical parameters including aspect ratios and resolutions up to 2k.
Beyond simple creation, the server includes tools for modifying existing images using natural language instructions. It supports multi-image editing by referencing up to five source images. A specialized headshot tool can also expand portraits by adding white backgrounds and completing shoulders. To use the server, you must provide an xAI API key in a local configuration file. The system also allows for the definition of custom style templates to ensure consistent visual outputs across different prompts.
What you can do with it
- 1Create stylized artworkGenerate a new image from a text prompt using a specific artistic style like anime or oil painting.
- 2Modify existing imagesApply natural language instructions to edit an image or a set of up to five source images.
- 3Produce professional portraitsTransform a source portrait into a corporate headshot with a clean white background.
- 4Define custom visual identitiesCreate and use unique style templates to wrap prompts in a consistent aesthetic.
Written from the project's README. Every use case is checked against a quote from it.
grok-image MCP tools 37
Detected from the READMEgenerate_imageedit_imageheadshotlist_stylespromptmodelaspect_ratioresolutionqualityresponse_formatstyleimage_url
| generate_image | — | |
| edit_image | — | |
| headshot | — | |
| list_styles | — | |
| prompt | — | |
| model | — | |
| aspect_ratio | — | |
| resolution | — | |
| quality | — | |
| response_format | — | |
| style | — | |
| image_url | — |
Show all 37 toolsShow fewer tools
imagesimageclothingnotespronoungravitycontent_widthcanvas_widthoutput_pathwatercoloroil-paintingpencil-sketchpixel-artanimepop-artart-nouveaucinematicportraitmacroaerialstudionoirvintagegrok-imagine-imagegrok-imagine-image-quality
| images | — | |
| image | — | |
| clothing | — | |
| notes | — | |
| pronoun | — | |
| gravity | — | |
| content_width | — | |
| canvas_width | — | |
| output_path | — | |
| watercolor | — | |
| oil-painting | — | |
| pencil-sketch | — | |
| pixel-art | — | |
| anime | — | |
| pop-art | — | |
| art-nouveau | — | |
| cinematic | — | |
| portrait | — | |
| macro | — | |
| aerial | — | |
| studio | — | |
| noir | — | |
| vintage | — | |
| grok-imagine-image | — | |
| grok-imagine-image-quality | — |
Configuration
RUST_LOG
| Name | Description | |
|---|---|---|
| RUST_LOG | — |
Automated checks
Ran Nov 14, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work · What to fix for more points
- Source repository linked and reachablecodechap/mcp-server-grok-image is public and reachablegithub.com/codechap/mcp-server-grok-image ↗Pass
- Package names this repository as its sourceNot checked
- Build provenance (Sigstore attestation)Not checked
- Open source license (OSI)No licenseFinding
- Commit or release in the last yearLast commit or release 2026-10-14github.com/codechap/mcp-server-grok-image ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNot checked
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model37 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNo tool named like delete, drop or execPass
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubmcp-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
| Tool | Description |
|---|---|
generate_image |
Generate an image from a text prompt |
edit_image |
Edit an existing image using natural language instructions |
headshot |
Corporate headshot from a source portrait (pad to 3:2 + fixed edit prompt) |
list_styles |
List available image styles for use with generate_image |
generate_image
Generate an image from a text description.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
prompt |
string | yes | Text description of the desired image |
model |
string | no | Model to use (default: grok-imagine-image-2.0) |
n |
integer | no | Number of images to generate (1-10, default 1) |
aspect_ratio |
string | no | Aspect ratio: 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 |
resolution |
string | no | Output resolution: 1k (~1024px, default) or 2k (~2048px) |
quality |
string | no | low, medium, or auto (2.0 only; omitted = auto. Auto currently serves low for generation) |
response_format |
string | no | Output format: url (default, temporary) or b64_json |
style |
string | no | Style 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:
| Name | Type | Required | Description |
|---|---|---|---|
image_url |
string | no* | URL, base64 data URI, or local file path of the source image. Mutually exclusive with images. |
images |
string[] | no* | Up to 5 source images for multi-image editing. Reference them in the prompt as <IMAGE_0>, <IMAGE_1>, … |
prompt |
string | yes | Natural language edit instructions |
model |
string | no | Model to use (default: grok-imagine-image-2.0) |
n |
integer | no | Number of variations to generate (1-10, default 1) |
aspect_ratio |
string | no | Same set as generate_image, including 21:9 and 5:2 |
resolution |
string | no | Output resolution: 1k (~1024px, default) or 2k (~2048px) |
quality |
string | no | low, medium, or auto (2.0 only; omitted = auto. Auto currently serves medium for editing) |
response_format |
string | no | Output format: url (default, temporary) or b64_json |
* Provide either image_url or images.
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.
headshot
Expand-only portrait fix (Gemini pipeline equivalent on Imagine). Does not reframe pose, cut out hair, or redesign the person.
- Resize full source (default 550px wide) — never crop
- Letterbox with white gutters to canvas width (default 780)
- Call
grok-imagine-image-2.0at quality medium: complete cut-off shoulders if needed; clean solid white background; keep face/hair/pose/clothing/logos
No cutout / no rembg / no transparent alpha — same job as the original Gemini headshot skill.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
image |
string | yes | Local path, http(s) URL, or data: URI |
clothing |
string | no | For missing-shoulder fill only |
notes |
string | no | Must-preserve details (glasses, exact logo text, …) |
pronoun |
string | no | his / her / their (default their) |
gravity |
string | no | Letterbox gravity (North default) |
content_width |
integer | no | Resize width before pad (default 550) |
canvas_width |
integer | no | Padded width (default 780) |
resolution |
string | no | 1k or 2k (default 2k) |
output_path |
string | no | Optional final path (also under save_dir) |
n |
integer | no | Variations (1–10, default 1) |
quality |
string | no | low / medium / auto (default medium) |
model |
string | no | Default grok-imagine-image-2.0 |
Padded intermediate: save_dir/headshot-padded_*.jpg.
list_styles
Returns all available image styles with their name, description, and prompt template. No parameters.
Built-in Styles
| Style | Description |
|---|---|
watercolor |
Watercolor painting style |
oil-painting |
Oil painting with visible brushstrokes |
pencil-sketch |
Detailed pencil sketch |
pixel-art |
Retro pixel art |
anime |
Anime style illustration |
pop-art |
Bold pop art style |
art-nouveau |
Art nouveau with flowing organic lines |
cinematic |
Cinematic photography with dramatic lighting |
portrait |
Professional portrait photography |
macro |
Extreme macro photography |
aerial |
Aerial drone photography |
studio |
Studio photography on clean background |
noir |
Dark film noir style |
vintage |
Faded vintage photograph |
Available Models
| Model | Notes |
|---|---|
grok-imagine-image-2.0 (default) |
Optional quality (low / medium / auto), up to 5 edit references, 21:9 and 5:2. Auto currently serves low for generation and medium for editing. |
grok-imagine-image |
1.0. Still available; no quality param. |
grok-imagine-image-quality |
Retires 2026-11-02. After that the slug is served by grok-imagine-image-2.0 at quality: low ($0.01 less per image than the quality model). |
Prerequisites
- Rust (edition 2024)
- An xAI API key from console.x.ai
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 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
License
MIT
grok-image MCP questions
What tools does grok-image MCP provide?
It exposes 37 tools, including generate_image, edit_image, headshot, list_styles, prompt.
What is the headshot tool used for?
The headshot tool is an expand-only portrait fix that resizes a source portrait and uses Grok to complete cut-off shoulders against a clean white background.