Labsco
madzarm logo

Gelato

from madzarm

Gelato Print-on-Demand platform MCP server

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedAccount requiredNeeds API keys

Gelato MCP Server

An MCP (Model Context Protocol) server for integrating with Gelato's print-on-demand API. This server provides tools and resources to search orders, retrieve order details, and explore product catalogs.

Features

๐Ÿ”ง Tools

  • search_orders: Advanced order search with multiple filters (status, country, date range, etc.)
  • get_order_summary: Retrieve specific order details
  • search_products: Search products in catalogs with filtering capabilities
  • get_product: Get detailed information about a specific product
  • get_product_prices: Get pricing information for products
  • check_stock_availability: Check stock availability across regions
  • list_shipment_methods: Get available shipment methods

๐Ÿ“š Resources

  • orders://{order_id}: Get detailed order information
  • orders://recent: Get the 10 most recent orders
  • orders://drafts: Get all draft orders
  • catalogs://list: List all available product catalogs
  • catalogs://{catalog_uid}: Get detailed catalog information
  • catalogs://summary: Quick overview of all catalogs

Error Handling

The server includes robust error handling for common scenarios:

  • Authentication errors: Invalid or missing API keys
  • Rate limiting: Automatic retry with exponential backoff
  • Network errors: Timeout and connection error handling
  • API errors: Proper handling of Gelato API error responses
  • Validation errors: Request/response data validation

Development

Adding New Features

  1. New Tools: Add to src/tools/ and register in server
  2. New Resources: Add to src/resources/ and register in server
  3. New Models: Add to src/models/ with proper Pydantic validation
  4. New API Endpoints: Extend GelatoClient in src/client/

Testing

# Test connection with your API key
python -c "
import asyncio
from src.config import get_settings
from src.client.gelato_client import GelatoClient

async def test():
    settings = get_settings()
    async with GelatoClient(settings.gelato_api_key, settings) as client:
        catalogs = await client.list_catalogs()
        print(f'Found {len(catalogs)} catalogs')

asyncio.run(test())
"

Support

For Gelato API issues, visit the Gelato Help Center. For MCP-related issues, check the MCP documentation.