Skip to main content
Glama

Mealie MCP Server

by rldiao
server.py1.75 kB
import logging import os import traceback from dotenv import load_dotenv from mcp.server.fastmcp import FastMCP from mealie import MealieFetcher from prompts import register_prompts from tools import register_all_tools # Load environment variables first load_dotenv() # Get log level from environment variable with INFO as default log_level_name = os.getenv("LOG_LEVEL", "INFO") log_level = getattr(logging, log_level_name.upper(), logging.INFO) # Configure logging logging.basicConfig( level=log_level, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", handlers=[logging.StreamHandler(), logging.FileHandler("mealie_mcp_server.log")], ) logger = logging.getLogger("mealie-mcp") mcp = FastMCP("mealie") MEALIE_BASE_URL = os.getenv("MEALIE_BASE_URL") MEALIE_API_KEY = os.getenv("MEALIE_API_KEY") if not MEALIE_BASE_URL or not MEALIE_API_KEY: raise ValueError( "MEALIE_BASE_URL and MEALIE_API_KEY must be set in environment variables." ) try: mealie = MealieFetcher( base_url=MEALIE_BASE_URL, api_key=MEALIE_API_KEY, ) except Exception as e: logger.error({"message": "Failed to initialize Mealie client", "error": str(e)}) logger.debug({"message": "Error traceback", "traceback": traceback.format_exc()}) raise register_prompts(mcp) register_all_tools(mcp, mealie) if __name__ == "__main__": try: logger.info({"message": "Starting Mealie MCP Server"}) mcp.run(transport="stdio") except Exception as e: logger.critical( {"message": "Fatal error in Mealie MCP Server", "error": str(e)} ) logger.debug( {"message": "Error traceback", "traceback": traceback.format_exc()} ) raise

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rldiao/mealie-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server