ikea-mcp 1.1.0 → 1.2.0
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 +6 -6
- package/dist/data/stores.js +24 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ Read-only MCP server for IKEA product search and in-store stock lookup.
|
|
|
17
17
|
|
|
18
18
|
## MVP limitations
|
|
19
19
|
- Uses unofficial public IKEA APIs — no SLA, may break without notice
|
|
20
|
-
- ~
|
|
20
|
+
- ~65 confirmed US and Canada stores in catalog (`src/data/stores.ts`); some IDs remain unverified
|
|
21
21
|
- Cash-and-carry availability only — click-and-collect and home delivery not exposed
|
|
22
22
|
- HTTP transport has no auth — do not expose publicly without adding authentication
|
|
23
23
|
- Read-only — no cart, order, or account operations
|
|
@@ -190,7 +190,7 @@ Find stores with the highest in-stock quantity for an item. Queries stores in pa
|
|
|
190
190
|
]
|
|
191
191
|
```
|
|
192
192
|
|
|
193
|
-
Returns `[]` if no store has the item in stock. "All known stores" means the ~
|
|
193
|
+
Returns `[]` if no store has the item in stock. "All known stores" means the ~65 US and Canada entries in `src/data/stores.ts`.
|
|
194
194
|
|
|
195
195
|
---
|
|
196
196
|
|
|
@@ -302,12 +302,12 @@ The `Accept: application/json, text/event-stream` header is required by the MCP
|
|
|
302
302
|
|
|
303
303
|
## Store IDs
|
|
304
304
|
|
|
305
|
-
Store metadata (ID → city label) lives in `src/data/stores.ts`. ~50 US stores
|
|
305
|
+
Store metadata (ID → city label) lives in `src/data/stores.ts`. ~50 US stores confirmed from `ikea.com/us/en/stores/` pages; 15 Canada stores confirmed from `ikea.com/ca/en/stores/` pages (all probed against the stock API).
|
|
306
306
|
|
|
307
307
|
Confirmed compatible `storeId` formats:
|
|
308
|
-
- Standard 3-digit: `"399"` (Burbank, CA)
|
|
309
|
-
- Leading-zero 3-digit: `"026"` (Canton, MI), `"
|
|
310
|
-
- 4-digit: `"921"` (Brooklyn, NY), `"1129"` (Syracuse, NY)
|
|
308
|
+
- Standard 3-digit: `"399"` (Burbank, CA, US), `"216"` (Calgary, AB, CA)
|
|
309
|
+
- Leading-zero 3-digit: `"026"` (Canton, MI, US), `"039"` (Montreal, QC, CA)
|
|
310
|
+
- 4-digit: `"921"` (Brooklyn, NY, US), `"1129"` (Syracuse, NY, US)
|
|
311
311
|
|
|
312
312
|
Some stores remain unconfirmed (no store page ID found or not yet probed). A few valid-looking IDs from the stock API have no known city mapping — see TODO comments in `stores.ts`.
|
|
313
313
|
|
package/dist/data/stores.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
// US store labels confirmed from ikea.com/us/en/stores/<slug>/ pages (store_id= survey param).
|
|
2
|
+
// CA store labels confirmed from ikea.com/ca/en/stores/<slug>/ pages (storeNo= embedded JSON).
|
|
2
3
|
// IDs match the sto/{storeId} path used by the IKEA stock API.
|
|
3
4
|
// 4-digit IDs (921, 1099, 1129) are newer-format stores — confirmed working with stock API.
|
|
4
5
|
// 3136 (San Francisco) returns 405 from stock API — excluded.
|
|
5
|
-
//
|
|
6
|
-
//
|
|
6
|
+
// 698 (CA — unknown city) returns 422 from stock API — excluded.
|
|
7
|
+
// 659 (Toronto Downtown) returns 200 but null quantity — included conservatively.
|
|
8
|
+
// TODO: huntsville, arcadia, mcallen-pharr, san-marcos (US) — IDs not found on store pages.
|
|
9
|
+
// TODO: 448, 612, 634, 652, 661, 663, 692, 693 — valid API IDs, city/country unknown.
|
|
7
10
|
export const STORE_LABELS = {
|
|
11
|
+
// ── United States ────────────────────────────────────────────────────────────
|
|
8
12
|
"026": "026 (Canton, MI)",
|
|
9
13
|
"027": "027 (Round Rock, TX)",
|
|
10
14
|
"028": "028 (Portland, OR)",
|
|
@@ -57,6 +61,24 @@ export const STORE_LABELS = {
|
|
|
57
61
|
"921": "921 (Brooklyn, NY)",
|
|
58
62
|
"1099": "1099 (University Park, TX)",
|
|
59
63
|
"1129": "1129 (Syracuse, NY)",
|
|
64
|
+
// ── Canada ───────────────────────────────────────────────────────────────────
|
|
65
|
+
// Confirmed from ikea.com/ca/en/stores/<slug>/ pages (storeNo= embedded JSON).
|
|
66
|
+
// All probed against stock API with item 20522046 — all return 200.
|
|
67
|
+
"003": "003 (Richmond, BC, CA)",
|
|
68
|
+
"004": "004 (Ottawa, ON, CA)",
|
|
69
|
+
"039": "039 (Montreal, QC, CA)",
|
|
70
|
+
"040": "040 (Burlington, ON, CA)",
|
|
71
|
+
"149": "149 (North York, ON, CA)",
|
|
72
|
+
"216": "216 (Calgary, AB, CA)",
|
|
73
|
+
"249": "249 (Winnipeg, MB, CA)",
|
|
74
|
+
"256": "256 (Etobicoke, ON, CA)",
|
|
75
|
+
"313": "313 (Coquitlam, BC, CA)",
|
|
76
|
+
"349": "349 (Edmonton, AB, CA)",
|
|
77
|
+
"372": "372 (Vaughan, ON, CA)",
|
|
78
|
+
"414": "414 (Boucherville, QC, CA)",
|
|
79
|
+
"529": "529 (Halifax, NS, CA)",
|
|
80
|
+
"559": "559 (Quebec City, QC, CA)",
|
|
81
|
+
"659": "659 (Toronto Downtown, ON, CA)",
|
|
60
82
|
};
|
|
61
83
|
export function storeLabel(storeId) {
|
|
62
84
|
return STORE_LABELS[storeId];
|
package/package.json
CHANGED