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 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
- - ~50 confirmed US stores in catalog (`src/data/stores.ts`); some IDs remain unverified
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 ~50 entries in `src/data/stores.ts`.
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 are confirmed from `ikea.com/us/en/stores/<slug>/` pages.
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), `"042"` (Tampa, FL)
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
 
@@ -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
- // TODO: huntsville, arcadia, mcallen-pharr, san-marcos — IDs not found on store pages.
6
- // TODO: 313, 372, 414, 448, 529, 559, 612, 634, 652, 661, 663, 692, 693 — valid API IDs, city unknown (possibly CA/other).
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ikea-mcp",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Read-only MCP server for IKEA product search and in-store stock lookup. Supports stdio and Streamable HTTP transports.",
5
5
  "license": "MIT",
6
6
  "type": "module",