migros-mcp 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/tools.js +44 -21
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ Once installed, just talk to Claude naturally:
|
|
|
15
15
|
|
|
16
16
|
- "Search Migros for protein bars"
|
|
17
17
|
- "What's the nutrition info for this Migros product?"
|
|
18
|
-
- "Find Migros stores near
|
|
18
|
+
- "Find Migros stores near Zurich"
|
|
19
19
|
- "What promotions does Migros have right now?"
|
|
20
20
|
- "Compare the protein content of these two products"
|
|
21
21
|
- "Which Migros products are gluten-free?"
|
package/dist/tools.js
CHANGED
|
@@ -15,7 +15,8 @@ export async function searchProducts(query, language) {
|
|
|
15
15
|
}, null, 2);
|
|
16
16
|
}
|
|
17
17
|
function formatNutrition(product) {
|
|
18
|
-
const
|
|
18
|
+
const productInfo = product.productInformation;
|
|
19
|
+
const nutrients = (productInfo?.nutrientsInformation ?? product.nutrientsInformation);
|
|
19
20
|
if (!nutrients?.nutrientsTable?.rows)
|
|
20
21
|
return null;
|
|
21
22
|
const table = nutrients.nutrientsTable;
|
|
@@ -23,10 +24,15 @@ function formatNutrition(product) {
|
|
|
23
24
|
const rows = table.rows ?? [];
|
|
24
25
|
if (rows.length === 0)
|
|
25
26
|
return null;
|
|
26
|
-
|
|
27
|
+
// Headers can be strings or objects with label/unit
|
|
28
|
+
const headerLabels = headers.map((h) => {
|
|
29
|
+
if (typeof h === "string")
|
|
30
|
+
return h;
|
|
31
|
+
return `${h.label ?? ""}${h.unit ? ` (${h.unit})` : ""}`;
|
|
32
|
+
});
|
|
27
33
|
const lines = [];
|
|
28
34
|
lines.push(`| Nutrient | ${headerLabels.join(" | ")} |`);
|
|
29
|
-
lines.push(
|
|
35
|
+
lines.push(`| --- | ${headerLabels.map(() => "---").join(" | ")} |`);
|
|
30
36
|
for (const row of rows) {
|
|
31
37
|
const values = (row.values ?? []).join(" | ");
|
|
32
38
|
lines.push(`| ${row.label ?? ""} | ${values} |`);
|
|
@@ -35,38 +41,55 @@ function formatNutrition(product) {
|
|
|
35
41
|
}
|
|
36
42
|
function formatProduct(product) {
|
|
37
43
|
const p = product;
|
|
44
|
+
const productInfo = p.productInformation;
|
|
45
|
+
const mainInfo = productInfo?.mainInformation;
|
|
46
|
+
// Brand can be top-level or nested in mainInformation
|
|
47
|
+
const brandInfo = mainInfo?.brand;
|
|
48
|
+
const brand = p.brand ?? brandInfo?.name;
|
|
38
49
|
const formatted = {
|
|
39
50
|
uid: p.uid,
|
|
40
51
|
name: p.name ?? p.title,
|
|
41
|
-
brand:
|
|
42
|
-
|
|
52
|
+
brand: brand,
|
|
53
|
+
versioning: p.versioning,
|
|
43
54
|
description: p.description,
|
|
44
|
-
origin: p.origin,
|
|
45
55
|
};
|
|
46
|
-
// Price
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
56
|
+
// Price info (under offer.price)
|
|
57
|
+
const offer = p.offer;
|
|
58
|
+
const offerPrice = offer?.price;
|
|
59
|
+
if (offerPrice) {
|
|
60
|
+
formatted.price = `CHF ${offerPrice.advertisedDisplayValue}`;
|
|
61
|
+
const unitPrice = offerPrice.unitPrice;
|
|
62
|
+
if (unitPrice) {
|
|
63
|
+
formatted.unitPrice = `CHF ${unitPrice.value}/${unitPrice.unit}`;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Promotional price
|
|
67
|
+
const promoPrice = offer?.promotionPrice;
|
|
68
|
+
if (promoPrice?.advertisedDisplayValue) {
|
|
69
|
+
formatted.promoPrice = `CHF ${promoPrice.advertisedDisplayValue}`;
|
|
70
|
+
}
|
|
71
|
+
if (offer?.quantity) {
|
|
72
|
+
formatted.quantity = offer.quantity;
|
|
54
73
|
}
|
|
55
74
|
// Ratings
|
|
56
|
-
const
|
|
75
|
+
const rating = mainInfo?.rating;
|
|
76
|
+
const ratings = (rating ?? p.ratings);
|
|
57
77
|
if (ratings) {
|
|
58
78
|
formatted.ratings = {
|
|
59
|
-
average: ratings.average,
|
|
60
|
-
count: ratings.count,
|
|
79
|
+
average: ratings.nbStars ?? ratings.average,
|
|
80
|
+
count: ratings.nbReviews ?? ratings.count,
|
|
61
81
|
};
|
|
62
82
|
}
|
|
63
83
|
// Ingredients
|
|
64
|
-
|
|
65
|
-
|
|
84
|
+
const ingredients = mainInfo?.ingredients ?? p.ingredients;
|
|
85
|
+
if (ingredients) {
|
|
86
|
+
// Strip HTML tags
|
|
87
|
+
formatted.ingredients = ingredients.replace(/<[^>]*>/g, "");
|
|
66
88
|
}
|
|
67
89
|
// Allergens
|
|
68
|
-
|
|
69
|
-
|
|
90
|
+
const allergens = mainInfo?.allergens ?? mainInfo?.allergenIndication ?? p.allergenText;
|
|
91
|
+
if (allergens) {
|
|
92
|
+
formatted.allergens = allergens;
|
|
70
93
|
}
|
|
71
94
|
// Nutrition table (formatted as markdown)
|
|
72
95
|
const nutritionTable = formatNutrition(product);
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,IAAI,iBAAiB,EACnC,iBAAiB,IAAI,oBAAoB,EACzC,aAAa,IAAI,gBAAgB,EACjC,YAAY,IAAI,eAAe,EAC/B,aAAa,IAAI,gBAAgB,GAClC,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAExD,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,OAAO,EAAE,0BAA0B,KAAK,GAAG;YAC3C,gBAAgB,EAAE,CAAC;YACnB,UAAU,EAAE,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,IAAI,EAAE,sHAAsH;KAC7H,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAgC;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,IAAI,iBAAiB,EACnC,iBAAiB,IAAI,oBAAoB,EACzC,aAAa,IAAI,gBAAgB,EACjC,YAAY,IAAI,eAAe,EAC/B,aAAa,IAAI,gBAAgB,GAClC,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAExD,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,OAAO,EAAE,0BAA0B,KAAK,GAAG;YAC3C,gBAAgB,EAAE,CAAC;YACnB,UAAU,EAAE,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,IAAI,EAAE,sHAAsH;KAC7H,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAgC;IACvD,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAyD,CAAC;IACtF,MAAM,SAAS,GAAG,CAAC,WAAW,EAAE,oBAAoB,IAAI,OAAO,CAAC,oBAAoB,CAEvE,CAAC;IAEd,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI;QAAE,OAAO,IAAI,CAAC;IAElD,MAAM,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC;IACvC,MAAM,OAAO,GAAI,KAAK,CAAC,OAAoD,IAAI,EAAE,CAAC;IAClF,MAAM,IAAI,GAAI,KAAK,CAAC,IAAqD,IAAI,EAAE,CAAC;IAEhF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,oDAAoD;IACpD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,gBAAgB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,WAAW,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,MAAM,MAAM,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,aAAa,CAAC,OAAgC;IACrD,MAAM,CAAC,GAAG,OAAkC,CAAC;IAC7C,MAAM,WAAW,GAAG,CAAC,CAAC,kBAAyD,CAAC;IAChF,MAAM,QAAQ,GAAG,WAAW,EAAE,eAAsD,CAAC;IAErF,sDAAsD;IACtD,MAAM,SAAS,GAAG,QAAQ,EAAE,KAA4C,CAAC;IACzE,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,CAAC;IAEzC,MAAM,SAAS,GAA4B;QACzC,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK;QACvB,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,WAAW,EAAE,CAAC,CAAC,WAAW;KAC3B,CAAC;IAEF,iCAAiC;IACjC,MAAM,KAAK,GAAG,CAAC,CAAC,KAA4C,CAAC;IAC7D,MAAM,UAAU,GAAG,KAAK,EAAE,KAA4C,CAAC;IACvE,IAAI,UAAU,EAAE,CAAC;QACf,SAAS,CAAC,KAAK,GAAG,OAAO,UAAU,CAAC,sBAAsB,EAAE,CAAC;QAC7D,MAAM,SAAS,GAAG,UAAU,CAAC,SAAgD,CAAC;QAC9E,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,SAAS,GAAG,OAAO,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QACnE,CAAC;IACH,CAAC;IACD,oBAAoB;IACpB,MAAM,UAAU,GAAG,KAAK,EAAE,cAAqD,CAAC;IAChF,IAAI,UAAU,EAAE,sBAAsB,EAAE,CAAC;QACvC,SAAS,CAAC,UAAU,GAAG,OAAO,UAAU,CAAC,sBAAsB,EAAE,CAAC;IACpE,CAAC;IACD,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC;QACpB,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACtC,CAAC;IAED,UAAU;IACV,MAAM,MAAM,GAAG,QAAQ,EAAE,MAA6C,CAAC;IACvE,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAwC,CAAC;IAC7E,IAAI,OAAO,EAAE,CAAC;QACZ,SAAS,CAAC,OAAO,GAAG;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;YAC3C,KAAK,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK;SAC1C,CAAC;IACJ,CAAC;IAED,cAAc;IACd,MAAM,WAAW,GAAG,QAAQ,EAAE,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC;IAC3D,IAAI,WAAW,EAAE,CAAC;QAChB,kBAAkB;QAClB,SAAS,CAAC,WAAW,GAAI,WAAsB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,YAAY;IACZ,MAAM,SAAS,GAAG,QAAQ,EAAE,SAAS,IAAI,QAAQ,EAAE,kBAAkB,IAAI,CAAC,CAAC,YAAY,CAAC;IACxF,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;IAClC,CAAC;IAED,0CAA0C;IAC1C,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,cAAc,EAAE,CAAC;QACnB,SAAS,CAAC,SAAS,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,aAAa;IACb,MAAM,UAAU,GAAG,CAAC,CAAC,UAAwD,CAAC;IAC9E,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjF,CAAC;IAED,QAAQ;IACR,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACZ,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,eAAe;IACf,MAAM,YAAY,GAAG,CAAC,CAAC,mBAA0D,CAAC;IAClF,IAAI,YAAY,EAAE,CAAC;QACjB,SAAS,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;IACnD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAExD,IAAI,CAAC,QAAQ,IAAK,QAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,OAAO,EAAE,4CAA4C;YACrD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAI,QAAsC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAE7E,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAa;IAC9C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;IAE5C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,OAAO,EAAE,wBAAwB,KAAK,GAAG;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa;IAC/C,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC"}
|