printify_mcp
Enables creating and publishing print-on-demand products on Printify from reusable SKU templates, allowing AI assistants like Claude to manage product listings, upload artwork, and publish drafts through natural language.
README
Printify MCP Server — Sunfade Co
A small, purpose-built MCP server that lets Claude create and publish print-on-demand products on Printify from reusable SKU templates.
The whole idea: you never hand-assemble Printify's 200-line product JSON.
Claude calls create_from_template with ~5 fields and the server expands it.
1. Install
cd printify-mcp
pip install -r requirements.txt
2. Set your token (never hard-code it)
Create your token at: Printify → Account → Connections → API → Generate.
Scopes needed: shops.read, products.read, products.write,
uploads.read, uploads.write, print_providers.read.
export PRINTIFY_TOKEN="your_token_here"
export PRINTIFY_SHOP_ID="21788377" # optional default shop
On Windows PowerShell:
$env:PRINTIFY_TOKEN="your_token_here"
$env:PRINTIFY_SHOP_ID="21788377"
3. Run standalone (sanity test)
python server.py
4. Connect to Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"printify-sunfade": {
"command": "python",
"args": ["/ABSOLUTE/PATH/printify-mcp/server.py"],
"env": {
"PRINTIFY_TOKEN": "your_token_here",
"PRINTIFY_SHOP_ID": "21788377"
}
}
}
}
Restart Claude Desktop. The tools appear automatically.
Tools
| Tool | What it does |
|---|---|
list_shops |
List connected shops (id, title, channel) |
list_templates |
Show available SKU templates + artwork spec |
upload_artwork(image_url, file_name) |
Upload a PNG from a public URL → image_id |
upload_artwork_file(file_path, file_name) |
Upload a PNG from a local file (base64) → image_id |
create_from_template(...) |
Core. Make one product from a template (draft) |
batch_create(template_name, items) |
Make many products from already-uploaded images (paced) |
scan_folder(folder_path) |
List local image files in a folder, without uploading |
batch_from_folder(template_name, items) |
Upload local files and create products in one call (paced) |
publish_product(product_id) |
Push a product to the connected storefront |
get_product(product_id) |
Verify a product |
list_print_providers(blueprint_id) |
For adding new SKU templates |
Typical flow
- Claude generates artwork → gets a public PNG URL (or saves a local file)
upload_artwork(url, "Yosemite.png")orupload_artwork_file(path, "Yosemite.png")→image_idcreate_from_template("poster_matte_2x3", image_id, title, desc, tags)→ draft- Review with
get_product publish_product(product_id)when ready
batch_create chains step 3 for a list of already-uploaded designs.
scan_folder + batch_from_folder chain steps 2–3 for a whole folder of local files.
Current templates
| Template | Product | Blueprint / Provider | Sizes / Price | Artwork spec |
|---|---|---|---|---|
poster_matte_2x3 |
Satin & Archival Matte Poster | 1309 / 234 (Today's Graphics) | 12×18 $29, 20×30 $42, 24×36 $52 | 7200×10800 px PNG, 2:3, sRGB, full-bleed |
canvas_2x3 |
Classic Stretched Canvas (1.5") | 1238 / 48 (Colorway) | 12×18 $69 … 24×36 $129 | 7200×10800 px PNG, 2:3, sRGB, full-bleed (same file as poster) |
sticker |
Square Sticker (die-cut, UV) | 384 / 1 (SPOKE) | 2×2 $5.99 … 6×6 $9.99 | 1800×1800 px PNG, 1:1, transparent bg |
mug |
Ceramic Mug 11oz (dye-sub) | 68 / 1 (SPOKE) | 11oz $21.99 | 2700×1119 px PNG, wraparound |
tshirt |
Unisex Softstyle Tee (Gildan 64000) | 145 / 99 | 5 colors × 5 sizes, $29.99–$32.99 | 3852×4398 px PNG, transparent, front/back |
hat |
Trucker Hat (DTF) | 1128 / 41 (Duplium) | 5 colors, $28.99 | 1650×750 px PNG, 2.2:1, transparent |
hat_vintage_a |
Embroidery Dad Hat | 1729 / 99 | 3 colors, $31.99 | Text-only embroidery, front 1650×600, back 600×300 |
hat_vintage_b |
Embroidery Vintage Cap | 1736 / 99 | 4 colors, $35.99 | Text-only embroidery, front 1650×600, back 600×300 |
candle |
Scented Soy Candle 9oz | 1048 / 219 | 3 scents, $26.99 | 900×600 px PNG, 3:2 label |
tumbler |
SPOKE Tumbler 20oz | 353 / 1 | 20oz $40.83 | 2795×2100 px PNG, wraparound |
stein_mug |
Ceramic Stein Mug 22oz (dye-sub) | 891 / 41 (Duplium) | 22oz $25.50 | 2250×900 px PNG, 2.5:1 wraparound, full-bleed |
pillow_damask |
Outdoor Pillow, double-sided | 1007 / 10 | 16×16/18×18/20×20 $33.99 | 1254–3225 px square PNG, full-bleed, no transparency |
pillow_woven |
Boho Woven Pillow | 1650 / 10 | 17×18 $47.99 | 1728×1824 px, bold color-blocks only (no gradients/fine detail) |
pillow_body |
Body Pillow 20×54, double-sided | 2758 / 10 | Microfiber $95.43, Fleece $108.23 | 8325×3225 px JPEG, ~2.58:1, pattern spans full width |
can_glass_engraved |
Can Glass 16oz (laser engraving) | 2759 / 228 | 16oz $24.25 | 1200×1800 px PNG, transparent = not engraved, line art only |
Full spec per template (finish options, decoration method, placeholder transform,
style notes) lives in the TEMPLATES dict in server.py.
Adding a new SKU template (mug, sticker, etc.)
- Create ONE product of that type manually in Printify, enable only the variants you want, save as draft.
- GET its JSON:
curl.exe -H "Authorization: Bearer $TOKEN" \ "https://api.printify.com/v1/shops/SHOP_ID/products/PRODUCT_ID.json" > sku.json - From the JSON, copy:
blueprint_id,print_provider_id, the enabled variantids, and theprint_areas[0].placeholders[0].images[0]transform (x, y, scale, angle). - Add an entry to
TEMPLATESinserver.pyfollowing the poster example. - Restart the server.
Notes / gotchas
- Prices are in cents (2900 = $29.00).
- Products are created as drafts (unpublished). Nothing goes live until
you call
publish_product. publish_productonly works against a real connected storefront (Shopify), not the APIcustom_integrationplaceholder shop. Connect Sunfade Co in Printify → Add store → Shopify first.- Rate limits: global 600 req/min; publish 200/30min.
batch_createpaces at ~1/sec, well under both. 429s are retried with backoff automatically. - Base costs shown are Free-plan. Printify Premium (~20% off) improves margins.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.