Skip to main content
Glama
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