AnyList MCP Server
A Model Context Protocol (MCP) server that connects AI assistants to AnyList — giving them access to your shopping lists, recipes, and meal plans.
Features
- Shopping Lists — View lists, check items, add freeform items or recipe ingredients
- Recipes — Search and retrieve full recipe details including ingredients and steps
- Meal Planning — View and schedule meals on your AnyList calendar
- Grocery Helpers — Add ingredients from one or multiple recipes to a list with duplicate handling
Prerequisites
- Node.js >= 18
- An AnyList account (email/password)
Setup
-
Clone this repository:
git clone <this-repo> anylist-mcp cd anylist-mcp -
Install dependencies:
npm install -
Build:
npm run build
Configuration
The server requires your AnyList credentials as environment variables:
| Variable | Description |
|---|---|
ANYLIST_EMAIL | Your AnyList account email |
ANYLIST_PASSWORD | Your AnyList account password |
Claude Desktop
Add to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"anylist": {
"command": "node",
"args": ["/path/to/anylist-mcp/dist/index.js"],
"env": {
"ANYLIST_EMAIL": "your-email@example.com",
"ANYLIST_PASSWORD": "your-password"
}
}
}
}
Other MCP Clients
Run the server via stdio transport:
ANYLIST_EMAIL=you@example.com ANYLIST_PASSWORD=secret node dist/index.js
Or for development:
ANYLIST_EMAIL=you@example.com ANYLIST_PASSWORD=secret npm run dev
Tools
Lists
| Tool | Description |
|---|---|
get_lists | List all shopping lists with item counts |
get_list_items | Get all items on a specific list |
add_item_to_list | Add a freeform item to a list (with duplicate checking) |
add_ingredient_to_list | Add a recipe ingredient to a list with proper categorization |
Recipes
| Tool | Description |
|---|---|
get_recipes | List all recipes, optionally filtered by name |
get_recipe_details | Get full recipe details including ingredients and steps |
Groceries
| Tool | Description |
|---|---|
add_recipe_ingredients_to_list | Add all ingredients from a recipe to a list |
add_ingredients_to_list | Batch add ingredients from multiple recipes to a list |
Meal Planning
| Tool | Description |
|---|---|
get_meal_plan | Get meal plan events for a date range (defaults to current week) |
add_meal_plan_event | Schedule a recipe or event on a specific day |
Tool Details
add_item_to_list
Add a freeform item to a shopping list. If the item already exists and is checked off, it will be unchecked instead of duplicated.
item_name(required) — Name of the itemlist_name(required) — Target list namequantity(optional) — e.g. "2 lbs", "3"
add_ingredient_to_list
Add a specific ingredient from a recipe to a shopping list. Uses AnyList's ingredient handler for proper categorization, and matches against existing or recently used items.
recipe_nameorrecipe_id(one required) — The recipe to pull fromingredient_name(required) — Ingredient name (case-insensitive, partial match)list_name(optional, default: "Groceries") — Target list
add_recipe_ingredients_to_list
Add all ingredients from a single recipe to a list. Handles duplicates: skips items already present, unchecks previously checked-off items.
recipe_nameorrecipe_id(one required)list_name(optional, default: "Groceries")
add_ingredients_to_list
Batch version — add ingredients from multiple recipes at once. Deduplicates across recipes.
recipe_namesorrecipe_ids(one required, array)list_name(optional, default: "Groceries")
get_recipe_details
Get full recipe details including ingredients (with name, quantity, and notes) and preparation steps.
recipe_nameorrecipe_id(one required)
add_meal_plan_event
Schedule a recipe or titled event on the meal plan calendar.
date(required) — YYYY-MM-DD formatrecipe_nameorrecipe_id(optional) — Recipe to scheduletitle(optional) — Event title (used if no recipe, or as override)label(optional) — e.g. "Breakfast", "Lunch", "Dinner"
License
ISC