透過 MCP 將英國超市價格接入 AI 助理:免費指數伺服器與付費產品級數據方案
Get UK supermarket prices into an AI assistant via MCP: a free index server and a paid full-data route
Russell Yapp介紹兩種透過 MCP 查詢英國超市價格的途徑:免費伺服器提供每週指數和 212 項固定購物籃,付費 Apify Actors 按事件收費並按要求返回產品級價格。免費數據是靜態快照,沒有產品名稱、搜尋或即時查價功能;價格是網上標示價,並非 CPI 或消費者實際付款價格。文章亦説明 Claude 的接入步驟,以及 Apify 帳戶的費用和授權注意事項。
If you ask an AI assistant what groceries cost, it will usually guess or search the web. I would rather it read a dataset. The Model Context Protocol (MCP) lets an assistant call tools on a remote server, so a price dataset can be one of those tools.
This article covers two routes. One is a free MCP server I run that serves a weekly shelf-price index and a small fixed basket. The other is Apify's hosted MCP server, which lets an assistant run two pay-per-event Actors that return product-level shelf prices on request. The free route is static snapshots and cannot answer every question. The paid route exists for the questions it cannot.
The free server has its own page, with the endpoint, tools and licence: https://data.yappman.com/mcp/.
The free index and basket are a small sample. Product-level data, on request, comes from the two paid Actors covered further down.
The problem
An assistant asked "did UK shelf prices go up this week?" has three bad options: recall something from training, search the web and quote a news article, or make up a figure. None of them gives you a dated source you can cite.
A tool call fixes the first part. The assistant asks a server for a specific week, gets rows back, and can say which week and where it came from. That is the whole idea.
For background on the wider choice of UK supermarket price sources, free and paid, I compared them in an earlier article: Where to get UK supermarket price data: free and paid, compared.
The free server
It is a small read-only server on Cloudflare Workers. It uses streamable HTTP and needs no key or account.
The address is:
https://yappman-grocery-mcp.blue-bar-ca29.workers.dev/mcp
It is also listed in the MCP Registry as io.github.yappmaniac/grocery-price-snapshots, and described at https://data.yappman.com/mcp/.
What it serves, all under CC BY 4.0:
- The weekly UK and Australian online shelf-price index. The Australian index includes Coles and Woolworths rows from my own collection runs.
- A fixed 212-item UK basket, with price, was-price, loyalty price, unit price, pack size and stock flag per retailer, on the days it was collected.
Product names, brands, descriptions and images are not served. Those belong to the retailers.
Add it in Claude
On a Free, Pro, Max, Team or Enterprise plan, Claude can use a remote MCP server as a custom connector. On Pro or Max:
- Go to Customize, then Connectors.
- Choose Add, then Add custom connector.
- Enter a name (for example "UK shelf prices") and the address above, then Continue.
- Under Authentication, Claude should detect "No sign-in"; leave it, then Add.
- In a chat, use the "+" button at the lower left, choose Connectors, and switch the new one on for that conversation.
On Team and Enterprise plans an owner adds the connector under Organization settings first, and each person then connects it. Free accounts are limited to one custom connector, which matters later in this article.
These steps follow Anthropic's help page "Get started with custom connectors using remote MCP", which I read on 27 October 2026. Menu labels change, so if yours differ, go by that page: https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp
If you use Claude Code, this command should add it (I tested the Claude.ai route above, not this one):
claude mcp add --transport http supermarket-prices https://yappman-grocery-mcp.blue-bar-ca29.workers.dev/mcp
Add it in ChatGPT
OpenAI documents how to connect your own MCP server to ChatGPT in its developer mode help article: https://help.openai.com/en/articles/12584461-developer-mode-apps-and-full-mcp-connectors-in-chatgpt-beta
I have not tried it, and which plans and workspaces can do it, and the menu names, are set by OpenAI and may change, so I am not giving steps here. Follow that page. The free server's address is the one given above.
Example questions and the tool that answers each
| You ask | Tool | Notes |
|---|---|---|
| Which weeks of the UK index are published? |
list_index_vintages with market: "uk"
|
Newest first, with publication time, revision and base week. |
| How did UK posted shelf prices move this week? |
get_shelf_price_index with market: "uk" and recordType: "headline"
|
Omit vintage for the latest week. Returns the index level and week-on-week change. |
| Which Australian retailer's shelf prices moved most last week? |
get_shelf_price_index with market: "au", then compare the retailer rows |
Retailer ids are coles, woolworths and aldi_au. |
| Show dairy and eggs for one UK retailer. |
get_shelf_price_index with market: "uk", retailer: "tesco" and class: "dairy-eggs"
|
class takes a product class id. |
| What did this barcode cost at the UK retailers that carry it on a given day? |
lookup_basket_prices with eans and date
|
Up to 20 barcodes per call. Only the 212 basket products. |
| What did a particular Aldi product cost? |
lookup_basket_prices with products: [{"retailer": "aldi", "retailerProductId": "..."}]
|
The basket holds no barcodes for Aldi, so use the retailer's product id. |
| Can I cite this? What is the licence and which days are missing? | about_the_data |
Returns the licence, what is not served, the published weeks and the basket date range with short and missing days. |
Each result from get_shelf_price_index and lookup_basket_prices carries a credit line. A well-behaved assistant will repeat it. You can ask it to.
A prompt to try: "Use the UK shelf prices connector. Call about_the_data first, then get the latest headline index and tell me the week, the week-on-week change and the credit line."
When you need more: the paid Actors via Apify's MCP server
The free server has no product names, no search and no live lookups. Questions like "what does this product cost at four retailers right now" or "price my shopping list" need product-level data. I publish two Actors on the Apify Store for that:
- UK Supermarket Price Scraper covers Tesco, Sainsbury's, Asda and Aldi.
- AU Supermarket Price Scraper covers Aldi Australia. (It can also read Coles and Woolworths, but only for runs on my own account; for any other account those two are skipped and not charged.)
The Store pages are the place for current pricing and what each mode does. Both are pay per event, charged to the Apify account that runs them. The Actors return current product-level data on request: the run happens when your assistant asks for it.
Apify hosts an MCP server at https://mcp.apify.com. A tools parameter in the address limits which Actors it offers as tools. It does not limit what your sign-in can reach: the client can read other runs, datasets and stores in your Apify account. If that matters, use a separate Apify account for this. Actors are written as owner/name and separated by commas. For the UK Actor:
https://mcp.apify.com?tools=yappman/uk-supermarket-price-scraper
I have connected to that address from Claude as a custom connector: it signs in through Apify and lists the Actor and four helper tools. Apify's documentation shows several Actors in one tools list separated by commas, so the address for both is ?tools=yappman/uk-supermarket-price-scraper,yappman/au-supermarket-price-scraper. I have connected with the Australian Actor in the list, but not with this exact address.
The four helper tools are Get Actor run, Get dataset items, Get key-value store record and Abort Actor run. Claude asks for approval before each tool call unless you change that setting. That is a client setting: if you allow a tool permanently, or use a client that runs tools automatically, Actor runs will start, and be charged, without asking.
The about_the_data tool on the free server points to the two Actors and, in a fullerData field, to that combined address, so an assistant that hits the limits of the free data can point you there.
Steps
- Create or sign in to an Apify account. Before connecting, set a monthly usage limit on that Apify account. Every run is charged to your account, not mine. Running these Actors costs money, so check the pricing on each Store page first.
- Add the address above to your client as a remote MCP server. In Claude, that is the same custom connector route as before, using the Apify address. Free Claude accounts are limited to one custom connector, so you would need to swap out the free server or use a paid plan to have both at once.
- Sign in with Apify when asked. Apify's documentation says OAuth is the recommended way to connect: your browser opens so you can sign in and approve access, and your API token stays out of the client configuration. Clients without OAuth support can send an Apify API token in an
Authorization: Bearerheader instead; use a scoped token and keep it out of shared or committed config. - Ask for what you want: "Use the UK supermarket Actor to find current shelf prices for semi-skimmed milk at Tesco, Asda and Aldi." Check the Actor call your client shows before you approve it.
Apify's MCP page (read 27 October 2026) gives no steps for Claude web connectors, so the Claude steps here come from my own test and Anthropic's help page.
Limits and licence
- Posted online shelf prices, not CPI, not prices paid. The index is not a government statistic and does not reflect what shoppers paid at the till.
- Static snapshots, not live. The free server serves compiled files. It may be incomplete or out of date. Check the retailer before relying on a price.
- Free hosting. The free server runs on a free plan. Heavy use may be turned away for the rest of the day. Please do not crawl it or build production systems on it, and I may change or remove it.
- Coverage. The basket is 212 products. The index has no product names. Anything wider is the paid route.
- Licence. My compilation is CC BY 4.0. I claim no rights in retailer content, and none is served. Credit it as: "Source: Yappman Data, [dataset title], [vintage or date], CC BY 4.0." The index and basket tools return the exact line. Say if you changed anything.
- Output of the paid Actors belongs to the Apify account that runs them, under Apify's terms. Retailer content in it (images, descriptions) is not mine to license. This is not legal advice.
- Independence. Yappman Data is not affiliated with or endorsed by any retailer, government body or Apify. Provided as is, with no warranty.
Links
- Free MCP server page: https://data.yappman.com/mcp/
- Endpoint: https://yappman-grocery-mcp.blue-bar-ca29.workers.dev/mcp
- MCP Registry name:
io.github.yappmaniac/grocery-price-snapshots - UK Actor: https://apify.com/yappman/uk-supermarket-price-scraper
- AU Actor: https://apify.com/yappman/au-supermarket-price-scraper
- Apify's MCP documentation: https://docs.apify.com/platform/integrations/mcp
- Earlier comparison article: https://dev.to/yappman/where-to-get-uk-supermarket-price-data-free-and-paid-compared-h3p
- Contact: info@yappman.com
If a tool returns something wrong or confusing, tell me in the comments.
Drafted with an AI assistant. The tests described were run on my own accounts on 27 October 2026, some by the assistant under my direction.
來源:DEV Community · dev.to