Skip to main content
Glama
MediaMarkt & Saturn MCP
by washedguy
README.md
# MediaMarkt & Saturn MCP

MCP server for MediaMarkt, MediaWorld, and Saturn products, prices, and availability.

## Quick start

Install [uv](https://docs.astral.sh/uv/getting-started/installation/) and add this to your MCP client configuration:

```json
{
  "mcpServers": {
    "mediamarkt-saturn": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/washedguy/mediamarkt-saturn-mcp",
        "mediamarkt-saturn-mcp"
      ]
    }
  }
}
```

## Tools

| Tool | What it does |
| --- | --- |
| `list_storefronts` | List supported countries, shop languages, currencies, and delivery filters. |
| `search_products` | Search by keyword, brand, price, and home delivery. Set `include_offers: true` to also fetch linked variants and marketplace offers. |
| `browse_page` | Explore shop brand, category, offer and campaign pages, including `related_pages` from a brand hub. |
| `get_product` | Get product details, variants, and marketplace offers by ID or URL. |
| `find_stores` | Find stores by city, postal code, or name. |
| `check_pickup_availability` | Check product IDs at a selected store. |

Choose `mediamarkt` or `saturn` as `retailer` and set `country` and, optionally, `language`. Defaults are `mediamarkt`, `de`, and the country's default language. Use the same retailer and country for products and stores; IDs are country-specific. Italy uses MediaWorld under `retailer: mediamarkt`.

| Country | `country` | Shop languages |
| --- | --- | --- |
| Germany | `de` | `de` (MediaMarkt and Saturn) |
| Austria | `at` | `de` |
| Switzerland | `ch` | `de`, `fr`, `it` |
| Netherlands | `nl` | `nl` |
| Belgium | `be` | `nl`, `fr` |
| Spain | `es` | `es` |
| Italy | `it` | `it` |
| Poland | `pl` | `pl` |
| Hungary | `hu` | `hu` |
| Türkiye | `tr` | `tr` |

Prices use the storefront's local currency. `delivery_only` uses the shop's in-stock delivery filter and is not yet available for Spain, Italy, or Türkiye. For example:

> Find Nintendo Switch consoles at Saturn under €500, then check pickup at a store in Berlin.

## Notes

- Set `HTTPS_PROXY` (or `ALL_PROXY` and `NO_PROXY`) to configure a proxy.
- Search results and marketplace offers may be incomplete. `include_offers` loads product pages and can take longer.
- Pickup availability is an estimate, not a reservation or exact stock count. Set `fresh: true` to bypass the local cache.
- This is an unofficial integration and storefront behavior may change.

## Development

To work on the server locally (Python 3.11+):

```bash
git clone https://github.com/washedguy/mediamarkt-saturn-mcp.git
cd mediamarkt-saturn-mcp
uv sync --frozen
uv run mediamarkt-saturn-mcp --config
```

Run `uv run python -m unittest discover -s tests -v` for tests and `uv run ruff check mediamarkt_mcp tests` for linting.

## Author

**[washed.dev](https://washed.dev)** · Building websites and web apps for your business

## License

[MIT](LICENSE)

TDQS

A4/5.0

Scored across 5 tools

Disambiguation4/5

Each tool has a distinct role: search vs. exact product retrieval, store location vs. storefront country listing, and pickup status. Some potential overlap exists between search_products and get_product when users have URLs/IDs, but descriptions clarify the boundary.

Naming Consistency5/5

All tool names follow a clean snake_case verb_noun pattern: search_products, find_stores, check_pickup_availability, list_storefronts, get_product. The convention is predictable and easy to scan.

Tool Count5/5

Five tools is well-scoped for a retail product/store lookup server. Each tool earns its place and there is no redundant surface area.

Completeness4/5

The toolset covers storefront discovery, product search, product detail retrieval, store lookup, and pickup availability, which is a coherent browsing lifecycle. It lacks explicit cart/ordering or delivery estimation operations, but those may be outside the server's intended scope.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues