Files
mcp_arch/mealie-mcp-bundle/server/mealie/food.py
2025-12-19 23:59:54 +01:00

50 lines
1.6 KiB
Python

import logging
from typing import Any, Dict, Optional
logger = logging.getLogger("mealie-mcp")
class FoodMixin:
"""Mixin for Mealie food and unit API operations."""
def get_foods(
self,
search: Optional[str] = None,
page: Optional[int] = None,
per_page: Optional[int] = None,
) -> Dict[str, Any]:
"""Get list of foods."""
params = {}
if search:
params["search"] = search
if page:
params["page"] = page
if per_page:
params["perPage"] = per_page
logger.info({"message": "Retrieving foods", "parameters": params})
return self._handle_request("GET", "/api/foods", params=params)
def get_units(self) -> Dict[str, Any]:
"""Get list of all units."""
logger.info({"message": "Retrieving units"})
return self._handle_request("GET", "/api/units")
def create_food(self, name: str, description: Optional[str] = None) -> Dict[str, Any]:
"""Create a new food item."""
data = {"name": name}
if description:
data["description"] = description
logger.info({"message": "Creating food", "name": name})
return self._handle_request("POST", "/api/foods", json=data)
def create_unit(self, name: str, abbreviation: Optional[str] = None) -> Dict[str, Any]:
"""Create a new unit."""
data = {"name": name}
if abbreviation:
data["abbreviation"] = abbreviation
logger.info({"message": "Creating unit", "name": name})
return self._handle_request("POST", "/api/units", json=data)