@snapnedit/mcp
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@snapnedit/mcpremove the background from this product photo"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@snapnedit/mcp
A Model Context Protocol server that gives an AI agent the snapnedit photo-editing and design tools: remove a background, upscale, erase an object, replace a sky, compose a multi-layer design and render it to PNG/JPEG/PDF — all as MCP tools over stdio.
The server runs no models locally. Every tool call is proxied to the snapnedit API
through @snapnedit/sdk with your API key, so
running it costs nothing but the credits the operations consume.
Running it
Two environment variables are required (both read in src/index.ts; the process exits
with a message if either is missing):
Variable | Meaning |
| Your API key ( |
| Origin of the API, e.g. |
SNAPNEDIT_API_KEY=sk_live_... SNAPNEDIT_BASE_URL=https://api.snapnedit.com npx snapnedit-mcpThe server speaks MCP over stdio — stdout is the transport, so diagnostics go to stderr. It is normally launched by an MCP client rather than by hand.
Publishing to npm is imminent — until it lands, build from the monorepo (
npm ci && npm run build) and runnode packages/mcp/dist/index.js.
Related MCP server: Photo AI Studio MCP Server
Registering it
Claude Code
claude mcp add snapnedit \
--env SNAPNEDIT_API_KEY=sk_live_... \
--env SNAPNEDIT_BASE_URL=https://api.snapnedit.com \
-- npx -y snapnedit-mcpClaude Desktop
In claude_desktop_config.json (macOS:
~/Library/Application Support/Claude/claude_desktop_config.json; Windows:
%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"snapnedit": {
"command": "npx",
"args": ["-y", "snapnedit-mcp"],
"env": {
"SNAPNEDIT_API_KEY": "sk_live_...",
"SNAPNEDIT_BASE_URL": "https://api.snapnedit.com"
}
}
}
}Restart Claude Desktop after editing the file. Running from a local build instead of
npm looks the same with "command": "node" and
"args": ["/absolute/path/to/packages/mcp/dist/index.js"].
Tools
Every image tool takes image (base64-encoded bytes, no data: prefix) and an optional
mime; three of them also require a base64 mask. Each returns the edited image as an
MCP image content block. Errors from the API (bad input, insufficient credits, a failed
job) come back as an error result, not a crash.
Every image tool also accepts three bring your own storage arguments, so large images never have to pass through the agent's context at all:
Argument | Meaning |
| An https URL (typically a short-lived presigned GET) the snapnedit server fetches the input from. Use it instead of |
| An https presigned PUT the snapnedit server uploads the finished image to, in your own S3/GCS/Azure bucket. |
| Headers that PUT's signature requires, e.g. |
| Id of a saved storage destination on the snapnedit account ( |
The two design tools take no such arguments — render_design returns its bytes
directly. Both transfers are server-to-bucket, so no browser and no CORS configuration
are involved, and neither URL is stored or echoed back. They are billed to — and require —
the API key this server already runs with (SNAPNEDIT_API_KEY); the agent supplies no
credential of its own.
With destination_put_url or destination_id, the tool returns a JSON delivery report
({ jobId, delivered, delivery, download }) instead of the image bytes, since the
result is already in your bucket. A saved destination adds bucket and key to that
report — where the object actually landed. If the delivery PUT fails the job still
succeeds: the tool returns the image and the delivery record explaining why the
bucket copy is missing. An input_url the server cannot fetch (blocked host, redirect,
timeout, non-2xx, too large, not an image) fails the job with input_fetch_failed,
credits refunded.
Saved storage destinations
A storage destination is one of your own S3-compatible buckets, saved once on the snapnedit account this server's API key belongs to. Two read-only tools cover them:
Tool | Extra input | What it does |
| — | Lists the account's saved destinations ( |
|
| Writes and deletes a probe object in the bucket. Returns |
If the account has a default destination, results are delivered to it even with no
destination_id at all — in that case the tool still returns the image, plus the
delivery record.
There is deliberately no create / update / delete tool for destinations. Saving
one means handing over an access key id and a secret access key, and anything passed to an
MCP tool is written into the agent's transcript — logged, replayed, and usually sent on to
a model provider. A long-lived cloud credential must not travel that path. Manage
destinations in the snapnedit dashboard, or from a
server you control with @snapnedit/sdk's
createDestination() / updateDestination() / deleteDestination(). Full setup:
https://snapnedit.com/docs/storage-destinations.
A destination with delete-after-delivery turned on removes the snapnedit copy once the
bucket confirms the write; the report's download is then null and delivery.key names
the only copy. A cache hit (the same image, operation and params as an earlier job)
re-runs no model but is still delivered to your bucket, and costs no credits.
Tool | Extra input | What it does |
| — | Removes the background, producing a transparent-background PNG. |
|
| Increases resolution with AI upscaling while preserving detail. |
| — | Sharpens a blurry or out-of-focus photo and recovers detail. |
| — | Colorizes a black-and-white photo with realistic color. |
|
| Restyles a photo with a painterly art filter. |
| — | Smooths skin, removes blemishes, enhances a portrait automatically. |
|
| Face-aware beauty retouch: edge-preserving skin smoothing plus subtle teeth-whiten and eye-brighten. |
| mask | Erases the masked object, person or overlay with content-aware fill. |
| mask, | Generates new content inside the masked region from a text prompt. |
| mask | Erases a masked watermark, logo or text overlay by inpainting. |
|
| Removes sensor grain and noise while preserving edges. |
|
| Replaces the sky with a preset, blending the horizon. |
|
| Re-lights a portrait or scene from a chosen light direction. |
|
| Cuts out the subject and composites it over a background preset. |
| — | Strips C2PA Content Credentials, AI-generator XMP tags and EXIF without changing pixels. Does not remove visible or invisible pixel watermarks. |
|
| Detects a visible watermark automatically (no mask) and inpaints it away. |
|
| Resizes to exact dimensions and re-encodes. Free (0 credits) — plain geometry, no model runs. |
| a design spec | Compiles a canvas + text/image/shape/element/frame layers into an editor document (returned as JSON). |
| a design spec, or | Renders a design straight to an image server-side; |
|
| Reads the account's usage — see Usage below. Read-only. |
Which operations a given deployment actually serves is up to that deployment — some may be disabled, in which case the tool call returns an API error.
Usage
get_usage answers "what has this account run, and what did it cost" — the same numbers
as the usage dashboard, for whatever range and
grouping the agent asks for. Every argument is optional; with none, it reports the last
30 days bucketed by day.
Argument | Meaning |
| Inclusive |
|
|
|
|
| Narrow what is counted before it is bucketed. |
The result is { range, groupBy, totals, series, keys }. totals and every series row
carry jobs, credits, cacheHits, free, failed, delivered, deliveryFailed and
sessions (plus activeSessions on totals). keys is trimmed on purpose to
{ id, name, usedToday, dailyCreditLimit } — enough to spot a key about to hit its daily
cap, with no other account detail entering the transcript.
How many credits did I spend on upscaling last week, and is any key close to its cap?
Full reference: https://snapnedit.com/docs/usage.
Example prompt
Here's a product photo. Remove the background, upscale it 2×, then build me a 1080×1080 square post: the cutout centered on a dark background with the headline "New arrival" across the top, and render it as a PNG.
The agent chains remove_background → upscale → render_design and hands back the
finished image.
Development
This package is developed inside the private snapnedit monorepo and mirrored to github.com/Snap-N-Edit/mcp with its history. The mirror is read-only for code (it references sibling workspace packages, so it does not build on its own) — file issues and feature requests there, and pull requests are welcome as proposals; the change lands through the monorepo and the mirror is refreshed on every release.
Licensed under the MIT License.
This server cannot be deployed
Maintenance
Related MCP Connectors
AI-powered image processing via GPU. Remove backgrounds and upscale images (2x/4x) directly from any MCP client. OAuth 2.1 authenticated, returns processed images inline with download links. Free credits on signup at maskr.io.
Edit images over MCP with object removal, background removal, and guided generative edits.
Multi-model AI image and video generator. 14 models behind one OAuth-secured MCP endpoint.
Generate images with any major model — one API key, one prepaid balance, one MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA full-featured image processing MCP server for AI assistants, exposing ~55 tools across 11 categories for editing, layers, conversion, AI segmentation/cleanup/generation, design analysis, and screenshot-to-code.-
- AlicenseAqualityCmaintenanceEnables AI photo generation, editing, and video creation from MCP-compatible clients like Claude Desktop, Cursor, and Windsurf.813 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI image processing tools such as vectorization, background removal, upscaling, and logo generation from any MCP-compatible client like Claude Code or Cursor.19 npmMIT
- AlicenseAqualityBmaintenanceEnables local, CPU-only image and video manipulation—such as background removal, resizing, format conversion, thumbnails, GIF creation, and trimming—through an MCP server without API keys, GPU, or paid dependencies.8MIT