oda-mcp
by kolonialno
README.md
# oda-mcp
MCP server for agentic grocery shopping at [Oda](https://oda.com) (Norway) and [Mathem](https://www.mathem.se) (Sweden). Plug it into Claude Code, Gemini CLI, or any MCP-compatible client and let an AI do your grocery shopping.
## Prerequisites
You need [`uv`](https://docs.astral.sh/uv/) installed to use `uvx`:
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
Or on macOS: `brew install uv`
## Setup (one time)
Run the setup command to pick your store and store your credentials:
```bash
uvx --from git+https://github.com/kolonialno/oda-mcp.git oda-mcp-setup
```
You'll be asked to choose a store:
```
Which store do you want to connect to?
1. Oda (Norway)
2. Mathem (Sweden)
```
Then enter your email and password. The setup verifies your credentials and stores the config at `~/.config/oda-mcp/config.json` (chmod 600).
## Connect to Claude Code
```bash
claude mcp add oda -- uvx --from git+https://github.com/kolonialno/oda-mcp.git oda-mcp
```
## Connect to Gemini CLI
```bash
gemini mcp add oda uvx --from git+https://github.com/kolonialno/oda-mcp.git oda-mcp
```
> **Note:** `uvx` caches the package locally. To pick up updates from the repo, run with `--refresh` or re-run the `claude mcp add` command.
## Switching stores
To switch between Oda and Mathem, just re-run setup — it will overwrite the existing config:
```bash
uvx --from git+https://github.com/kolonialno/oda-mcp.git oda-mcp-setup
```
Then restart your MCP client to pick up the new config.
## Available tools
| Tool | Description |
|------|-------------|
| `search_products` | Search the catalog by keyword |
| `get_product` | Full product details by ID (nutrition, ingredients, allergens) |
| `get_related_products` | Similar/alternative products |
| `get_for_you` | Your personalized feed (usuals, history, lists) |
| `get_cart` | View the current cart |
| `add_to_cart` | Add a product by ID |
| `remove_from_cart` | Remove a quantity of a product |
| `clear_cart` | Empty the cart |
| `get_suggestions` | Trending searches or query completions with product matches |
| `get_orders` | Order history grouped by month, with pagination |
| `get_order` | Full order details including all line items |
## Example prompts
- "Search for lactose-free milk and show me the unit prices"
- "What's in my cart?"
- "Copy all products from my last order into the cart"
- "Find me an organic banana and add it to the cart"
- "Show me the full nutrition info for product 18232"
## More endpoints to add
There are many more API endpoints to explore. Candidates for next iterations:
- Delivery slot availability
- Category browsing