Lufa Farms MCP Server
You can use this server to let an AI agent manage your Lufa Farms grocery shopping: browse/search the catalog, get product details and nutrition, manage your basket, save favorites, and check your upcoming order and delivery info — all through natural language.
Authentication: Check login status (
lufa_auth_status) and log out (lufa_logout). Note: login is performed manually via CLI.Product discovery: Browse the weekly catalog (
lufa_get_products), search by keyword (lufa_search_products), get detailed info (lufa_get_product_details), and fetch nutritional facts (lufa_get_nutritional_facts).Basket management: View basket contents and totals (
lufa_view_basket), add products with optional quantity (lufa_add_to_basket), remove products (lufa_remove_from_basket), and add or remove favorites (lufa_add_favorite).lufa_save_basketis a legacy no-op retained for backwards compatibility.Order information: View upcoming order summary (
lufa_get_order_details) and delivery details with a countdown (lufa_get_checkout_info).Integration: Works as a standard stdio MCP server with any MCP-compatible client (e.g., Claude, Cursor).
Click on "Install 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., "@Lufa Farms MCP ServerAdd two heirloom tomatoes and a sourdough loaf to my basket."
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.
Lufa Farms MCP Server
Let an AI agent do your weekly grocery shopping on Lufa Farms.
"Add two portions of heirloom tomatoes, a sourdough loaf,
and whatever goat cheese they have this week to my basket."Disclaimer: This is an independent personal project, not affiliated with, endorsed by, or officially connected to Lufa Farms in any way. It wraps Lufa Farms' internal, undocumented web endpoints (see Discovered API endpoints) rather than any official or public API.
What is this?
An MCP (Model Context Protocol) server that wraps the Lufa Farms web API, exposing it as tools an AI agent (Claude, etc.) can call. You can browse the catalog, search for products, fill your basket, and inspect your upcoming order — all through natural language.
The server was reverse-engineered from the Lufa Farms web app's network traffic. It uses their internal /superMarket/* JSON endpoints, authenticated via a PHP session cookie.
Related MCP server: Instacart MCP Server
Requirements
Python 3.12+
A Lufa Farms account (https://montreal.lufa.com)
pip install -e .This installs the lufa-farms-mcp (server) and lufa-farms (login CLI) commands.
Project structure
MCP-LufaFarms/
├── src/lufa_farms/
│ ├── server.py # MCP server — tool declarations and dispatch
│ ├── client.py # Async HTTP client for the Lufa Farms API
│ ├── cli.py # `lufa-farms login` / `lufa-farms logout`
│ └── __main__.py # `python -m lufa_farms` entry point
├── pyproject.toml # Project metadata
└── README.mdSetup
This is a standard stdio MCP server, so it works with any MCP-compatible
agent or client (Claude Code, Claude Desktop, Cursor, Windsurf, etc.) — not
just one. After pip install -e ., add it to your client's MCP server
config using the installed lufa-farms-mcp command:
{
"mcpServers": {
"lufa-farms": {
"type": "stdio",
"command": "lufa-farms-mcp"
}
}
}Where that config lives depends on the client, e.g.:
Client | Config file |
Claude Code |
|
Claude Desktop |
|
Cursor |
|
Windsurf |
|
GitHub Copilot (VS Code) |
|
Then restart the client. The tools will be available in every conversation.
Available tools
Authentication
Logging in is not an MCP tool — credentials must never be typed into the agent conversation. Run this yourself in a terminal instead:
lufa-farms loginIt prompts for your email and password (password hidden, via getpass) and
saves the resulting session to ~/.lufa_session.json. The agent only ever
checks or clears that session:
Tool | Description |
| Log out and erase the saved session |
| Check whether you are currently logged in |
Lufa sessions last ~30 days. If yours expires, any tool call will return a
clear message telling you to run lufa-farms login again — no need to watch
for raw HTTP errors.
Products
Tool | Description |
| Browse the full weekly catalog |
| Search by keyword (e.g. |
| Get description, price, producer, and availability for one product |
| Get the nutritional panel (calories, macros, ingredients) |
Basket
Tool | Description |
| See current basket contents and totals |
| Add a product (with optional quantity) |
| Remove a product |
| Not required — kept for backwards compatibility, see note below |
| Save a product to your favorites for next week |
lufa_add_to_basket / lufa_remove_from_basket persist to Lufa's server
immediately — there is no "confirm order" step anywhere in Lufa's actual
site (no such button or endpoint exists in the marketplace frontend), so
lufa_save_basket has nothing to do and is kept only for backwards
compatibility.
Orders
Tool | Description |
| View the upcoming order: date, pickup point, totals |
| View delivery date, address, time window, and a countdown to delivery |
Example prompts
Search for goat cheese and add the cheapest one to my basket.Show me everything in my basket and tell me the total.Find all the bread products available this week and describe each one.Remove the kale from my basket and replace it with spinach.How much time do I have left before this week's order is delivered?How authentication works
A GET to
/en/loginseeds thePHPSESSIDcookie.A POST to
/en/loginsubmits the YiiLoginForm(fields:LoginForm[user_email],LoginForm[password]).The session is validated against
/superMarket/GetUserOrderDetails.All cookies are persisted to
~/.lufa_session.json— subsequent runs reuse them without re-logging in.
Delivery countdown
Lufa's API has no explicit "order cutoff" field. lufa_get_checkout_info
fills that gap by computing a countdown from the delivery date and delivery
window it does return: delivery_window_starts_at (an ISO timestamp) and
time_until_delivery (e.g. "3d 22h"). This is time until your delivery
window opens, not a confirmed order-lock deadline — Lufa may stop accepting
basket changes some time before that, but exactly when hasn't been
reverse-engineered. Treat it as a useful approximation, not a hard cutoff.
Discovered API endpoints
Method | Path | Purpose |
|
| Seed session cookie |
|
| Authenticate |
|
| Full catalog (also used to look up a single product) |
|
| Long description |
|
| Nutritional facts |
|
| Full-text search |
|
| Basket contents / order summary |
|
| Add to basket |
|
| Remove from basket |
|
| Legacy per-product add/set (not a basket-wide commit) |
|
| Add/remove favorite ( |
|
| Delivery date, address, time window |
Contributing
See CONTRIBUTING.md.
Security
See SECURITY.md for the threat model and how to report an issue.
License
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityAmaintenanceEnables AI assistants to interact with Picnic online supermarket for grocery shopping, meal planning, cart management, delivery tracking, and budget-conscious shopping in Netherlands and Germany.11589MIT
- AlicenseAqualityBmaintenanceEnables AI agents to search for products, manage shopping carts, and place grocery orders on Instacart using browser automation. It includes comprehensive tools for store discovery, product searching, and secure checkout with explicit user confirmation.11596MIT
- AlicenseAqualityDmaintenanceEnables AI agents to manage H-E-B grocery shopping tasks including product search, cart management, and coupon clipping through natural language.2547MIT
- Flicense-qualityBmaintenanceEnables AI models to manage Kroger/QFC shopping lists, search products, and plan meals via the Kroger API.
Related MCP Connectors
Manage your NanoCart store from any AI agent: products, orders, coupons, subscribers, reports.
Agent-native product catalog for AI shopping agents. 296M+ products, 28 countries.
Search direct grocery storefronts and create product-link pickup handoffs.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/FadiSheh/MCP-LufaFarms'
If you have feedback or need assistance with the MCP directory API, please join our Discord server