recraft-mcp
MCP server for AI image generation, transformation, and style management via the Recraft API
16 tools for image generation, processing, and style management — all accessible through the Model Context Protocol.
- Generate — Text-to-image, image-to-image, inpainting, background replacement & generation
- Process — Background removal, region erasing, vectorization (SVG), crisp & creative upscaling
- Styles — Create custom styles from reference images, list/get/delete styles
- Account — Check remaining credits and user info (included in
styles toolset)
- Configurable — Filter toolsets, adjust cache TTL, control retries
Prerequisites
Installation
Claude Desktop
Add to your config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"recraft": {
"command": "npx",
"args": ["-y", "recraft-mcp"],
"env": {
"RECRAFT_API_TOKEN": "your-api-token"
}
}
}
}
VS Code
Add to .vscode/mcp.json in your workspace (or use the one-click install buttons above):
{
"servers": {
"recraft": {
"command": "npx",
"args": ["-y", "recraft-mcp"],
"env": {
"RECRAFT_API_TOKEN": "your-api-token"
}
}
}
}
Claude Code
claude mcp add recraft-mcp -e RECRAFT_API_TOKEN=your-api-token -- npx -y recraft-mcp
Cursor
Add to Cursor's MCP settings (~/.cursor/mcp.json):
{
"mcpServers": {
"recraft": {
"command": "npx",
"args": ["-y", "recraft-mcp"],
"env": {
"RECRAFT_API_TOKEN": "your-api-token"
}
}
}
}
Windsurf
Add to Windsurf's MCP config (~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"recraft": {
"command": "npx",
"args": ["-y", "recraft-mcp"],
"env": {
"RECRAFT_API_TOKEN": "your-api-token"
}
}
}
}
Docker
docker run --rm -i -e RECRAFT_API_TOKEN="your-api-token" ghcr.io/bartwaardenburg/recraft-mcp-server:latest
Use Docker in any MCP client by replacing the command:
{
"mcpServers": {
"recraft": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "RECRAFT_API_TOKEN=your-api-token",
"ghcr.io/bartwaardenburg/recraft-mcp-server:latest"
]
}
}
}
Smithery
npx -y @smithery/cli install recraft-mcp --client claude
Tools
Generation
| Tool | Description |
|---|
generate_image | Generate images from a text prompt with style, size, and artistic controls |
image_to_image | Transform an existing image based on a text prompt with adjustable strength |
inpaint_image | Fill in masked regions of an image based on a text prompt |
replace_background | Replace the background while preserving the foreground subject |
generate_background | Generate a background for masked areas of an image |
Processing
| Tool | Description |
|---|
remove_background | Remove the background, leaving transparency |
erase_region | Seamlessly erase a masked region from an image |
vectorize_image | Convert raster images to scalable SVG vectors |
crisp_upscale | Upscale with sharp detail preservation |
creative_upscale | Upscale with creative enhancement and added detail |
Styles & Account
| Tool | Description |
|---|
create_style | Create a custom style from 1-5 reference images |
get_style | Get details of a custom style by ID |
list_styles | List all custom styles |
list_basic_styles | List available curated styles |
delete_style | Delete a custom style |
get_current_user | Get user info and remaining credits |
Tool Annotations
All tools include MCP tool annotations to help clients understand their behavior:
| Tool | Read-only | Open-world |
|---|
generate_image | | Yes |
image_to_image | | Yes |
inpaint_image | | Yes |
replace_background | | Yes |
generate_background | | Yes |
remove_background | | Yes |
erase_region | | Yes |
vectorize_image | | Yes |
crisp_upscale | | Yes |
creative_upscale | | Yes |
create_style | | Yes |
get_style | Yes | Yes |
list_styles | Yes | Yes |
list_basic_styles | Yes | Yes |
delete_style | | Yes |
get_current_user | Yes | Yes |
Detailed Parameter Reference
generate_image
| Parameter | Type | Required | Description |
|---|
prompt | string | Yes | Text description (max 1000 chars V2/V3, 10000 V4) |
model | enum | | recraftv3 (default), recraftv4, recraftv4_vector, recraftv2, recraft20b, refm1 |
style | enum | | realistic_image (default), digital_illustration, vector_illustration, icon, logo_raster |
substyle | string | | Substyle refinement (e.g. b_and_w, pixel_art, watercolor) |
style_id | uuid | | Custom style ID (mutually exclusive with style/substyle) |
size | enum | | Image dimensions, e.g. 1024x1024 (default), 1365x1024, 1536x1024, etc. |
n | integer | | Number of images to generate (1-6, default 1) |
negative_prompt | string | | What to avoid in the image |
artistic_level | integer | | 0 (simple) to 5 (dynamic) |
no_text | boolean | | Prevent text in the image |
image_format | enum | | webp or png |
random_seed | integer | | Seed for reproducible results |
image_to_image
| Parameter | Type | Required | Description |
|---|
image | string | Yes | Source image (URL or base64). Max 5MB, <16MP, max 4096px per side |
prompt | string | Yes | Description of desired changes |
strength | number | Yes | Change magnitude: 0.0 (minimal) to 1.0 (maximum) |
model | enum | | Model to use |
style | enum | | Style category (not supported for V4) |
substyle | string | | Substyle refinement |
style_id | uuid | | Custom style ID |
n | integer | | Number of outputs (1-6) |
negative_prompt | string | | What to avoid |
image_format | enum | | webp or png |
random_seed | integer | | Seed for reproducibility |
inpaint_image
| Parameter | Type | Required | Description |
|---|
image | string | Yes | Source image (URL or base64) |
mask | string | Yes | Grayscale PNG mask (white = inpaint, black = preserve) |
prompt | string | Yes | What to generate in the masked area |
model, style, substyle, style_id, n, negative_prompt, image_format, random_seed | | | Same as generate_image |
replace_background
| Parameter | Type | Required | Description |
|---|
image | string | Yes | Source image (URL or base64) |
prompt | string | Yes | Description of the new background |
model, style, substyle, style_id, n, negative_prompt, image_format, random_seed | | | Same as generate_image |
generate_background
| Parameter | Type | Required | Description |
|---|
image | string | Yes | Source image (URL or base64) |
mask | string | Yes | Mask defining the background area |
prompt | string | Yes | Description of the background to generate |
model, style, substyle, style_id, n, negative_prompt, image_format, random_seed | | | Same as generate_image |
remove_background
| Parameter | Type | Required | Description |
|---|
image | string | Yes | Image (URL or base64) |
image_format | enum | | webp or png |
erase_region
| Parameter | Type | Required | Description |
|---|
image | string | Yes | Source image (URL or base64) |
mask | string | Yes | Grayscale mask (white = erase, black = preserve) |
image_format | enum | | webp or png |
vectorize_image
| Parameter | Type | Required | Description |
|---|
image | string | Yes | Image to vectorize (URL or base64) |
crisp_upscale
| Parameter | Type | Required | Description |
|---|
image | string | Yes | Image to upscale (URL or base64). Max 5MB, <4MP |
image_format | enum | | webp or png |
creative_upscale
| Parameter | Type | Required | Description |
|---|
image | string | Yes | Image to upscale (URL or base64). Max 5MB, <16MP |
image_format | enum | | webp or png |
create_style
| Parameter | Type | Required | Description |
|---|
images | string[] | Yes | 1-5 reference images (URLs or base64) |
style | enum | Yes | Base style category |
get_style
| Parameter | Type | Required | Description |
|---|
style_id | uuid | Yes | Style ID to retrieve |
delete_style
| Parameter | Type | Required | Description |
|---|
style_id | uuid | Yes | Style ID to delete |
list_styles, list_basic_styles, get_current_user
No parameters required.
Configuration
| Environment Variable | Description | Default |
|---|
RECRAFT_API_TOKEN | Required. Your Recraft API token | — |
RECRAFT_TOOLSETS | Comma-separated toolsets to enable: generation, processing, styles | All |
RECRAFT_CACHE_TTL | Cache TTL in seconds (0 to disable) | 120 |
RECRAFT_MAX_RETRIES | Max retry attempts on rate limit (429) | 3 |
Toolset Filtering
Reduce the number of tools exposed to the LLM by enabling only what you need:
# Only image generation
RECRAFT_TOOLSETS=generation
# Generation + processing, no style management
RECRAFT_TOOLSETS=generation,processing
Supported Models
| Model | Description |
|---|
recraftv3 | Recraft V3 (default) |
recraftv4 | Recraft V4 (latest raster) |
recraftv4_vector | Recraft V4 Vector (SVG output) |
recraftv2 | Recraft V2 |
recraft20b | Recraft 20B (legacy) |
refm1 | RefM1 |
Note: V4 models do not support the style parameter — use the prompt to control style.
Supported Styles
| Style | Substyles |
|---|
realistic_image (default) | b_and_w, enterprise, hard_flash, hdr, motion_blur, natural_light, studio_portrait |
digital_illustration | pixel_art, hand_drawn, grain, infantile_sketch, 2d_art_poster, handmade_3d, engraving, comic_book |
vector_illustration | bold_stroke, chemistry, colored_stencil, contour_pop_art, flat_2, line_art, line_circuit |
icon | broken_line, colored_outline, colored_shapes, doodle_fill, doodle_offset_fill, offset_fill, outline |
logo_raster | — |
Image Input
Tools that accept images (image_to_image, inpaint_image, remove_background, etc.) support:
- URL — Any publicly accessible HTTP(S) URL
- Base64 — Raw base64-encoded image data
Security
- API token — Your
RECRAFT_API_TOKEN is sent only to the Recraft API (https://external.api.recraft.ai). It is never logged or stored beyond the process lifetime.
- Image data — Images are sent to Recraft's servers for processing. No image data is cached on disk.
- Network access — This server makes outbound HTTPS requests to
external.api.recraft.ai and registry.npmjs.org (for update checks).
See SECURITY.md for reporting vulnerabilities.
Development
pnpm install # Install dependencies
pnpm dev # Run with tsx (hot reload)
pnpm build # Compile TypeScript
pnpm test # Run tests
pnpm typecheck # Type check
See CONTRIBUTING.md for guidelines.
License
MIT