BasketWatch MCP Server
A Model Context Protocol server that exposes the BasketWatch Irish grocery data API as tools your AI agent can call directly. Works with Claude Desktop, Continue.dev, Cursor, and any other MCP-compatible client.
~47,000 Irish supermarket SKUs across Aldi, Tesco, SuperValu and Dunnes Stores. Refreshed every night. Now queryable by Claude.
Requires a BasketWatch API key
This MCP server is a thin client over the BasketWatch API — you'll need an API key to use it. Three ways to get one:
- Direct subscription (recommended for production use): unlimited API access, weekly CSV exports, custom support. Email info@basketwatchireland.com to subscribe.
- Trial / evaluation key: time-limited key for one-off exploration. Email the same address with subject "MCP trial key request".
- Already on Apify or RapidAPI? Those channels have their own auth flow and don't use this MCP server — use the SDK / proxy URL they provide instead.
The MCP server itself is free open-source — the API access behind it is what you pay for.
What your agent can do
Once installed, your agent has 8 grocery-aware tools:
| Tool | What it does |
|---|---|
status |
Cross-retailer health snapshot — SKU counts, last-scrape dates, run status |
search_products |
Find products by name in one or all stores |
compare_price_across_stores |
One-call comparison across all 4 supermarkets |
get_promotions |
List products currently on offer at a given store |
recent_price_changes |
Week-over-week price movements |
newly_added_products |
New listings in a configurable lookback window |
removed_products |
Delistings / range cuts |
list_products |
Paginated catalogue dump for walking the full assortment |
Example questions your agent can answer:
- "Where can I buy Heinz Baked Beans cheapest this week?"
- "Build me a €40 weekly grocery list across the 4 supermarkets."
- "Which products got cheaper at Tesco this week?"
- "What promotions are running on chocolate at Dunnes right now?"
- "Track the price of Brennans bread for the next 12 weeks."
Install
pip install basketwatch-mcp
Or from source:
git clone https://github.com/basketwatch/basketwatch-mcp.git
cd basketwatch-mcp
pip install -e .
Configuration
| Variable | Default | Purpose |
|---|---|---|
BASKETWATCH_API_BASE |
(required) | Origin of the BasketWatch API (e.g. https://basketwatch.fly.dev, or https://api.basketwatch.ie once that's live) |
BASKETWATCH_API_KEY |
(required) | Your BasketWatch API key — issued when you subscribe / request a trial |
BASKETWATCH_MCP_DAILY_LIMIT |
0 (off) |
Optional client-side daily cap — extra safety on top of your key's server-side limit |
BASKETWATCH_MCP_RATE_PER_MIN |
0 (off) |
Optional client-side per-minute rate limit |
Important: by default the MCP server imposes no client-side rate
limits — paid subscribers get whatever throughput their key allows on the
BasketWatch origin. The two BASKETWATCH_MCP_*_LIMIT env vars are escape
valves for use cases like:
- Giving a Claude Desktop install to someone who shouldn't burn through the family / team API quota
- Self-imposed budget caps during evaluation
The origin's per-key rate limit (enforced server-side) is the authoritative throttle. Trial keys get tight limits; paid-subscriber keys get high or unlimited throughput.
When a client-side limit is configured AND hit, every tool returns:
{
"error": "Client-side rate limit reached: ...",
"limit_hit": true,
"hint": "Email info@basketwatchireland.com to get an API key with higher / unlimited usage."
}
Hook it up to Claude Desktop
Edit your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add a basketwatch entry under mcpServers:
{
"mcpServers": {
"basketwatch": {
"command": "basketwatch-mcp",
"env": {
"BASKETWATCH_API_BASE": "https://basketwatch.fly.dev",
"BASKETWATCH_API_KEY": "your-api-key-here"
}
}
}
}
Restart Claude Desktop. You'll see "basketwatch" listed as an available MCP server in Claude's MCP indicator. Ask Claude "What's the cheapest 1L of milk in Ireland?" — it'll use the tools automatically.
Hook it up to Continue.dev / Cursor
These clients use the same MCP protocol over stdio. Add a server block to
your ~/.continue/config.json (Continue) or equivalent Cursor config:
{
"mcpServers": {
"basketwatch": {
"command": "basketwatch-mcp",
"env": {
"BASKETWATCH_API_BASE": "https://basketwatch.fly.dev",
"BASKETWATCH_API_KEY": "your-api-key-here"
}
}
}
}
Local development
git clone https://github.com/basketwatch/basketwatch-mcp.git
cd basketwatch-mcp
python -m venv .venv && source .venv/bin/activate # or .venv\Scripts\activate on Windows
pip install -e .
export BASKETWATCH_API_BASE="https://basketwatch.fly.dev"
export BASKETWATCH_API_KEY="your-key"
# Run the server directly to test (it speaks MCP over stdio — type JSON-RPC
# requests at it or use `mcp dev` from the MCP SDK for interactive testing).
python basketwatch_mcp.py
Data freshness
- All four retailers are refreshed every night.
- Each tool response includes a
scrape_datefield per row so the agent knows exactly when each price was captured. - Higher-cadence pulls (daily / twice-weekly) are available with a direct
subscription — email
info@basketwatchireland.com.
Not affiliated
BasketWatch is not affiliated with Aldi Ireland, Tesco Ireland, Musgrave SuperValu or Dunnes Stores. Data is collected from publicly available sources for lawful market research and price comparison purposes.
License
MIT.
Metadata
Release files for basketwatch-mcp 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| basketwatch_mcp-0.3.0.tar.gz | 14.3 kB | Without provenance | Details for basketwatch_mcp-0.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| basketwatch_mcp-0.3.0-py3-none-any.whl | Python 3 | none | any | Details for basketwatch_mcp-0.3.0-py3-none-any.whl |
Total release size: 28.5 kB
Release files / basketwatch_mcp-0.3.0.tar.gz
| Download URL | basketwatch_mcp-0.3.0.tar.gz |
|---|---|
| Size | 14.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
28267f2fbd10e0edeb9209808d7857ee53629b775811fbb619927e27023b6207
|
|
BLAKE2b-256 checksum How to use checksums |
f5a63ffcec244b95cd0d16fd26c23f803b4425b4990b26b208ed9c78556ddbc3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.5
|
Release files / basketwatch_mcp-0.3.0-py3-none-any.whl
| Download URL | basketwatch_mcp-0.3.0-py3-none-any.whl |
|---|---|
| Size | 14.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
15f30692ee0af7082c61831a9e5a74116e4226249c4383c484560e220ed288e2
|
|
BLAKE2b-256 checksum How to use checksums |
36e19cab2e409e6c10a1df866676fe43a64d1a630a526a3a65ed1b7bd7ee0cab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.5
|
Security for basketwatch-mcp 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.