crousandgo-mcp
Integrates with the Crous & Go WooCommerce shop to list published menus, inspect and clear the cart, view recent orders, and place guarded 1 € menu orders through the shop’s checkout flow.
Uses the Crous & Go WordPress site’s public Store API and checkout endpoints to read catalogue and order data, manage the cart, and submit menu orders.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@crousandgo-mcpshow me tomorrow's Crous & Go menus and order the chicken one"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
crousandgo-mcp
The Crous & Go 1 € student menu, as tools an AI agent can use. See what's published, get asked which variant you want, and let the agent order and pay with Izly — with you in the loop.
What it does
Lists the menus published on Crous & Go (Fonderie, Mulhouse): date, midi or soir, plats, side options, stock.
Orders one for you: cart, checkout, then the Izly payment, with your own account.
Asks you every evening which variant you want, once per target date, and says nothing when you already ordered.
Tells the agent why when something fails, in plain words it can relay: "Izly balance too low to pay the 1 EUR menu…".
What it never does
Order without a go:
order_menuis a dry run unless the agent passesdry_run=False, and a kill switch refuses real orders until you enable them.Pay more than 1 €: any other price, or a cart that isn't exactly one 1 € menu, aborts.
Order twice for a date, or go over the per-process order budget.
Send your credentials anywhere but Crous & Go and Izly, or return them from a tool.
Unofficial. Not affiliated with CROUS or Izly. It drives the public shop and the Izly payment page with your own account, the way you would by hand. The rule stays: one 1 € meal per order and per student.
Install
git clone https://github.com/daniilsys/crousandgo-mcp && cd crousandgo-mcp
./install.shIt creates the virtualenv, installs the package (crousandgo and crousandgo-mcp commands) and Chromium for Playwright, and prints how to register the MCP server in your client (command .venv/bin/crousandgo-mcp). The agent skill is in skills/crousandgo-order. Then fill in ~/.config/crousandgo/.env:
CROUS_USER=... # your Crous & Go login
CROUS_PASS=...
IZLY_USER=... # your Izly login
IZLY_PASS=...
CROUSGO_ENABLE_WRITES=1 # kill switch: real orders are refused unless this is 1
CROUSGO_MAX_ORDERS=1 # real orders per server process
CROUSGO_LANG=en # language of the evening question: en or frand log in once: crousandgo login. The Izly account must be linked to your Crous & Go account (My account, Connexion à Izly) and funded.
Related MCP server: 402 MCP Restaurant Finder
Use it
crousandgo menus # what is published
crousandgo order 2026-11-02 poulet gateau gateau # dry run: checks the choices, orders nothing
crousandgo order 2026-11-02 poulet gateau gateau --yes # real order, paid with Izly
crousandgo watch 2026-11-03 poulet gateau gateau # wait for 13:00 the day before, then order
crousandgo ask # the 20:00 question, or nothingChoices are matched by substring, accents and case ignored. --service soir picks the evening menu.
With an agent, just talk to it: "commande-moi le menu de demain, poulet, fruit et compote". The skill makes it validate with a dry run and ask when something is ambiguous.
Tools
Tool | |
| published menus, plats, side options, stock, when ordering opens |
| current cart |
| recent orders with status, what was ordered (plat, side options), pickup date/time/place and an |
| empty the cart |
| order a menu. |
Every tool returns {ok, ...}. On ok: false there is a stable code and an English message the agent can relay in your language:
insufficient_funds, izly_bad_credentials, izly_not_linked, menu_not_open, menu_not_published, out_of_stock, already_ordered, bad_choice, unexpected_price, payment_not_confirmed, session_expired, site_unreachable, writes_disabled, budget_exhausted.
Safety
Dry run by default. The agent must pass
dry_run=Falseexplicitly, and the skill only lets it do so after your answer for that exact date.Kill switch.
CROUSGO_ENABLE_WRITESmust be1.crousandgo-mcp --read-onlydoesn't even register the write tools.Budget.
CROUSGO_MAX_ORDERSreal orders per server process (default 1).Price cap. The menu must cost exactly 1 € and the cart must hold only that item before checkout.
No silent success. A payment counts only when the WooCommerce order reaches "En cours" or "Terminée". Otherwise the agent gets
payment_not_confirmedand is told to checkget_ordersbefore retrying.Audit log. Every dry run and order is appended to
audit.jsonlwith itsreason.Secrets. Credentials come from the environment or a
.env(keep itchmod 600). They are never returned by a tool or logged.session.jsonholds Crous & Go cookies: treat it like a password.
How it works
The shop is WordPress + WooCommerce.
Catalogue and cart: the public Store API (
/wp-json/wc/store/v1).Add to cart: the product page's own form POST (variation, pickup zone, date and slot).
Checkout:
?wc-ajax=checkout, which answers with the Izly redirect.Payment: Chromium (Playwright) fills the Izly page with your credentials. A refusal comes back in the page's
.errorblock and is mapped to a code above.Login: Chromium logs in with
CROUS_USER/CROUS_PASSand saves the cookies tosession.json; it is replayed withhttpxand renewed automatically when it expires.crousandgo login --manualopens a visible browser instead.
Run it on a server
Everything is headless. Copy the folder (and the .env), run ./install.sh, then crousandgo login. For the "ask every evening, order on reply" setup, see docs/SCHEDULING.md. To expose the server over HTTP: crousandgo-mcp --http 8766 — there is no auth on that endpoint, keep it on a private network.
Repository
src/crousandgo/
server.py MCP server (FastMCP, stdio or HTTP) -> crousandgo-mcp
cli.py command line -> crousandgo
tools.py the agent-facing tools, guards, evening question
client.py HTTP client: catalogue, cart, checkout, orders
auth.py Chromium login, session.json
izly.py Izly payment page
errors.py error codes and messages
config.py paths, constants, env loading
skills/ agent skill
docs/ scheduling
tests/ offline tests (python -m unittest discover -s tests)
pyproject.tomlStatus
Used for real: login, add to cart, checkout, Izly payment and order confirmation were run end to end on a live account. The evening question and the reply-to-order flow depend on your agent setup and are described, not guaranteed, in docs/SCHEDULING.md. The "soir" menu pickup slot is assumed to be the same as midi. If the shop changes its markup, the HTML-parsing parts (checkout form, orders table) are the first thing to break.
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Pickup orders at Japanese restaurants for AI agents: find stores, read menus, place orders. No auth.
Restaurant menus, carts, reservations and owner drafts for AI agents (Thmenu MCP).
AI food ordering across Canada — 17,000+ restaurants, 89 cities, real UberEats + DoorDash.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to autonomously order food from Grubhub, including searching restaurants, browsing menus, managing cart, placing orders, and tracking delivery.30 npm1MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to browse restaurants and menus for free, and place orders with USDC payment via x402.-

Canuckeats MCPofficial
FlicenseNot gradedqualityDmaintenanceEnables AI agents to browse menus and place real food delivery orders from UberEats and DoorDash across 89 Canadian cities.1-- AlicenseAqualityCmaintenanceEnables an AI assistant to browse restaurants and menus, manage a cart, reorder past orders, review checkout details, and place food delivery orders, returning a payment link to complete payment.13MIT