pypi hermes-grocy-mcpstdioMITupdated 1mo ago
A Model Context Protocol (MCP) server for Grocy, the self-hosted household ERP for groceries, inventory, chores, batteries, recipes, tasks, and shopping lists.
What can you do with Hermes Grocy MCP?
Grocy MCP
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:
- Inspect Grocy system/version status
- List, search, and inspect products
- Read current stock, volatile stock, product stock details, and individual stock entries
- List current shopping list items and add/remove products from shopping lists
- Look up products by barcode/Grocycode
- List and inspect any
/api/objects/{entity}entity - Create/update generic entity objects from JSON
- Add, consume, and inventory product stock
- Add/remove product amounts from shopping lists
Why this exists
Grocy 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.
Installation
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 .
Configuration
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.
MCP client config
{
"mcpServers": {
"grocy": {
"command": "grocy-mcp",
"env": {
"GROCY_BASE_URL": "https://grocy.example.com",
"GROCY_API_KEY": "your-api-key"
}
}
}
}
Tools
| 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 |
grocy_set_userfields |
Set userfield values on an entity object |
grocy_list_chores |
List chores including computed next-due times |
grocy_execute_chore |
Execute (mark done) a chore, optionally backdated |
grocy_list_tasks |
List tasks |
Development and validation
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.
Safety
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.
Install
Add Hermes Grocy MCP to your client. Pick the one you use.
claude mcp add hermes-grocy-mcp -- uvx hermes-grocy-mcpcodex mcp add hermes-grocy-mcp -- uvx hermes-grocy-mcpamp mcp add hermes-grocy-mcp -- uvx hermes-grocy-mcp{
"mcpServers": {
"hermes-grocy-mcp": {
"command": "uvx",
"args": [
"hermes-grocy-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"hermes-grocy-mcp": {
"command": "uvx",
"args": [
"hermes-grocy-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"hermes-grocy-mcp","command":"uvx","args":["hermes-grocy-mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"hermes-grocy-mcp": {
"command": "uvx",
"args": [
"hermes-grocy-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"hermes-grocy-mcp": {
"command": "uvx",
"args": [
"hermes-grocy-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"hermes-grocy-mcp": {
"command": "uvx",
"args": [
"hermes-grocy-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"hermes-grocy-mcp": {
"type": "local",
"command": "uvx",
"args": [
"hermes-grocy-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"hermes-grocy-mcp": {
"command": {
"path": "uvx",
"args": [
"hermes-grocy-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
uvx hermes-grocy-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
25 tools
Hermes Grocy MCP exposes 25 tools to a connected agent.
- 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
- grocy_set_userfields
- Set userfield values on an entity object
- grocy_list_chores
- List chores including computed next-due times
- grocy_execute_chore
- Execute (mark done) a chore, optionally backdated
- grocy_list_tasks
- List tasks
Score
74 / 100
Good
- Documentation25/25
- Maintenance16/25
- Trust13/20
- Capability8/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 30 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 25 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 0.2.1Latest | May 18, 2026 |