UK supermarket prices: compare products and baskets across 13 stores, see price history, set alerts.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Say whether a product's cheapest current price is a good deal: its 60-day low and high, its typical price, and a verdict.
A productId returned by search_grocery_prices
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http grocery-prices https://mygrocerypal.co.uk/api/mcp
Say whether a product's cheapest current price is a good deal: its 60-day low and high, its typical price, and a verdict.
| Argument | Type | Description |
|---|---|---|
| productId* | string | A productId returned by search_grocery_prices |
{
"type": "object",
"required": [
"productId"
],
"properties": {
"productId": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,128}$",
"description": "A productId returned by search_grocery_prices"
}
},
"additionalProperties": false
}Total a basket of up to 30 products at each UK supermarket, name the cheapest single store, and suggest a split across two or three stores when it is cheaper or gets more of the list. Needs the user's MyGroceryPal account.
| Argument | Type | Description |
|---|---|---|
| items* | array |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"productId",
"quantity"
],
"properties": {
"quantity": {
"type": "integer",
"maximum": 99,
"minimum": 1
},
"productId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "A productId returned by search_grocery_prices"
}
}
},
"maxItems": 30,
"minItems": 1
}
},
"additionalProperties": false
}Watch a brand or a keyword on the user's MyGroceryPal account, so they hear when a matching product goes on offer. Needs the user's MyGroceryPal account.
| Argument | Type | Description |
|---|---|---|
| kind* | string | 'brand' follows every product of one brand; 'keyword' matches product names |
| term* | string | The brand name or keyword, e.g. 'Cadbury' or 'oat milk' |
| minSavingsPercent | any | Smallest saving worth an alert, in percent. Defaults to 15. |
{
"type": "object",
"required": [
"kind",
"term"
],
"properties": {
"kind": {
"enum": [
"keyword",
"brand"
],
"type": "string",
"description": "'brand' follows every product of one brand; 'keyword' matches product names"
},
"term": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"description": "The brand name or keyword, e.g. 'Cadbury' or 'oat milk'"
},
"minSavingsPercent": {
"anyOf": [
{
"type": "number",
"const": 5
},
{
"type": "number",
"const": 10
},
{
"type": "number",
"const": 15
},
{
"type": "number",
"const": 20
},
{
"type": "number",
"const": 30
}
],
"description": "Smallest saving worth an alert, in percent. Defaults to 15."
}
},
"additionalProperties": false
}Find a grocery product and its current price at every UK supermarket MyGroceryPal tracks, cheapest store first. Returns up to 5 products.
| Argument | Type | Description |
|---|---|---|
| query* | string | What to look for, e.g. 'Heinz baked beans 415g' or 'oat milk' |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"pattern": "[\\p{L}\\p{N}]",
"maxLength": 200,
"minLength": 1,
"description": "What to look for, e.g. 'Heinz baked beans 415g' or 'oat milk'"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.