Skip to main content
Glama

🎨 Printful MCP Server

Automate Your Print-on-Demand Business with AI

Connect Printful's powerful API to Claude, Cursor, and other AI assistants through the Model Context Protocol.

πŸ“š Quick Start β€’ πŸ”§ Configuration β€’ πŸš€ Examples β€’ πŸ“– Documentation


Made by Purple Horizons License: MIT Python 3.10+ Printful API v2

GitHub Stars GitHub Forks


🎁 New to Printful?

Start your print-on-demand business today β€’ No upfront costs β€’ 300+ products β€’ Global fulfillment


✨ Features

🎯 Complete API Coverage

  • βœ… Full Printful API v2 support

  • βœ… Smart v1 fallback for legacy features

  • βœ… 17 tools across all major domains

  • βœ… Real-time stock & pricing data

πŸ›‘οΈ Production Ready

  • βœ… Type-safe Pydantic validation

  • βœ… Robust error handling

  • βœ… Rate limit management

  • βœ… Dual output formats (JSON/Markdown)

πŸš€ Easy Integration

  • βœ… Works with Claude Desktop

  • βœ… Works with Cursor IDE

  • βœ… Local execution (stdio)

  • βœ… No hosting required

πŸ€– AI Skill Included

  • βœ… Cursor skill teaches AI how to use tools

  • βœ… Best practices built-in

  • βœ… Auto-applies workflows

  • βœ… Better experience out of the box

🎁 Bonus: This repo includes a Cursor AI skill that automatically teaches AI assistants how to use the Printful MCP effectively. Just open the project and start asking questions!


πŸš€ Quick Start

Step 1: Clone & Install

git clone https://github.com/Purple-Horizons/printful-ph-mcp.git cd printful-ph-mcp pip install -e .

Step 2: Set up API Key

cp .env.example .env # Edit .env and add: PRINTFUL_API_KEY=your-key-here

Step 3: Configure Your AI Assistant

Add to ~/.cursor/mcp.json:

{ "mcpServers": { "printful": { "command": "python", "args": ["-m", "printful_mcp"], "cwd": "/path/to/printful-ph-mcp", "env": { "PRINTFUL_API_KEY": "your-api-key-here" } } } }

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{ "mcpServers": { "printful": { "command": "python", "args": ["-m", "printful_mcp"], "cwd": "/path/to/printful-ph-mcp", "env": { "PRINTFUL_API_KEY": "your-api-key-here" } } } }

βœ… That's it! Restart your AI assistant and start using Printful tools.


🎨 What You Can Do

πŸ›οΈ Catalog

πŸ“¦ Orders

🚚 Shipping

πŸ–ΌοΈ Mockups

πŸ“ Files

πŸͺ Stores

Browse 300+ products

Create & manage orders

Calculate rates

Generate mockups

Upload designs

View statistics

Check availability

Confirm fulfillment

List countries

Check status

Get file info

Multi-store support

Get pricing

Track orders

Delivery times

Custom placements

-

-


πŸ’‘ Usage Examples

🎯 Example 1: Find the Perfect Product

# Ask your AI assistant: "Show me all t-shirts available for DTG printing under $15" # It will use: printful_list_catalog_products( types="T-SHIRT", techniques="dtg", limit=20, format="markdown" )

πŸ’° Example 2: Get Pricing

# Ask your AI assistant: "What's the price for variant 4011 in USD?" # It will use: printful_get_variant_prices( variant_id=4011, currency="USD", format="markdown" )

πŸ“¦ Example 3: Create an Order

# Ask your AI assistant: "Create a draft order for John Doe at 123 Main St, Los Angeles, CA 90001" # It will use: printful_create_order( recipient_name="John Doe", recipient_address1="123 Main St", recipient_city="Los Angeles", recipient_state_code="CA", recipient_country_code="US", recipient_zip="90001" )

🎨 Example 4: Generate Product Mockups

# Ask your AI assistant: "Generate a mockup for product 71 with my design" # It will use: printful_create_mockup_task( product_id=71, variant_ids="4011,4012", design_url="https://example.com/design.png", placement="front" )

🎬 Want to see it in action?

πŸ“Ί Watch Demo Video β€’ πŸ“– Read Full Documentation β€’ πŸ’¬ Join Community


πŸ› οΈ Available Tools

Tool

Description

Example Use

printful_list_catalog_products

Browse 300+ products with filters

"Show me all hoodies"

printful_get_product

Get detailed product info

"Tell me about product 71"

printful_get_product_variants

Get all sizes/colors

"What sizes are available?"

printful_get_variant_prices

Get pricing by currency

"How much in EUR?"

printful_get_product_availability

Check stock status

"Is this in stock?"

Tool

Description

Example Use

printful_create_order

Create draft order

"Create order for John"

printful_get_order

View order details

"Show me order #12345"

printful_confirm_order

Start fulfillment

"Confirm this order"

printful_list_orders

List all orders

"Show my recent orders"

Tool

Description

Example Use

printful_calculate_shipping

Get shipping rates & times

"How much to ship to UK?"

printful_list_countries

List supported countries

"What countries do you ship to?"

Tool

Description

Example Use

printful_create_mockup_task

Generate mockup images

"Create mockup with my design"

printful_get_mockup_task

Check generation status

"Is my mockup ready?"

Tool

Description

Example Use

printful_add_file

Upload design file

"Upload my logo"

printful_get_file

Get file info & status

"Check file #12345"

Tool

Description

Example Use

printful_list_stores

List your stores

"Show all my stores"

printful_get_store_stats

View sales & profit

"What are my sales?"

Tool

Description

Example Use

printful_list_sync_products

List synced products

"Show my Etsy products"

printful_get_sync_product

Get sync product details

"Details on sync #123"


πŸŽ“ Documentation

πŸ“– Quick Start Guide

Get up and running in 5 minutes

πŸ”‘ API Token Setup

Detailed token configuration guide

πŸ§ͺ Testing Guide

Learn how to test your integration

πŸ” API Scopes Reference

Required permissions explained

πŸ’» Examples

Real code examples

πŸ”§ Cursor Config

Ready-to-use config file


πŸ”„ API Version Strategy

This server uses Printful API v2 (production-ready beta) with smart v1 fallback:

🎯 v2 (Primary)

  • βœ… Catalog & Products

  • βœ… Orders & Fulfillment

  • βœ… Shipping Rates

  • βœ… Mockup Generation

  • βœ… File Management

  • βœ… Store Statistics

πŸ”„ v1 (Fallback)

  • βœ… Sync Products

  • βœ… Product Templates

  • ⚠️ Auto-switches when needed

  • πŸš€ Future-proof architecture

Why v2? Better pagination β€’ Real-time stock β€’ Enhanced orders β€’ Improved security β€’ Standardized formats


βš™οΈ Rate Limiting & Performance

πŸ“Š Rate Limits

  • 120 requests / 60 seconds

  • Leaky bucket algorithm

  • Auto-retry on 429 errors

πŸš€ Performance

  • Response times: 100-500ms

  • Concurrent requests: Supported

  • Timeout handling: Built-in


πŸ› Troubleshooting

Solution: Make sure your API key is set in .env or passed via environment variables in the MCP config.

# Check your .env file cat .env # Should contain: PRINTFUL_API_KEY=your-actual-key-here

Solution: Wait for the time specified in the error message (usually 60 seconds).

  • Default limit: 120 requests/minute

  • Consider implementing request batching

  • Check X-Ratelimit-Reset header for exact reset time

Solution: Double-check the ID you're using.

  • For orders: You can use external IDs by prefixing with @ (e.g., @my-order-123)

  • For products: Verify the product/variant ID exists in the catalog

  • Check if the resource belongs to your store

Solution: Mockup generation typically takes 10-30 seconds.

  • Wait at least 30 seconds before checking status

  • If stuck longer than 2 minutes, check task status - it may have failed

  • Verify your design URL is publicly accessible


πŸ§ͺ Testing

Choose Your Testing Method

⚑ Quick Test

Automated test suite

export PRINTFUL_API_KEY=your-key python test_server.py

βœ… Tests 6 core features ⏱️ Takes 30 seconds

🌐 Interactive Test

Web-based MCP Inspector

export PRINTFUL_API_KEY=your-key ./test-with-inspector.sh

🎯 Test any tool visually 🌍 Opens at localhost:5173

πŸ€– Live Test

In Claude/Cursor

Just ask:

"List Printful countries"

πŸ’¬ Natural language ✨ Real integration test

πŸ“– Full testing guide: See TESTING.md for comprehensive testing instructions.


πŸ—οΈ Project Structure

printful-ph-mcp/ β”œβ”€β”€ πŸ“ src/ β”‚ └── πŸ“ printful_mcp/ β”‚ β”œβ”€β”€ 🐍 server.py # FastMCP server + tool registrations β”‚ β”œβ”€β”€ πŸ”Œ client.py # API client with auth/error handling β”‚ β”œβ”€β”€ πŸ“ tools/ # Tool implementations by domain β”‚ β”‚ β”œβ”€β”€ πŸ›οΈ catalog.py # Product browsing (5 tools) β”‚ β”‚ β”œβ”€β”€ πŸ“¦ orders.py # Order management (4 tools) β”‚ β”‚ β”œβ”€β”€ 🚚 shipping.py # Shipping rates (2 tools) β”‚ β”‚ β”œβ”€β”€ πŸ–ΌοΈ mockups.py # Mockup generation (2 tools) β”‚ β”‚ β”œβ”€β”€ πŸ“ files.py # File management (2 tools) β”‚ β”‚ β”œβ”€β”€ πŸͺ stores.py # Store statistics (2 tools) β”‚ β”‚ └── πŸ”„ sync.py # v1 fallback (2 tools) β”‚ └── πŸ“ models/ β”‚ └── πŸ“‹ inputs.py # Pydantic input models β”œβ”€β”€ πŸ“„ pyproject.toml β”œβ”€β”€ πŸ” .env.example └── πŸ“– README.md

🀝 Contributing

We welcome contributions! Here's how you can help:

πŸ› Report Bugs

Found an issue? Open a bug report

✨ Request Features

Have an idea? Suggest a feature

πŸ”§ Submit PRs

  1. Fork the repository

  2. Create your feature branch

  3. Commit your changes

  4. Push and open a Pull Request


Resource

Link

πŸ“˜ Printful API v2 Docs

developers.printful.com/docs/v2-beta

πŸ“— Printful API v1 Docs

developers.printful.com/docs

πŸ”Œ MCP Protocol Spec

modelcontextprotocol.io

🐍 FastMCP Framework

github.com/modelcontextprotocol/python-sdk

🎨 Purple Horizons

purplehorizons.io

πŸ‘¨β€πŸ’» Made by Gianni

giannidalerta.com


πŸ“„ License

MIT License - Free to use, modify, and distribute

View License β€’ Purple Horizons LLC β€’ 2026


πŸ’ Support This Project

If this project helped you, consider:

⭐ Star this repo on GitHub

🐦 Share it on social media

🀝 Contribute to the codebase

🎨 Sign up for Printful using our affiliate link

Made with ❀️ by

Empowering businesses through AI automation


πŸš€ Ready to automate your print-on-demand business?

Get Started Now β€’ View Examples β€’ Read Docs

Questions? Issues? Open an issue or contact us

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Purple-Horizons/printful-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server