MCP tools not returning product URL on DEV shop

Hi — quick question up front before the details:

For Shopify DEV stores, is there any extra configuration required to have the MCP endpoint behave like a normal store for development?

We’re integrating a Shopify MCP (Model Context Protocol) but its not returning product URL.

On some Shopify DEV stores, MCP responses return url: null for products, even though:
• The product is published
• The product page is accessible directly in the browser
• Example product URL (anonymized): https://{dev-store}.myshopify.com/products/{product-handle}
• Markets, catalogs, and sales channels (including Online Store) appear configured (not sure if any required option is missing)

Because url is missing/null, we can’t redirect, even though MCP instructions explicitly say to render titles as links using the url field.

MCP call #1 — get_product_details

Request

{
  "method": "tools/call",
  "params": {
    "name": "get_product_details",
    "arguments": {
      "product_id": "gid://shopify/Product/PRODUCT_ID"
    }
  }
}

Response

{
  "product": {
    "product_id": "gid://shopify/Product/PRODUCT_ID",
    "title": "Bounce Balm",
    "description": "",
    "url": null,
    "image_url": "https://cdn.shopify.com/URL_KEYWORD",
    "images": [
      {
        "url": "https://cdn.shopify.com/URL_KEYWORD",
        "alt_text": null
      }
    ],
    "options": [
      {
        "name": "Title",
        "values": ["Default Title"]
      }
    ],
    "price_range": {
      "min": "22.0",
      "max": "22.0",
      "currency": "USD"
    },
    "selectedOrFirstAvailableVariant": {
      "variant_id": "gid://shopify/ProductVariant/VARIANT_ID",
      "title": "Default Title",
      "price": "22.0",
      "currency": "USD",
      "image_url": "https://cdn.shopify.com/URL_KEYWORD",
      "available": true
    }
  },
  "instructions": "Use markdown to render product titles as links to their respective product pages using the URL property."
}

Key issue

url is null, so we cannot render a clickable product link, despite explicit instructions to do so.

MCP call #2 — search_shop_catalog

Request

{
  "method": "tools/call",
  "params": {
    "name": "search_shop_catalog",
    "arguments": {
      "query": "balm",
      "limit": 10,
      "context": ""
    }
  }
}

Response (formatted)

{
  "products": [
    {
      "product_id": "gid://shopify/Product/PRODUCT_ID",
      "title": "Bounce Balm",
      "description": "",
      "image_url": "https://cdn.shopify.com/URL_KEYWORD",
      "price_range": {
        "min": "22.0",
        "max": "22.0",
        "currency": "USD"
      },
      "product_type": "",
      "tags": [],
      "variants": [
        {
          "variant_id": "gid://shopify/ProductVariant/VARIANT_ID",
          "title": "Default Title",
          "price": "22.0",
          "currency": "USD",
          "image_url": "https://cdn.shopify.com/URL_KEYWORD",
          "available": true
        }
      ]
    }
  ],
  "instructions": {
    "rendering": "Use markdown to render product titles as links to their respective product pages using the URL property."
  }
}

Again, there is no url field for products in search results.

What we need help confirming
1. Is url expected to be present for DEV stores? If not, is this a known limitation/behavior?
2. If it should be present: what store settings does MCP use to resolve/construct the canonical product URL (market, catalog, sales channel, primary domain, password page, etc.)?

We are having the same problem and we want to know if we should build a fallback for getting the product URL just in case this a store setting we are not understanding

Hi @Mark_Hender

Is the storefront password enabled on the store where you’re seeing this?

Hey @Liam-Shopify , yes it does have a storefront password

Hi guys,

I am also seeing the exact same behavior. Dev store with a password does not return a url when console logging from the formatProductData function, even though the product is active

Development stores are designed to be password protected so not sure what a workaround is meant to look like if you can provide some insights, it would be much appreciated @Liam-Shopify

Hey folks - following up on this :waving_hand: - this is a current limitation on our end, but we have this on our radar to look into enabling an exception for dev shops. I can’t guarantee a turnaround time, or what the fix will ultimately look like, but feel free to check back here intermittently and I’ll update you all once we have a confirmed fix.