An MCP server that connects AI agents to the Shopify Admin API. Manage products, orders, customers, inventory, discounts, themes, and more — powered by the Admin GraphQL API.
136 tools across 18 categories covering the full Shopify Admin API surface.
get_shop_info — Store name, domain, email, plan, currency, timezonelist_products — List with filters and paginationget_product — Full details with variants and imagescreate_product — Create with variants and imagesupdate_product — Update fieldsdelete_product — Permanently deletelist_product_metafields — List metafields (GraphQL)get_product_metafield — Get by namespace/key (GraphQL)set_product_metafield — Create/update via metafieldsSet (GraphQL)delete_product_metafield — Delete metafield (GraphQL)list_metafield_definitions — List definitions (GraphQL)create_metafield_definition — Create definition with validation rules (GraphQL)list_product_images — List all imagesget_product_image — Get a specific imagecreate_product_image — Add by URL, set position and variantsupdate_product_image — Update alt text, position, or variant linksdelete_product_image — Remove an imagelist_variants — List all variants of a productget_variant — Get a specific variantcreate_variant — Add a variantupdate_variant — Update price, SKU, inventorydelete_variant — Remove a variantlist_custom_collections — List manual collectionslist_smart_collections — List automated collectionsget_custom_collection / get_smart_collection — Get by IDcreate_custom_collection / create_smart_collection — Create collectionsupdate_custom_collection / update_smart_collection — Update collectionsdelete_custom_collection — Delete collectionadd_product_to_collection — Add a productremove_product_from_collection — Remove a productreorder_collection_products — Reorder manual collectionslist_collection_products — List products in collectionlist_orders — List with filters and date rangeget_order — Full details with line itemsupdate_order — Update notes, tags, emailclose_order — Mark as closedcancel_order — Cancel with reason and restocklist_order_metafields — List metafields (GraphQL)get_order_metafield — Get by namespace/key (GraphQL)set_order_metafield — Create/update (GraphQL)delete_order_metafield — Delete metafield (GraphQL)list_customers — List with paginationsearch_customers — Search by email, name, countryget_customer — Full details and addressescreate_customer — Create with addressesupdate_customer — Update fieldslist_customer_metafields — List metafields (GraphQL)get_customer_metafield — Get by namespace/key (GraphQL)set_customer_metafield — Create/update (GraphQL)delete_customer_metafield — Delete metafield (GraphQL)list_locations — List all locationsget_location — Get location detailslist_inventory_levels — Stock quantities at a locationadjust_inventory — Adjust stock by +/−set_inventory — Set absolute quantitylist_draft_orders — List with paginationget_draft_order — Get by IDcreate_draft_order — Create with line itemsupdate_draft_order — Update draftcomplete_draft_order — Convert to real ordersend_draft_order_invoice — Email invoicedelete_draft_order — Delete draftlist_code_discounts / list_automatic_discounts — List discountsget_code_discount / get_automatic_discount — Get by IDcreate_code_discount_basic|bxgy|free_shipping — Create code discountscreate_automatic_discount_basic|bxgy|free_shipping — Create automatic discountsupdate_*_discount_* — Update any discount typeactivate_* / deactivate_* / delete_* — Manage discount lifecycle*_price_rule, *_discount_code — Legacy-named compatibility wrappers (GraphQL under the hood)list_fulfillment_orders — List fulfillment orderslist_fulfillments — List fulfillmentscreate_fulfillment — Create with trackingupdate_fulfillment_tracking — Update trackingcancel_fulfillment — Cancel fulfillmentlist_webhooks — List all webhooksget_webhook — Get by IDcreate_webhook — Register a webhookupdate_webhook — Update callback URLdelete_webhook — Remove a webhooklist_pages — List online store pages with filtersget_page — Full details with body HTMLcreate_page — Create a pageupdate_page — Update content, handle, publish statedelete_page — Permanently deletelist_menus — List navigation menusget_menu — Get full nested item tree by handlecreate_menu — Create with nested itemsupdate_menu — Replace title, handle, itemsdelete_menu — Delete non-default menuslist_files — List files in Content → Filescreate_file — Upload from an external URLupdate_file — Rename or update alt textdelete_files — Delete one or more filesstage_upload — Create staged upload targetslist_themes / get_theme — Inspect installed themescreate_theme — Install from a ZIP URLupdate_theme — Rename a themepublish_theme — Make a theme livedelete_theme — Remove a themelist_theme_files / get_theme_files — Browse and read filesupsert_theme_files — Create or update filesdelete_theme_files — Delete filescreate_bundle — Create a fixed product bundleupdate_bundle — Update bundle componentsget_bundle — Get bundle with componentsget_bundle_operation — Poll async bundle operationslist_app_installations — List installed appsget_app_installation — Get install details and scopesAdd to your MCP client configuration and start using it immediately.
{ "mcpServers": { "kockatoos-shopify-mcp": { "command": "npx", "args": ["-y", "@kockatoos/shopify-mcp"], "env": { "SHOPIFY_STORE_NAME": "your-store-name", "SHOPIFY_CLIENT_ID": "your-client-id", "SHOPIFY_CLIENT_SECRET": "your-client-secret" } } } }
| Variable | Required | Description |
|---|---|---|
SHOPIFY_STORE_NAME |
Required | Your store name (not the full .myshopify.com domain) |
SHOPIFY_ACCESS_TOKEN |
Option A | Admin API access token (shpat_...) — works for any app type |
SHOPIFY_CLIENT_ID |
Option B | App client ID (store-created custom apps) |
SHOPIFY_CLIENT_SECRET |
Option B | App client secret (store-created custom apps) |
SHOPIFY_API_VERSION |
Optional | API version (defaults to 2026-01) |
Two ways to authenticate: a direct Admin API access token, or the client_credentials OAuth grant for store-created custom apps.
Set SHOPIFY_ACCESS_TOKEN to an Admin API token. For Partner Dashboard apps, run npx shopify-mcp-get-token to complete browser OAuth once and obtain a token.
For custom apps created in the Shopify admin, set SHOPIFY_CLIENT_ID and SHOPIFY_CLIENT_SECRET. Tokens are fetched and refreshed automatically — no browser auth needed.
Configure in Shopify Admin → Apps and sales channels → Develop apps → API access. Grant only the scopes for the tool groups you plan to use.