Skip to main content
Glama

M-Connect

An unofficial client for the Migros mobile API. It comes in two parts:

  • An MCP server so Claude (or any MCP client) can search the Migros catalogue, check offers and stores, and read your own Cumulus data.

  • A local web dashboard for the same thing, in your browser.

It is not affiliated with Migros. See Legal before using it.

What you can do

Without logging in: search products with prices and filters, scan barcodes, browse offers and promotions, find stores and check stock, look up recipes.

Signed in with your Migros account: see your Cumulus points, coupons, bons and stampcards, read your digital receipts and spending, and see which coupons match the products you buy most.

It is read-only by default. Anything that changes your account needs an explicit confirm=true.

Related MCP server: Mercadona MCP Server

Install

python3 -m venv .venv && source .venv/bin/activate
pip install -e '.[web]'

Log in

The login uses your own Migros credentials. The app's OAuth client secret is not in this repo; it is read at runtime from your own copy of the app, so point MIGROS_APP_LIBRARY at the app binary:

export MIGROS_APP_LIBRARY=/path/to/Payload/migros.app/Frameworks/MigrosAppLibrary.framework/MigrosAppLibrary
migros-login

This opens your browser. Log in, and you land on a www.migros.ch page whose URL contains ?code=.... Copy that full URL and paste it back when asked. Tokens are saved to ~/.migros/tokens.json.

Run

MCP server (for Claude Desktop or Claude Code):

migros-mcp

Add it to Claude Desktop in ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "migros": {
      "command": "/absolute/path/.venv/bin/migros-mcp",
      "env": { "MIGROS_APP_LIBRARY": "/path/to/MigrosAppLibrary" }
    }
  }
}

Web dashboard:

migros-web          # http://127.0.0.1:8765

Config

All optional, set as environment variables.

Variable

Default

Meaning

MIGROS_APP_LIBRARY

none

path to the app binary (loads the OAuth secret for login)

MIGROS_FIREBASE_PLIST

none

path to the app's GoogleService-Info.plist (shopping-list items)

MIGROS_LANGUAGE

de

de, fr, it, en

MIGROS_ZIP

none

postcode to shop from (sets your region and prices)

MIGROS_IMPERSONATE

off

e.g. safari18_0, if the gateway blocks plain requests (needs pip install '.[impersonate]')

Notes

  • The production gateway sits behind Cloudflare. A normal client usually gets through; if you see a 403 maintenance page, set MIGROS_IMPERSONATE or run from a different network.

  • Editing your shopping list is not possible from here. The app guards that data with Firebase App Check (device attestation), which a script cannot produce.

Tests

make test

This is an independent, personal-use project. It is not affiliated with, authorised by, or endorsed by Migros.

  • It ships no Migros code, assets, keys, or data. You use your own login, and the OAuth secret and Firebase config are read from your own copy of the app.

  • Use it with your own account only, at human scale. Do not scrape, poll, or automate at a scale a person would not.

  • You are responsible for following Migros's terms and your local law.

  • Found a security issue in Migros's app or services? Report it to Migros, not here.

  • No warranty. It may break when Migros changes its API.

"Migros" and "Cumulus" are trademarks of their owners.

License

MIT. See LICENSE.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    A
    maintenance
    A Model Context Protocol server for real-time Swiss grocery shopping that searches and compares products across 8 major Swiss retailers (Migros, Coop, Aldi, Denner, Lidl, Farmy, Volgshop, Otto’s), normalizes per-unit prices, surfaces promotions, computes optimal multi-store shopping plans, and works with any MCP-compatible client without API keys or accounts.
    2
    7
    153 npm
    39
    -
  • A
    license
    A
    quality
    C
    maintenance
    Connects Claude and other MCP clients to myGEKKO building controllers via the official Query API, enabling natural-language queries and control of smart-home devices. It is read-only by default, with write actions available only through explicit opt-in and safety policies.
    3
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables Claude to connect to a household's ICA account through BankID and access shopping lists, offers, bonus, stores, product lookup, catalogue search, purchase history, and Handla online prices. It also provides OAuth-based MCP connection, admin controls, audit logging, and optional list-writing tools.
    MIT