mealie-mcp-ts
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for HTTP server (default 3000) | |
| MEALIE_URL | Yes | URL of your Mealie instance (e.g., http://localhost:9925) | |
| ALLOWED_HOSTS | No | Host header allowlist for DNS rebind protection (e.g., nas.local,192.168.1.50) | |
| ENABLED_TOOLS | No | Optional comma-separated list of tools to enable | |
| MCP_TRANSPORT | No | Transport mode (e.g., http for remote access) | |
| MEALIE_API_KEY | Yes | API key from Mealie (Settings → API Tokens) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_recipesA | List all recipes in Mealie. Returns recipe summaries with name, slug, description, and metadata. |
| get_recipeA | Get a recipe by its slug. Returns full recipe details including ingredients and instructions. |
| create_recipeA | Create a new recipe with name, ingredients, and instructions. For ingredients, prefer passing originalText (e.g. "2 cups flour") and let the server parse — the structured {quantity, unit, food} form also works but originalText is simpler and handles unknown units/foods automatically. |
| update_recipeA | Update an existing recipe by slug. Only provided fields will be updated. For ingredients, prefer passing originalText (e.g. "2 cups flour") over structured {quantity, unit, food} — the server parses originalText and auto-resolves unit+food. Structured form also works and is auto-normalized, but originalText is simpler. |
| delete_recipeA | Delete a recipe by its slug. This action cannot be undone. |
| upload_recipe_imageB | Upload an image for a recipe. Provide the image as base64-encoded data. |
| list_foodsA | List all foods/ingredients in Mealie. Can be filtered by search term. |
| create_foodB | Create a new food/ingredient in Mealie. |
| list_shopping_listsA | List all shopping lists in Mealie. |
| get_shopping_listA | Get a shopping list by ID. Returns the list with all items. |
| add_shopping_list_itemB | Add an item to a shopping list. Can specify quantity, unit, food, or just a note. |
| update_shopping_list_itemA | Update a shopping list item. Can modify quantity, note, or checked status (to mark items as purchased). |
| delete_shopping_list_itemA | Remove an item from a shopping list. |
| add_recipe_to_shopping_listB | Add all ingredients from a recipe to a shopping list. Optionally specify quantity for multiple servings. |
| list_categoriesA | List all recipe categories in Mealie. Categories help organize recipes into groups like "Dinner", "Breakfast", "Italian", etc. |
| create_categoryA | Create a new recipe category in Mealie. Categories help organize recipes into logical groups. |
| list_tagsB | List all recipe tags in Mealie. Tags provide flexible labeling for recipes like "vegetarian", "gluten-free", "kid-friendly", etc. |
| create_tagA | Create a new recipe tag in Mealie. Tags provide flexible labeling for recipes. |
| test_scrape_urlA | Test if a URL can be scraped for recipe data without actually creating a recipe. Useful for validating URLs before importing. Returns success:false when the scraper cannot parse the site. |
| create_recipe_from_urlA | Create a new recipe by scraping data from a URL. Supports most recipe websites that use structured data (schema.org Recipe format). On failure, returns success:false with diagnostic info — check that before retrying or falling back to create_recipe. |
| create_recipe_from_htmlA | Create a recipe from raw HTML that you fetched yourself. Use this when create_recipe_from_url fails because the MCP server can't reach the site (anti-bot, geo-block, etc.). Fetch the HTML with your own browser tool and pass it here — the server parses it via Mealie or by extracting schema.org JSON-LD directly. |
| list_meal_plansA | List meal plan entries within a date range. If no dates provided, returns all meal plans. |
| get_todays_meal_planA | Get today's meal plan entries. Returns all meals planned for the current day. |
| create_meal_planB | Create a new meal plan entry for a specific date. Can optionally link to an existing recipe. |
| delete_meal_planB | Delete a meal plan entry by its ID. |
| get_current_userA | Get information about the current API user, including their group and household. Useful for debugging permission issues when recipes or other items are not visible. |
| parse_recipe_ingredientsA | Re-parse all ingredients for an existing recipe so each has proper quantity, unit, and food fields instead of free-text notes. Fetches the recipe, sends each ingredient note through the Mealie ingredient parser, creates any missing unit/food records, and saves the structured ingredients back to the recipe. Use this after importing a recipe from a URL whose ingredients came in as plain text. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/counterbeing/mealie-mcp-ts'
If you have feedback or need assistance with the MCP directory API, please join our Discord server