Skip to content
Agentmart
Submit a tool

Shopify MCP

MCP server for Shopify Admin API with a ComfyUI bridge for AI product image generation.

Connector by miller-joe · GitHub account verified by the MCP Registry

IndexedMITRemote (HTTP)★ 2
Write a review

Install

Pick your client. Read the repository before you give any tool access to your data.

No install instructions from the source yet. Check the repository for setup steps.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

MCP server for Shopify Admin API with a ComfyUI bridge for AI product image generation.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
21 read · 30 write · 8 delete · 3 not yet classified
Secrets
None asked for
Install scripts
Not scanned yet
Runs as
Node.js package

Tools by what they do 62

Read from the source code; the running server may list different tools.

Read 21 · Look things up without changing anything.

  • get_collection
  • get_draft_order
  • get_fulfillment
  • get_fulfillment_order
  • get_metaobject
  • get_order
  • get_product
  • get_webhook
  • list_collections
  • list_customers
  • list_draft_orders
  • list_fulfillment_orders
Show 9 more tools
  • list_locations
  • list_metafields
  • list_metaobject_definitions
  • list_metaobjects
  • list_orders
  • list_products
  • list_variants
  • list_webhooks
  • run_shopifyql_query

Write 30 · Create, change, send or run things.

  • add_product_options
  • add_products_to_collection
  • add_tags
  • cancel_fulfillment
  • cancel_order
  • complete_draft_order
  • create_collection
  • create_customer
  • create_draft_order
  • create_fulfillment
  • create_metaobject
  • create_order
Show 18 more tools
  • create_product
  • create_variants
  • create_webhook
  • generate_and_create_product
  • refund_order
  • reorder_variants
  • set_inventory_quantity
  • set_metafield
  • update_collection
  • update_customer
  • update_draft_order
  • update_fulfillment_tracking
  • update_metaobject
  • update_order
  • update_product
  • update_variants
  • update_webhook
  • upload_product_image

Delete 8 · Delete, drop, revoke or wipe things.

  • delete_collection
  • delete_draft_order
  • delete_metafield
  • delete_metaobject
  • delete_variants
  • delete_webhook
  • remove_products_from_collection
  • remove_tags

Not yet classified 3 · We could not tell from the name and description.

  • bulk_regenerate_images
  • generate_product_image
  • refine_product_image

Tools (62)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • add_product_options

    Add new options (like Size, Color, Material) to an existing product, along with their initial possible values. Shopify caps products at 3 options total — passing more is rejected. Adding an option creates new option-values that existing variants must be assigned to (Shopify auto-assigns the first value if not specified). After adding, use create_variants to add SKUs across the new option-value combinations. Cannot remove options via this tool — that requires re-creating the product.

  • add_products_to_collection

    Add one or more products to a manual collection. Runs as an async background job on Shopify's side — the response includes a job ID and `done` flag, so very large batches may still be queued when the call returns. Smart collections (rule-based) reject manual additions; this tool only works on manual collections. Duplicates are silently ignored.

  • add_tags

    Add tags to any taggable Shopify resource — Product, Order, Customer, DraftOrder, Collection, Article, Blog. Tags are stored as a unique set per resource; adding a tag that already exists is a no-op. Useful for ad-hoc segmentation, marketing campaigns, or driving smart collection membership rules. Pair with remove_tags to fully manage taxonomy.

  • bulk_regenerate_images

    Bulk operation: for each product matching `product_query` (up to `max_products`), generate a fresh ComfyUI image from `prompt_template` (with {title}/{handle} substituted) and attach it. Only registered when the server has a ComfyUI URL configured. Side effects: runs one GPU-bound generation per matched product and adds an image to each (additive, never replaces existing images); writes to live store data (requires write_products and read_products scopes). Per-product failures are caught and reported rather than aborting the whole run. Potentially slow and resource-heavy — keep `max_products` …

  • cancel_fulfillment

    Cancel an existing fulfillment — use when an item that was marked shipped won't actually ship (lost in warehouse, address bounced, customer cancelled). Restores remaining quantity on the underlying fulfillment order so the items can be re-fulfilled later. Does NOT issue a refund — combine with order-level refund tools if money needs to come back to the customer. Returns the new fulfillment status (typically CANCELLED).

  • cancel_order

    Cancel a Shopify order. Triggers an async job (the response includes a jobId; cancellation finishes shortly after the call returns). Combine with `refund: true` to issue a full refund of any captured payment, or `refund: false` if the order is unpaid or you'll handle refunds separately via refund_order. `restock: true` restores cancelled line items back to inventory; set false if items were physically lost/damaged. `notifyCustomer: true` sends the cancellation email. Cannot cancel an already-cancelled order or one with active fulfillments still in flight (cancel those fulfillments first via ca…

  • complete_draft_order

    Convert an OPEN draft order into a real Shopify order. With paymentPending=false (default), Shopify attempts to capture payment immediately; the call fails if no payment method is on file. With paymentPending=true, the order is created in payment-pending status — useful when collecting payment offline (cash, bank transfer, manual processing). Once completed, the draft transitions to COMPLETED and the new order's GID is returned. The transition is one-way: completed drafts cannot be re-opened or edited via draft tools (use the order tools, or refund/cancel for the resulting order).

  • create_collection

    Create a new manual collection (rule-based 'smart' collections aren't supported here — use the Shopify admin for those). Title is required; description, handle, and an initial product list are optional. Returns the new collection's GID, which you'll need for subsequent add_products_to_collection or update_collection calls. Side effect: collection becomes immediately visible in the storefront unless you've configured publication channels separately.

  • create_customer

    Create a new customer record via the Shopify Admin API. Side effect: writes a new PII record to live store data (requires write_customers scope); not reversible via this tool. At minimum supply email or phone; each must be unique across the store or Shopify returns a validation error. Optionally seed addresses (the first becomes the default shipping address), apply tags, and set email-marketing consent — only set SUBSCRIBED with documented opt-in (legally required in many jurisdictions). Returns a text confirmation with the new customer's display name, email, and GID (usable as customerId in c…

  • create_draft_order

    Create a new draft order — Shopify's term for an editable cart/quote not yet placed as an order. Each line item is EITHER a variant reference (variantId + quantity) for catalog products, OR a custom item (title + originalUnitPrice + quantity) for one-off charges or services not in the catalog. Optionally attach a customer, email, internal note, tags, and choose whether to copy the customer's default address. Returns the new draft's GID and an invoice URL the customer can use to pay. Drafts stay OPEN until you call complete_draft_order or send the invoice.

  • create_fulfillment

    Mark items as shipped — creates a fulfillment record covering one or more fulfillment orders. For each fulfillment order in the request, you can either fulfill everything still remaining (omit `fulfillmentOrderLineItems`) or specify per-line {id, quantity} pairs for partial shipments. Optionally attach tracking info (carrier + number; URL is auto-derived for major carriers like USPS/UPS/FedEx/DHL) and set notifyCustomer=true to send the shipment-confirmation email. The fulfillmentOrderLineItem IDs come from list_fulfillment_orders. Side effects: customer-facing email if notifyCustomer is true;…

  • create_metaobject

    Create a new metaobject (instance) of an existing type. The `type` must match a registered metaobject definition — call list_metaobject_definitions first if you're unsure. `fields` is an array of {key, value} pairs; values are always strings (JSON/reference fields take a JSON-encoded string, primitives take literal text). `handle` is optional; Shopify generates one from the displayName field if present. `status` only applies to types that have the `publishable` capability — passing it for non-publishable types is silently ignored. Returns the new metaobject's GID for use in subsequent set_meta…

  • create_order

    Create a real Shopify order directly, bypassing the draft-order flow. Each line item is either a variant reference (variantId + quantity) or a custom item (title + priceSet + quantity). Use when you need to import historical orders, record a phone/in-person sale, or create an order without involving Shopify's checkout pricing engine. For interactive carts where Shopify should compute taxes/shipping/discounts, use create_draft_order then complete_draft_order instead. Defaults: PENDING financial status, customer not notified, inventory decremented respecting each variant's oversell policy.

  • create_product

    Create a new product via the Shopify Admin API. Side effect: writes live store data (requires write_products scope); not reversible via this tool — use update_product to set status=ARCHIVED to retire it. The product is created first, then any image_urls (publicly fetchable) are attached as a follow-up call — Shopify pulls each URL and rehosts on its CDN. Defaults to status=DRAFT to prevent accidentally publishing half-configured products; pass status=ACTIVE only when ready to go live. New products start with a single hidden 'Default Title' variant; to add real variants with options, call creat…

  • create_variants

    Create one or more variants (SKUs) on an existing product via the Shopify Admin API. Side effect: writes live store data (requires write_products scope); not reversible via this tool (use delete_variants to remove). Each variant's optionValues must cover EVERY option declared on the product — partial coverage is rejected. New products from create_product start with a single hidden 'Default Title' variant; when adding the first real variants, pass strategy='REMOVE_STANDALONE_VARIANT' so Shopify replaces the placeholder. inventoryQuantities seeds initial stock per location at create time; use se…

Show 47 more tools
  • create_webhook

    Subscribe to a Shopify event topic and have payloads POSTed to your HTTPS endpoint. Common topics: ORDERS_CREATE, ORDERS_PAID, ORDERS_FULFILLED, PRODUCTS_CREATE, PRODUCTS_UPDATE, INVENTORY_LEVELS_UPDATE, CUSTOMERS_CREATE, APP_UNINSTALLED. Use includeFields to receive only specific fields in the payload (reduces bandwidth and avoids leaking unrelated data). metafieldNamespaces opts in to including metafields from the listed namespaces. callbackUrl must be HTTPS in production. Returns the new subscription's GID; verify delivery is working with a few real events before relying on it.

  • delete_collection

    Permanently delete a collection. Products inside it are NOT deleted — only the grouping is removed; products keep all their other associations (other collections, tags, inventory). Irreversible. Confirm the collection ID with get_collection before calling. Returns the deleted collection ID, or a 'nothing deleted' message if the GID didn't match anything.

  • delete_draft_order

    Permanently delete a draft order. Only OPEN/INVOICE_SENT drafts can be deleted — completed drafts are real orders and orders cannot be deleted (cancel them instead). Irreversible. Returns the deleted GID, or a no-op message if the GID didn't match anything.

  • delete_metafield

    Permanently delete a single metafield by (ownerId, namespace, key). Irreversible — the value is gone after this call. Use list_metafields first to confirm the namespace and key, since typos result in a no-op rather than an error. Other metafields on the same resource are unaffected. To delete every metafield on a resource, you'd need a list+loop pattern; this tool only deletes one at a time.

  • delete_metaobject

    Permanently delete a metaobject by GID. Irreversible. Any metafield references pointing at this metaobject will become broken — Shopify does NOT auto-clean references, you have to find and fix them. Use get_metaobject to confirm the right record before deleting. Returns the deleted GID, or a no-op message if nothing matched.

  • delete_variants

    Permanently delete one or more variants from a product. Irreversible. Each product must keep at least one variant — Shopify rejects requests that would empty the product (delete the whole product via update_product status:ARCHIVED, or use the admin UI for full deletion). Variants in completed orders are kept-but-hidden by Shopify automatically; the historical record on the order is preserved.

  • delete_webhook

    Permanently unsubscribe from an event topic by deleting the webhook subscription. Stops all future deliveries to that endpoint for that topic — irreversible (you'd have to re-create with create_webhook). Use when retiring an integration or switching topics. Returns the deleted GID, or a no-op message if nothing matched.

  • generate_and_create_product

    Generate a product image with the configured ComfyUI server, upload it to Shopify's staged storage, then create a new Shopify product with that image attached. Only available when the server is configured with a ComfyUI URL (otherwise this tool is not registered). Side effects: runs a (potentially slow, GPU-bound) image generation on ComfyUI, then writes a new product to live store data (requires write_products scope); not reversible via this tool. Title and description default from the prompt when not given; the created product defaults to DRAFT. The `price` argument is currently echoed only,…

  • generate_product_image

    Generate a new image with the configured ComfyUI server, upload it to Shopify's staged storage, and attach it to an existing product. Only registered when the server has a ComfyUI URL configured. Side effects: runs a GPU-bound generation on ComfyUI, then adds media to live store data (requires write_products scope). Additive only — it never replaces or removes existing product images. Returns a text confirmation with the product GID, image filename, and ComfyUI prompt_id. Use generate_and_create_product to create a brand-new product with a generated image, refine_product_image to img2img an ex…

  • get_collection

    Fetch a single collection by GID with full details — title, handle, sort order, description, and the first N products inside it. Pass productsFirst=0 for metadata-only when you don't need the products array. Returns a friendly text view; pageInfo flags when more products exist beyond the requested page.

  • get_draft_order

    Fetch a single draft order with full details: status, customer, line items (with quantity, title, and unit price), invoice URL, and the resulting real order if it's already been completed. Use to inspect a draft before calling update_draft_order or complete_draft_order. Returns a friendly text summary.

  • get_fulfillment

    Fetch a single fulfillment (a shipment record produced by create_fulfillment) by GID. Returns its status (SUCCESS/CANCELLED/etc.), tracking entries (carrier, number, URL), the parent order, and timestamps. Use after create_fulfillment to confirm the shipment took, or when a webhook delivers a fulfillment GID and you need the details.

  • get_fulfillment_order

    Fetch a single fulfillment order by GID with its full line-item set and remaining quantities. Use this when you have the FulfillmentOrder ID directly (e.g. from a webhook payload) and want detail without having to look up its parent order first. Returns the same shape as list_fulfillment_orders for one record.

  • get_metaobject

    Fetch a single metaobject by GID and return its display name, handle, type, publishable status, and all of its field values. Field values longer than 120 characters are truncated in the rendered output (full values are still on the underlying record). Use list_metaobjects to discover GIDs first.

  • get_order

    Fetch a single order's full record by GID or numeric ID — includes header fields (email, totals, both status flags, timestamps), full line items (title + quantity), and the customer email if on file. Returned as JSON for downstream tooling. Use list_orders to discover order IDs first. To inspect or act on shipments for this order, follow up with list_fulfillment_orders.

  • get_product

    Fetch a single product's full record by GID or numeric ID. Read-only, no side effects (requires read_products scope). Returns pretty-printed JSON: header fields (title, handle, status, vendor, productType, description, tags), inventory totals, the first 10 images and 10 media items, and the first 20 variants with their prices, SKUs, inventory quantities, and inventoryItem GIDs (those inventoryItem GIDs are required by set_inventory_quantity). Returns 'Product not found: <id>' if the GID doesn't resolve. Use list_products to discover IDs first; for more than 20 variants follow up with list_vari…

  • get_webhook

    Fetch a single webhook subscription's full configuration by GID — topic, endpoint, format, API version, includeFields filter, metafield namespaces, and timestamps. Use to verify subscription details before update or delete, or when debugging delivery issues.

  • list_collections

    List collections in the store, most recently updated first. Returns each collection's title, handle, ID, and product count. Supports Shopify's collection query syntax for filtering by title, type, or update time. Cursor-paginated; pass `after` from the previous response to advance. Use this to find a collection's GID before calling get_collection, update_collection, or add_products_to_collection.

  • list_customers

    List customers in the store, newest first by creation date. Read-only, no side effects (requires read_customers scope — note this is PII). Returns a text summary, one line per customer: display name, email, lifetime order count, total amount spent (in shop currency), and GID. Supports Shopify's customer query syntax for filtering by email, tag, order count, spend, marketing-consent, account state, and more. Cursor-paginated; pass `after` to advance pages. Use this to find customer GIDs before referencing them in create_order/create_draft_order, or to segment for marketing.

  • list_draft_orders

    List draft orders (carts/quotes that haven't yet been completed into real orders), most recently updated first. Returns each draft's name (e.g. 'D1023'), status (OPEN/COMPLETED/INVOICE_SENT), total price, customer name, and whether it's already been converted to an order. Supports Shopify's draft-order query syntax for filtering by status, customer, tag, or update time. Cursor-paginated.

  • list_fulfillment_orders

    List the fulfillment orders attached to a Shopify order. A fulfillment order groups line items by the location that will ship them — a single order can have multiple fulfillment orders if items split across warehouses. Each one tracks per-line remaining quantity (totalQuantity minus what's already shipped/cancelled). Returns the assigned location, destination address, and line-item progress for each. This is the primary read tool you'll call before create_fulfillment to figure out which fulfillmentOrderLineItem IDs and quantities to mark as shipped.

  • list_locations

    List the store's locations — physical or virtual places where inventory is stocked or fulfilled from (warehouses, retail stores, drop-ship partners). Returns each location's name, active/inactive flag, city + country, and GID. The location GID is required by set_inventory_quantity and create_fulfillment. Inactive locations still exist but cannot accept new inventory or fulfillments.

  • list_metafields

    List metafields attached to a single Shopify resource. Returns each metafield's namespace.key, type, current value, and optional description. Pass a `namespace` to scope the read to one app/integration's metafields (recommended when the resource has many). Empty result is normal for resources without metafields. Use this to inspect existing custom data before calling set_metafield, or to audit which apps have written what to a record.

  • list_metaobject_definitions

    List the metaobject definitions (custom types/schemas) registered on this Shopify store, with their field definitions. Each definition declares a `type` handle, a set of typed fields, and which fields are required. Use this tool to discover what custom data shapes the store supports before calling list_metaobjects (which queries instances of one type) or create_metaobject (which creates a new instance). Cursor-paginated.

  • list_metaobjects

    List instances of a single metaobject type — e.g. all 'lookbook' or 'product_feature' entries. Returns each metaobject's display name, handle, GID, and (when the type is publishable) ACTIVE/DRAFT status. The type handle comes from list_metaobject_definitions. Cursor-paginated; pass `after` to advance pages. To inspect an individual metaobject's full field values, follow up with get_metaobject.

  • list_orders

    List orders in the store, newest first by creation date. Returns each order's name (e.g. '#1042'), total price (in shop currency), financial status (paid/pending/refunded), fulfillment status (fulfilled/unfulfilled/partial), and timestamp. Supports Shopify's order query syntax for filtering by status, date range, customer, tags, and more. Cursor-paginated; the last line shows the next cursor when more pages exist. Use this to find order GIDs before calling get_order or list_fulfillment_orders.

  • list_products

    List products in the store with cursor-based pagination via the Shopify Admin GraphQL API. Read-only, no side effects (requires read_products scope). Returns a text summary, one line per product: title, status (ACTIVE/DRAFT/ARCHIVED), GID, and total inventory across all variants/locations; the last line is either 'next cursor: ...' (pass as `after` to page) or '(end of results)'. Supports Shopify's product query syntax for filtering by status, vendor, type, tag, title (wildcard), and date ranges. Use this to find product GIDs before calling get_product, update_product, list_variants, or any pr…

  • list_variants

    List up to `first` variants of a single product, plus the product's option definitions (Size, Color, etc.) and possible values. Read-only, no side effects (requires read_products scope). Returns a text summary: per variant title, GID, price, compareAtPrice, SKU, barcode, current inventory quantity, taxable flag, inventory policy, and the option-value combination. Returns 'Product not found' if the GID doesn't resolve. Use to inspect a product's full SKU matrix before calling create_variants/update_variants/delete_variants.

  • list_webhooks

    List webhook subscriptions on the store. Each subscription wires a Shopify event topic (ORDERS_CREATE, PRODUCTS_UPDATE, INVENTORY_LEVELS_UPDATE, etc.) to a delivery target — typically an HTTPS callback URL, but Pub/Sub and EventBridge are also supported. Returns each subscription's topic, delivery format (JSON/XML), endpoint, API version, and any field/metafield filters applied. Filter by topic to scope the result. Use this to audit existing automation hooks before creating new ones.

  • refine_product_image

    Refine an image with ComfyUI img2img using a text prompt, then attach the refined result to the product. Only registered when the server has a ComfyUI URL configured. The source is `source_image_url` if given, otherwise the product's current featured image (errors if neither is available). Side effects: runs a GPU-bound generation on ComfyUI, then adds the new image to live store data (requires write_products scope) — the original image is left in place, not replaced. Lower `denoise` keeps more of the original; higher follows the prompt more freely. Returns a text confirmation with the product…

  • refund_order

    Issue a refund against an order — for specific line items (with quantities and optional restock behaviour), for shipping, or both. Returns the new refund's GID and total amount refunded. To refund a full order use cancel_order with refund=true instead (one-step). Use this tool when refunding partially: just one item, just shipping, an adjustment without item breakdown, or a return that needs explicit restock-to-location handling. The `restockType` per line item controls inventory behaviour: NO_RESTOCK (default — the items aren't coming back), CANCEL (restock as if cancelled), RETURN (restock w…

  • remove_products_from_collection

    Remove one or more products from a manual collection. Like add_products_to_collection, this runs as an async job for larger batches — the response includes job ID and `done` status. Products not currently in the collection are silently skipped. Removes the membership only; products themselves are not deleted or modified.

  • remove_tags

    Remove tags from any taggable Shopify resource (Product, Order, Customer, DraftOrder, Collection, Article, Blog). Tags not currently on the resource are silently ignored. To replace the full tag set rather than remove specific ones, use update_product/update_customer/etc. with the new tag list.

  • reorder_variants

    Set the display order of variants on a product. Positions are 1-indexed and must be unique across all variants in the product (you can't have two variants both at position 2). Affects the order variants appear on the product page and in Shopify admin. Only provide the variants whose positions are changing — others stay where they are.

  • run_shopifyql_query

    Run a ShopifyQL analytics query against the store. ShopifyQL is Shopify's SQL-like analytics language. Read-only, no side effects (requires read_reports / analytics access on the token; Shopify Plus or analytics-eligible plans only). By default returns a rendered ASCII table (a row count plus headers, column data types, and rows); pass raw=true to get the unformatted JSON payload instead. Parse errors come back as a readable error list rather than throwing. Examples: 'FROM sales SHOW total_sales BY day SINCE -30d TIMESERIES', 'FROM products SHOW product_title, quantity_sold BY product_id SINCE…

  • set_inventory_quantity

    Set the absolute available inventory for one variant at one location. This is a direct overwrite, not an adjustment — passing 5 sets the count to 5 regardless of what was there before. The pair (inventory_item_id, location_id) uniquely identifies the inventory level: get inventory_item_id from get_product (it's on each variant) and location_id from list_locations. Records a Shopify inventory adjustment with the reason code you provide. Use 'correction' for cycle counts/manual fixes, 'received' when receiving stock, 'cycle_count_available' for systematic counts. Tracks history; the audit log sh…

  • set_metafield

    Create or update (upsert) a single metafield on any supported Shopify resource — product, variant, collection, customer, order, draft order, shop, or shop policies. The (ownerId, namespace, key) triple is the unique identifier; calling this tool with an existing triple replaces the value, otherwise creates a new metafield. The `type` must be a Shopify-supported metafield type and the `value` must serialize per that type — e.g. JSON types take a JSON string, references take a target GID, primitives take literal text. Errors come back as MCP tool errors with the validation messages from Shopify.

  • update_collection

    Update an existing collection's title, description (HTML), or URL handle. Only provide fields you want to change; omitted fields are left untouched. Changing the handle changes the storefront URL — Shopify does NOT create automatic redirects from the old slug, so existing links break. To change collection membership use add_products_to_collection / remove_products_from_collection instead.

  • update_customer

    Update an existing customer's profile fields — email, name, phone, tags, internal note — via the Shopify Admin API. Side effect: mutates live PII data immediately (requires write_customers scope); not reversible via this tool. Only provide fields you want changed; omitted fields stay as-is. `tags` is a full replacement (use add_tags/remove_tags for additive/subtractive changes). Email and phone changes must still satisfy per-store uniqueness. Returns a text confirmation with the customer's display name, email, and GID. Addresses and marketing consent are not editable here (use Shopify's addres…

  • update_draft_order

    Modify an existing OPEN draft order's customer, email, note, tags, or line items. Important: if `lineItems` is provided, it REPLACES the existing items entirely (not a merge or append) — read the current items first if you need to preserve any. Cannot update completed drafts; those are real orders. To pause and pick up a draft later, leave it OPEN and re-invoke update later; nothing here triggers payment.

  • update_fulfillment_tracking

    Update or add tracking info on an existing fulfillment after the fact. Use this when you've already called create_fulfillment but didn't have the carrier/tracking number yet, or when a tracking number was wrong and needs fixing. company+number is enough; Shopify auto-derives the URL for known carriers (USPS, UPS, FedEx, DHL, etc.). Set notifyCustomer=true to re-send the shipping email with the updated tracking. Omitted fields are left unchanged.

  • update_metaobject

    Update an existing metaobject's handle, field values, or publishable status. Fields are upserted by key — pass only the fields you want to change; omitted fields keep their current values. To clear a field, pass an empty string or null-ish value matching the field type. If you change the handle, set redirectNewHandle=true to have Shopify redirect from the old handle on the storefront. The `type` cannot be changed by this tool — delete and recreate to change type.

  • update_order

    Update an existing order's metadata: email, tags, internal note, or custom attributes. Most order fields are immutable post-creation in Shopify (line items, totals, customer-of-record can't be changed via the Admin API after the fact) — for those, use refund_order or cancel_order to back out, then create a corrected order. Tags and customAttributes are full replacements: read the current values first if you want to merge rather than replace. Use when fixing a typo'd email, adding a fulfillment-team note, or attaching internal segmentation tags.

  • update_product

    Update an existing product's core fields — title, description (HTML), vendor, productType, tags, or status — via the Shopify Admin API. Side effect: mutates live store data immediately (requires write_products scope); not reversible via this tool. Only provide fields you want changed; omitted fields are left untouched. Note `tags` is a full replacement, not additive. Setting status=ARCHIVED hides the product from the storefront but preserves order history. Returns a text confirmation with the product's title and GID. Use create_product to add a new product, get_product to read without modifyin…

  • update_variants

    Update one or more existing variants in a single call via the Shopify Admin API. Side effect: mutates live store data immediately (requires write_products scope); price changes affect the storefront right away. Editable fields: price, compareAtPrice (set null to clear), SKU, barcode, taxable, inventoryPolicy, and optionValues. Per-variant; only the fields you provide are written. Inventory quantity is intentionally NOT editable here — use set_inventory_quantity to keep that audit trail in one place. Returns a text summary of the updated variants with their GIDs. Use create_variants to add new …

  • update_webhook

    Modify an existing webhook subscription's callback URL, payload format, includeFields filter, or metafield-namespace filter. Topic cannot be changed — to switch event types, delete and recreate the subscription. Use when migrating an endpoint to a new domain, switching from JSON to XML, or tightening payload size by adding includeFields. Omitted parameters are left unchanged.

  • upload_product_image

    Attach an image to an existing product by URL via the Shopify Admin API. Side effect: adds media to live store data (requires write_products scope); Shopify fetches the URL server-side and rehosts on its CDN, so the URL must be publicly reachable from Shopify's network. Additive — multiple calls add multiple images; this tool never replaces or deletes existing images. Returns a text confirmation with the new media GID(s). Use the bridge tools (generate_product_image, refine_product_image) instead when you want the image generated by ComfyUI rather than provided as a URL.

Signals

Stars
2
Forks
0
Open issues
0
Weekly downloads
16
Last commit
Jun 8, 2026 (4 months ago)
Last release
Apr 25, 2026 (6 months ago)
Last package publish
Apr 25, 2026 (6 months ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.miller-joe/shopify-mcp
Version
0.1.2
Auth
API key
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from miller-joe

Cite this page

Shopify MCP. Agent Mart. https://agentmart.dev/connectors/miller-joe-shopify-mcp (last updated 2026-10-24)