Connects to Grocy, the self-hosted household ERP, and exposes its REST API as MCP tools for stock, shopping lists, and product lookups. You get read operations like searching products, checking volatile stock, and scanning barcodes, plus write actions to add or consume inventory and manage shopping lists. The tool surface is deliberately small and explicit, covering the awkward household workflows that generic REST clients make clunky. Built for Claude Desktop, Hermes, and Cursor against Grocy API 4.6.0. Reach for this when you want conversational access to your pantry inventory or need an AI to help manage grocery runs without clicking through the Grocy web UI.
A Model Context Protocol (MCP) server for Grocy, the self-hosted household ERP for groceries, inventory, chores, batteries, recipes, tasks, and shopping lists.
This server focuses on AI-friendly household operations that are awkward through generic REST clients:
/api/objects/{entity} entityGrocy has a strong REST API, but MCP coverage is sparse and usually either incomplete or tightly coupled to one client's workflow. This package gives Hermes, Claude Desktop, Cursor, and other MCP clients a small, explicit, documented tool surface.
pipx install git+https://github.com/rusty4444/grocy-mcp.git
Or from a checkout:
python -m venv .venv
source .venv/bin/activate
pip install -e .
The server reads configuration from environment variables:
| Variable | Required | Default | Description |
|---|---|---|---|
GROCY_BASE_URL | No | https://demo.grocy.info | Grocy base URL, with or without /api |
GROCY_API_KEY | No for public/demo read-only instances, yes for private/write access | unset | Grocy API key sent as GROCY-API-KEY |
GROCY_TIMEOUT | No | 20 | HTTP timeout in seconds |
Grocy API keys are managed in Grocy under Manage API keys. The API accepts the GROCY-API-KEY header.
{
"mcpServers": {
"grocy": {
"command": "grocy-mcp",
"env": {
"GROCY_BASE_URL": "https://grocy.example.com",
"GROCY_API_KEY": "your-api-key"
}
}
}
}
| Tool | Purpose |
|---|---|
grocy_system_info | Grocy version and runtime details |
grocy_list_products | List configured products |
grocy_search_products | Search products by name/description |
grocy_get_product | Fetch one product object |
grocy_lookup_product_by_barcode | Resolve a barcode/Grocycode |
grocy_stock_overview | Current stock rows |
grocy_volatile_stock | Due, overdue, expired, or missing products |
grocy_product_stock_details | Detailed stock state for one product |
grocy_product_stock_entries | Individual stock entries in next-use order |
grocy_common_entities | Common generic entity names useful with CRUD tools |
grocy_list_shopping_lists | Configured shopping lists |
grocy_list_shopping_list_items | Current shopping list rows, optionally filtered by list id |
grocy_list_entity | List any generic Grocy entity |
grocy_get_entity_object | Fetch any generic entity object |
grocy_create_entity_object | POST a generic entity object from JSON |
grocy_update_entity_object | PUT a generic entity object from JSON |
grocy_add_stock | Add product amount to stock |
grocy_consume_stock | Consume/remove product amount from stock |
grocy_inventory_product | Set product inventory amount |
grocy_add_product_to_shopping_list | Add a product to a shopping list |
grocy_remove_product_from_shopping_list | Remove a product from a shopping list |
python -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'
ruff check .
pytest
python scripts/live_readonly_test.py
The live read-only test defaults to https://demo.grocy.info, avoiding mutations on shared infrastructure. It has been validated against Grocy API 4.6.0. Use a private Grocy instance plus GROCY_API_KEY for write-path testing.
Write-capable tools directly mutate Grocy data. Prefer read-only tools when using public demos. Keep GROCY_API_KEY in MCP client environment config or a secret manager, never in source control.
GROCY_BASE_URLGrocy base URL, with or without /api
GROCY_API_KEYsecretGrocy API key for private instances or write access