albert-heijn-mcp 1.5.0 → 1.5.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.
Files changed (2) hide show
  1. package/README.md +26 -6
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -82,7 +82,7 @@ Ask in Dutch, English or any language your assistant speaks:
82
82
 
83
83
  There's nothing to install: [connect a client](#connecting-a-client) with `npx -y albert-heijn-mcp`, which downloads and runs the [latest version](https://www.npmjs.com/package/albert-heijn-mcp), then ask it to log you in to Albert Heijn.
84
84
 
85
- To install it permanently instead, run `npm install --global albert-heijn-mcp` and use the `albert-heijn-mcp` command. To [build from source](#development), clone the repository.
85
+ To install it permanently instead, run `npm install --global albert-heijn-mcp` and use the `albert-heijn-mcp` command; run the same command again to update. To [build from source](#development), clone the repository.
86
86
 
87
87
  ## Logging in
88
88
 
@@ -102,7 +102,7 @@ You only log in once. Tokens are stored on your machine and refreshed automatica
102
102
  | OS | Location |
103
103
  |---|---|
104
104
  | macOS | `~/Library/Application Support/albert-heijn-mcp/tokens.json` |
105
- | Linux | `~/.config/albert-heijn-mcp/tokens.json` |
105
+ | Linux | `~/.config/albert-heijn-mcp/tokens.json` (or under `$XDG_CONFIG_HOME`) |
106
106
  | Windows | `%AppData%\albert-heijn-mcp\tokens.json` |
107
107
 
108
108
  The file is readable only by your user. Override the location with `AH_TOKENS_PATH`.
@@ -117,6 +117,7 @@ Install it in one click:
117
117
 
118
118
  [![Install in Cursor](https://img.shields.io/badge/Cursor-Install_server-000000?logo=cursor&logoColor=white)](https://cursor.com/en/install-mcp?name=ah&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImFsYmVydC1oZWlqbi1tY3AiXX0%3D)
119
119
  [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_server-0098FF)](https://insiders.vscode.dev/redirect/mcp/install?name=ah&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22albert-heijn-mcp%22%5D%7D)
120
+
120
121
  Other clients that start MCP servers as a local command run `npx -y albert-heijn-mcp`. Most of them take this JSON in their MCP settings:
121
122
 
122
123
  ```json
@@ -249,7 +250,7 @@ Tools that return data also return it as [structured output](https://modelcontex
249
250
  |---|---|
250
251
  | `ah_search_recipes` | Search Allerhande recipes; Dutch terms work best. |
251
252
  | `ah_get_recipe` | Ingredients, steps, and nutrition per serving. `servings` scales the ingredients. |
252
- | `ah_add_recipe_to_shopping_list` | Match a recipe's ingredients to products and add them to the list in one step. `skip` leaves out what you have; `dry_run=true` previews the matches. |
253
+ | `ah_add_recipe_to_shopping_list` | Match a recipe's ingredients to products and add them to the list in one step. It prefers products on bonus (`prefer_bonus=false` turns that off); `skip` leaves out what you have, and `dry_run=true` previews the matches. |
253
254
 
254
255
  </details>
255
256
 
@@ -304,6 +305,7 @@ Choosing a delivery or pick-up slot in the AH app moves your shopping list into
304
305
  - **Delivery orders can't be started through the API.** `ah_get_delivery_slots` lists the windows, but booking one, which starts the order, happens in the AH app or on ah.nl. While the order is active, AH doesn't serve the shopping list; the tools say so and point to the order tools.
305
306
  - **Ticking off shopping-list items isn't supported:** the API returns no usable item IDs.
306
307
  - **Bonus Box**, AH's personal weekly deals, is not available: its API is unknown.
308
+ - **Limits per call:** at most 99 of a product, 50 items, and 100 characters for a free-text item or list name.
307
309
 
308
310
  ## Development
309
311
 
@@ -322,11 +324,11 @@ Run it from the checkout with `node dist/index.js`, or use `/path/to/albert-heij
322
324
  | [`src/index.ts`](src/index.ts), [`src/config.ts`](src/config.ts) | Entry point, flags and settings |
323
325
  | [`src/ahapi/`](src/ahapi) | Client for AH's REST and GraphQL API, on Node's built-in `fetch` |
324
326
  | [`src/auth/`](src/auth) | Login code exchange, token storage and refresh |
325
- | [`src/server/`](src/server) | Streamable HTTP transport and token check |
327
+ | [`src/server/`](src/server) | Streamable HTTP transport and OAuth login |
326
328
  | [`src/tools/`](src/tools) | The MCP tools, one file per area |
327
329
  | [`deploy/`](deploy) | systemd unit, shipped in the package |
328
330
  | [`listing/`](listing) | Name, descriptions and icon to use in connector settings and app directories ([how](listing/README.md)) |
329
- | [`.github/`](.github) | CI, release workflow and Dependabot |
331
+ | [`.github/`](.github) | CI, release workflow, Dependabot and the pinned `mcp-publisher` install |
330
332
  | [`assets/`](assets) | Logo for this README and the server icon shown by MCP clients |
331
333
 
332
334
  The only runtime dependencies are the official [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk) and Zod, which the SDK uses for tool schemas.
@@ -339,7 +341,7 @@ npx @modelcontextprotocol/inspector node dist/index.js
339
341
 
340
342
  Before deploying a change, run a quick check against a real account: log in, search for `melk`, add a product to your shopping list and remove it again, then view your cart and orders.
341
343
 
342
- To release, set the new version in `package.json` and in both places in [`server.json`](server.json), merge it to `main`, and push a tag: `git tag v1.2.3 && git push origin v1.2.3`. The [release workflow](.github/workflows/release.yml) checks that the versions match, builds the package, attaches it to the GitHub release as `albert-heijn-mcp.tgz`, and stages it on npm through [trusted publishing](https://docs.npmjs.com/trusted-publishers), so no npm token is stored. Approve the staged version on npmjs.com (or with `npm stage approve`) to make it live; the workflow then updates the [MCP Registry](https://registry.modelcontextprotocol.io) entry.
344
+ To release, set the new version with `npm version 1.2.3 --no-git-tag-version` and in both places in [`server.json`](server.json), merge it to `main`, and push a tag: `git tag v1.2.3 && git push origin v1.2.3`. Only repository admins can create `v*` tags. The [release workflow](.github/workflows/release.yml) checks that the versions match, builds the package, attaches it to the GitHub release as `albert-heijn-mcp.tgz`, and stages it on npm through [trusted publishing](https://docs.npmjs.com/trusted-publishers), so no npm token is stored. Approve the staged version on npmjs.com (or with `npm stage approve`) to make it live; the workflow then updates the [MCP Registry](https://registry.modelcontextprotocol.io) entry. The release starts without notes; write them on GitHub.
343
345
 
344
346
  ## Troubleshooting
345
347
 
@@ -373,6 +375,24 @@ AH accepts order changes only once an order exists. Choose a delivery slot in th
373
375
  Choosing a slot moved your list into the order. Use `ah_get_cart` and `ah_update_cart_item` until the order is delivered or cancelled.
374
376
  </details>
375
377
 
378
+ <details>
379
+ <summary><b>"Already connected as …" when pasting a login code</b></summary>
380
+
381
+ A code never replaces a working login, so a code from someone else's account can't switch you over. To switch accounts, ask to log out first, then log in again.
382
+ </details>
383
+
384
+ <details>
385
+ <summary><b>The HTTP server doesn't start: "needs AH_MCP_TOKEN of at least 32 characters"</b></summary>
386
+
387
+ Set `AH_MCP_TOKEN` to a long random value, e.g. the output of `openssl rand -hex 32`, and restart. Changing it logs out every client; reconnect them once.
388
+ </details>
389
+
390
+ <details>
391
+ <summary><b>OAuth login shows "This login link is not valid"</b></summary>
392
+
393
+ Start connecting again from the client. If it keeps happening right after you enter the token, check that `AH_MCP_BASE_URL` is exactly the address in your browser, including `https://`: the login form is only accepted from that address.
394
+ </details>
395
+
376
396
  <details>
377
397
  <summary><b>OAuth login opens at localhost, or the client can't reach it</b></summary>
378
398
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "albert-heijn-mcp",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "Unofficial MCP server for Albert Heijn: products, bonus deals, Allerhande recipes, your shopping list and orders in any AI assistant",
5
5
  "keywords": [
6
6
  "mcp",