grocy-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GROCY_URL | Yes | The base URL of your Grocy instance (e.g. https://grocy.example.com). Required to connect to the Grocy server. | |
| GROCY_API_KEY | Yes | Your Grocy API key for authentication. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| stock_overview_toolA | List all products currently in stock with their quantities. Returns each product with its ID, name, and amount. Use this to see what is available before adding, consuming, or transferring stock. |
| stock_expiring_toolA | List products that are expiring soon, already expired, or below minimum stock. Useful for daily checks or deciding what to consume or restock first. |
| stock_product_info_toolA | Get detailed stock information for a single product. Returns current amount, best-before date, and product metadata. |
| stock_add_toolB | Add stock for a product (e.g. after a purchase). |
| stock_consume_toolA | Consume stock for a product (reduces the quantity on hand). |
| stock_transfer_toolC | Move stock of a product to a different storage location. |
| stock_inventory_toolA | Correct the stock level for a product by setting an absolute quantity. Use this when the actual count differs from what Grocy shows — e.g. after a manual count. This replaces the current amount, not adds to it. |
| stock_open_toolB | Mark stock units as opened (e.g. an opened bottle of milk). |
| stock_search_toolA | Search for products by name substring or barcode. Returns matching product names and IDs. Use this when you are not sure of the exact product name. For a direct barcode lookup with stock details, use stock_barcode_lookup_tool instead. |
| stock_barcode_lookup_toolA | Look up a product and its current stock level by exact barcode. Returns the product name and quantity in stock. For partial or name-based searches, use stock_search_tool instead. |
| shopping_list_view_toolA | View all items on a shopping list. Returns each item with its ID, product name, quantity, and optional note. Item IDs are needed for update and remove operations. |
| shopping_list_add_toolC | Add a product to the shopping list. |
| shopping_list_update_toolB | Update fields on an existing shopping list item. Use shopping_list_view_tool first to find the item_id. |
| shopping_list_remove_toolA | Remove a single item from the shopping list. Use shopping_list_view_tool first to find the item_id. |
| shopping_list_clear_toolA | Remove ALL items from a shopping list. This cannot be undone. |
| shopping_list_add_missing_toolA | Add all products that are below their minimum stock level to the shopping list. This is a bulk operation — it scans all products and adds any that are below their configured minimum stock quantity. |
| shopping_list_set_amount_toolA | Change the quantity for a shopping list item. A simpler alternative to shopping_list_update_tool when you only need to change the amount. |
| shopping_list_set_note_toolA | Set or update the note on a shopping list item. A simpler alternative to shopping_list_update_tool when you only need to change the note. |
| recipes_list_toolA | List all recipes with their IDs and descriptions. Use this to discover available recipes before checking fulfillment or consuming ingredients. |
| recipe_details_toolA | Show full details for a recipe including all ingredients and amounts. |
| recipe_fulfillment_toolA | Check whether a recipe can be made with current stock. Reports whether all ingredients are available and how many are missing. |
| recipe_consume_toolA | Consume stock for all ingredients of a recipe (as if you cooked it). This deducts each ingredient amount from stock. Check fulfillment first to make sure all ingredients are available. |
| recipe_add_to_shopping_toolA | Add only the missing ingredients for a recipe to the shopping list. Does not add ingredients that are already sufficiently in stock. |
| recipe_create_toolC | Create a new recipe in Grocy. |
| recipe_create_by_name_toolA | Create a recipe with ingredients specified by product name instead of ID. This is the easier alternative to recipe_create_tool — you can use product names directly, and they will be resolved automatically. |
| recipe_update_toolA | Update a recipe's name or description. |
| recipe_add_ingredient_toolB | Add an ingredient to an existing recipe using the product name. |
| recipe_remove_ingredient_toolB | Remove an ingredient from a recipe. Use recipe_details_tool to see ingredient position IDs. |
| recipe_consume_preview_toolA | Preview what stock would be consumed without actually consuming. Shows each ingredient, the amount needed, and whether there is enough in stock. Use this before recipe_consume_tool to verify. |
| chores_list_toolA | List all chores with their IDs and next scheduled execution time. Use this to see what chores exist and when they are due next. |
| chores_overdue_toolA | List chores that are past their scheduled execution time. Returns only chores where the next execution time is in the past. |
| chore_execute_toolA | Mark a chore as done. This records an execution and advances the next scheduled time. |
| chore_undo_toolA | Undo the most recent execution of a chore. Removes the last recorded execution and reverts the schedule. |
| chore_create_toolB | Create a new chore in Grocy. |
| locations_list_toolA | List all storage locations in Grocy. Shows location names, IDs, and whether each is a freezer. |
| location_create_toolA | Create a new storage location. |
| stock_journal_toolA | View recent stock transaction history. Shows the 50 most recent stock changes (purchases, consumption, transfers, inventory corrections). Optionally filter by product. |
| tasks_list_toolA | List tasks (to-do items separate from chores). By default shows only incomplete tasks. |
| task_create_toolB | Create a new task. |
| task_complete_toolB | Mark a task as done. |
| task_undo_toolA | Mark a task as not completed. |
| task_delete_toolA | Delete a task. This cannot be undone. |
| meal_plan_list_toolA | List all meal plan entries sorted by date. Shows scheduled meals with their dates, recipe names, and notes. |
| meal_plan_add_toolA | Add an entry to the meal plan. Either specify a recipe or a free-text note (or both). |
| meal_plan_remove_toolB | Remove an entry from the meal plan. |
| meal_plan_shopping_toolA | Add missing ingredients for all planned recipes to the shopping list. Scans the meal plan (optionally filtered by date range), finds all scheduled recipes, and adds their unfulfilled ingredients to the shopping list. This is the "plan meals → shop" workflow in one step. |
| meal_plan_summary_toolB | Return a structured meal-plan summary with recipe and section names. |
| catalog_list_toolA | List first-class catalog and metadata entities. Supported entities include shopping_lists, shopping_locations, quantity_units, quantity_unit_conversions, product_groups, task_categories, meal_plan_sections, products_last_purchased, and products_average_price. |
| catalog_details_toolC | Return details for a first-class catalog entity record. |
| catalog_create_toolC | Create a record in a writable first-class catalog entity. |
| catalog_update_toolC | Update a record in a writable first-class catalog entity. |
| batteries_list_toolA | List batteries with next estimated charge times. |
| battery_details_toolB | Return detailed information for a battery by name or ID. |
| batteries_due_toolB | Return batteries due within the next given number of days. |
| batteries_overdue_toolA | Return batteries that are already overdue for charging. |
| battery_charge_toolC | Track a battery charge cycle. |
| battery_history_toolC | Return charge-cycle history for a battery. |
| battery_undo_cycle_toolC | Undo a tracked battery charge cycle. |
| battery_create_toolC | Create a battery object. |
| battery_update_toolD | Update a battery object. |
| equipment_list_toolA | List equipment with linked battery visibility where available. |
| equipment_details_toolA | Return details for an equipment item by name or ID. |
| equipment_create_toolC | Create an equipment item. |
| equipment_update_toolD | Update an equipment item. |
| calendar_summary_toolC | Return a read-only planning summary across tasks, chores, batteries, and meal plan. |
| calendar_ical_toolA | Return the raw Grocy iCal export. |
| calendar_sharing_link_toolB | Return the public Grocy iCal sharing link. |
| file_download_toolB | Download a Grocy-managed file as base64 content. |
| file_upload_toolC | Upload a Grocy-managed file from base64 content. |
| file_delete_toolC | Delete a Grocy-managed file. |
| print_stock_entry_label_toolC | Trigger printing of a stock-entry label. |
| print_product_label_toolC | Trigger printing of a product label. |
| print_recipe_label_toolD | Trigger printing of a recipe label. |
| print_chore_label_toolC | Trigger printing of a chore label. |
| print_battery_label_toolC | Trigger printing of a battery label. |
| print_shopping_list_thermal_toolA | Trigger thermal printing of the shopping list. |
| discover_candidates_toolC | Search products, recipes, chores, locations, tasks, or supported metadata domains. |
| describe_entity_toolC | Describe a Grocy entity and its discovered fields. |
| discover_fields_toolC | Return discovered sample fields for a Grocy entity. |
| workflow_match_products_preview_toolA | Preview product matches for normalized external items. Use this when an LLM or another client has already converted a receipt, chat message, or image into a normalized item list and you need Grocy product IDs before applying stock changes. |
| workflow_stock_intake_preview_toolA | Preview Grocy stock additions for normalized external items. This uses the same matching contract as workflow_match_products_preview_tool, but is named for the common "I bought these groceries" workflow. |
| workflow_stock_intake_apply_toolA | Apply confirmed stock additions using explicit Grocy product IDs. Apply only confirmed IDs from a prior preview step. This tool does not resolve names implicitly. |
| workflow_shopping_reconcile_preview_toolA | Preview shopping-list removals and amount updates after a purchase. Provide confirmed Grocy product IDs for what was purchased and this tool will propose explicit shopping-item actions without applying them. |
| workflow_shopping_reconcile_apply_toolB | Apply explicit shopping-list reconciliation actions from a preview step. |
| system_info_toolA | Show Grocy server version, PHP version, and SQLite version. Useful for verifying connectivity and checking compatibility. |
| entity_list_toolA | List all objects of a Grocy entity type. This is a generic tool for browsing any Grocy data table. |
| entity_create_toolA | Create a new object of any Grocy entity type. This is a low-level tool — prefer the domain-specific create tools (recipe_create_tool, chore_create_tool) when available. |
| entity_update_toolB | Update an existing Grocy entity object by its ID. Only the fields provided in data are changed; other fields are left as-is. |
| entity_delete_toolA | Delete a Grocy entity object by its ID. This cannot be undone. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 89 tools
Most tools have distinct scopes with clear descriptions and cross-references (e.g., stock_search vs stock_barcode_lookup). Some overlap exists between recipe_fulfillment and recipe_consume_preview, and between shopping_list_set_amount and shopping_list_update, but descriptions help disambiguate. Overall, an agent can generally tell tools apart despite the large set.
The dominant pattern is <domain>_<action>_tool, which is predictable and readable. However, singular/plural prefixes are inconsistent (chores_list vs chore_execute, batteries_list vs battery_details), and a few tools like discover_candidates_tool break the pattern. Still, the convention is mostly consistent.
89 tools is far above the typical well-scoped range and feels excessive. Many tools are near-duplicates (six print label tools, multiple shopping-list population tools, and generic entity CRUD alongside domain-specific CRUD). This could be consolidated with parameterized tools, making the surface heavy and harder to navigate.
Core workflows (stock, shopping list, recipes, chores, tasks, meal plans, batteries, equipment) are well covered. However, there are notable lifecycle gaps: recipe deletion, chore update, location update/delete, battery delete, equipment delete, and file listing are missing. Generic entity tools partially mask these gaps but require low-level knowledge, so agents may hit dead ends.