Connects AI assistants to AnyList for shopping lists, recipes, and meal plans.
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-mcpInstall dependencies:
npm installBuild:
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
Tools (10)
get_listsList all shopping lists with item countsget_list_itemsGet all items on a specific listadd_item_to_listAdd a freeform item to a list (with duplicate checking)add_ingredient_to_listAdd a recipe ingredient to a list with proper categorizationget_recipesList all recipes, optionally filtered by nameget_recipe_detailsGet full recipe details including ingredients and stepsadd_recipe_ingredients_to_listAdd all ingredients from a recipe to a listadd_ingredients_to_listBatch add ingredients from multiple recipes to a listget_meal_planGet meal plan events for a date rangeadd_meal_plan_eventSchedule a recipe or event on a specific dayEnvironment Variables
ANYLIST_EMAILrequiredYour AnyList account emailANYLIST_PASSWORDrequiredYour AnyList account passwordConfiguration
{"mcpServers": {"anylist": {"command": "node", "args": ["/path/to/anylist-mcp/dist/index.js"], "env": {"ANYLIST_EMAIL": "your-email@example.com", "ANYLIST_PASSWORD": "your-password"}}}}