MCP server for Grocy household ERP inventory and shopping workflows
26 tools with consistent verb_noun naming (grocy_*). All have descriptions (avg ~80 chars, within baseline). Input schemas present with types and descriptions for most parameters. However, output schemas are undocumented, tools return JSON strings without declared structure. Error handling is generic ('Error getting X: {exc}') with no recovery guidance. Parameters like 'payload_json' accept raw JSON strings instead of structured objects, forcing LLMs to construct JSON manually. Missing tool annotations (readOnlyHint, destructiveHint). Pagination implemented but inconsistently (some tools cap at 100, others 500). No per-tool risk classification visible in schema.
Add stock to a Grocy product.
Add a product to a Grocy shopping list.
List common Grocy generic entity names for use with grocy_list_entity and CRUD tools.
Consume/use stock from a Grocy product.
Create a Grocy generic entity object from a JSON payload.
Delete a Grocy generic entity object by id.
Mark a Grocy chore as executed/done.
Unstructured JSON string parameters (payload_json) force LLMs to construct raw JSON manually instead of accepting structured objects. This violates the chat-data-model pattern and increases error rates.
Output schemas are not documented. Tools return JSON strings without declared field structure, forcing LLMs to parse unstructured output and guess at field names for downstream tool calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Get any Grocy generic entity object by id.
Get one Grocy product object by id.
Set the inventory amount for a Grocy product.
List all Grocy chores.
List any Grocy generic entity exposed by /api/objects/{entity}.
List products configured in Grocy.
List current Grocy shopping list items.
List configured Grocy shopping lists.
List all Grocy tasks.
Look up a product using Grocy's stock barcode endpoint.
Get detailed stock state for one Grocy product.
List individual stock entries for a product in next-use order.
Remove a product from a Grocy shopping list.
Search Grocy products by name or description.
Set custom userfield values for a Grocy entity object.
Return current Grocy stock rows with amounts and due dates.
Return Grocy version and server runtime information.
Update a Grocy generic entity object from a JSON payload.
Return products due soon, overdue, expired, or missing according to Grocy.
Error handling is generic and non-actionable. Errors return 'Error getting X: {exc}' with no recovery guidance, classification (retryable vs fatal), or suggestions for next steps.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are missing. Risk classification is provided in the evaluation metadata but not in the tool schema itself, preventing clients from enforcing safety policies.
Destructive operations (delete_entity_object) lack confirmation or dry-run support. Agents can permanently delete records without a safety gate.