get_related_products
Retrieve related products for a specific product using its SKU. This tool helps display cross-sell and upsell items in Magento 2 stores.
Instructions
Get products related to a specific product by SKU
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | The SKU (Stock Keeping Unit) of the product |
Implementation Reference
- mcp-server.js:539-582 (handler)Handler function that calls Magento API endpoint `/products/{sku}/links/related` to get related product SKUs, then fetches full details for each using `formatProduct`.async ({ sku }) => { try { const relatedProducts = await callMagentoApi(`/products/${sku}/links/related`); if (!relatedProducts || relatedProducts.length === 0) { return { content: [ { type: "text", text: `No related products found for SKU: ${sku}` } ] }; } // Get full details for each related product const productPromises = relatedProducts.map(related => callMagentoApi(`/products/${related.linked_product_sku}`) .then(product => formatProduct(product)) .catch(err => ({ sku: related.linked_product_sku, error: err.message })) ); const products = await Promise.all(productPromises); return { content: [ { type: "text", text: JSON.stringify(products, null, 2) } ] }; } catch (error) { return { content: [ { type: "text", text: `Error fetching related products: ${error.message}` } ], isError: true }; } }
- mcp-server.js:537-538 (schema)Input schema defining the required 'sku' parameter as a string.sku: z.string().describe("The SKU (Stock Keeping Unit) of the product") },
- mcp-server.js:533-583 (registration)Tool registration using `server.tool()` including name, description, input schema, and handler reference.server.tool( "get_related_products", "Get products related to a specific product by SKU", { sku: z.string().describe("The SKU (Stock Keeping Unit) of the product") }, async ({ sku }) => { try { const relatedProducts = await callMagentoApi(`/products/${sku}/links/related`); if (!relatedProducts || relatedProducts.length === 0) { return { content: [ { type: "text", text: `No related products found for SKU: ${sku}` } ] }; } // Get full details for each related product const productPromises = relatedProducts.map(related => callMagentoApi(`/products/${related.linked_product_sku}`) .then(product => formatProduct(product)) .catch(err => ({ sku: related.linked_product_sku, error: err.message })) ); const products = await Promise.all(productPromises); return { content: [ { type: "text", text: JSON.stringify(products, null, 2) } ] }; } catch (error) { return { content: [ { type: "text", text: `Error fetching related products: ${error.message}` } ], isError: true }; } } );