mealie-mcp-server
mealie-mcp-server
Mealie レシピ管理のための Model Context Protocol (MCP) サーバーです。AI アシスタントがレシピ、献立、買い物リスト、カテゴリ、タグを検索・作成・管理するための 46 のツールと 1 つのプロンプトを提供します。
特徴
レシピ管理 — レシピの検索、作成、パッチ適用、複製、削除。並行性を制限したバッチ取得で複数レシピを一括取得できます。
食材ベースのレシピ検索 —
find_recipes_for_ingredientsは、人間が読める食材名(Mealie のフード UUID ではなく)を Mealie の食品タクソノミーに対して解決し、Mealie の Recipe Finder を介して一致するレシピを見つけます。完全一致の食品がない場合は通常のレシピ検索にフォールバックします。「X で何が作れるか」という発見に役立ち、Mealie がその正確な名前で知らない食材も扱えます(呼び出し側の LLM が代替語で検索を広げます。MCP 自体は代替を推測しません)。レシピのカテゴリ・タグ割り当て — 既存レシピにカテゴリとタグを、マージ/置換セマンティクス、名前/スラッグ/ID 解決、欠落値の自動作成オプション付きで割り当てられます。材料、手順、栄養情報、その他のレシピフィールドには影響しません。
patch_recipe、update_recipe_taxonomy、update_recipe_taxonomy_batchから利用できます。献立管理 — 献立の閲覧、作成、一括作成。複合ツールは、並行バッチリクエストを使用してレシピ詳細(栄養情報を含む)を埋め込んだ献立を取得し、N+1 クエリを排除します。
買い物リスト — リストとアイテムの完全な CRUD、一括操作、レシピからリストへの統合。
カテゴリとタグ — レシピ整理のための完全な CRUD。空のカテゴリ/タグの検出も含みます。
バッチ・複合ツール —
get_recipes_batchとget_recipes_detailed_batchは並行性を制限したレシピ検索、get_mealplan_with_recipesはレシピデータを埋め込んだ献立の取得とクライアント側の日付フィルタリング、update_recipe_taxonomy_batchは多数のレシピに対する並行性を制限したカテゴリ/タグ更新を提供します。SDK 以外のランタイム依存関係ゼロ — ネイティブの
fetchを使用し、axios や httpx は不要です。
Related MCP server: mcp-mealie
要件
インストール
クイックスタート(npx)
MEALIE_BASE_URL=https://your-mealie-instance.com \
MEALIE_API_KEY=your-api-key \
npx mealie-mcp-serveropencode 設定
opencode.json に追加します:
{
"mcp": {
"mealie-mcp-server": {
"type": "local",
"command": ["npx", "mealie-mcp-server"],
"enabled": true,
"environment": {
"MEALIE_BASE_URL": "https://your-mealie-instance.com",
"MEALIE_API_KEY": "your-api-key"
}
}
}
}Docker
コンテナで MCP サーバーを実行します:
docker run -d \
--name mealie-mcp-server \
-e MEALIE_BASE_URL=https://your-mealie-instance.com \
-e MEALIE_API_KEY=your-api-key \
ghcr.io/timo-reymann/mealie-mcp-server:mainまたは Docker Compose を使用:
version: '3.8'
services:
mealie-mcp-server:
image: ghcr.io/timo-reymann/mealie-mcp-server:main
environment:
MEALIE_BASE_URL: https://your-mealie-instance.com
MEALIE_API_KEY: your-api-key
restart: unless-stoppedローカル開発
git clone https://github.com/timo-reymann/mealie-mcp-server.git
cd mealie-mcp-server
corepack enable
yarn install
cp .env.template .env
# Edit .env with your MEALIE_BASE_URL and MEALIE_API_KEY
yarn dev環境または opencode 設定で MEALIE_BASE_URL と MEALIE_API_KEY が設定されていることを確認してください。
ドキュメント
全 46 ツールと対応する Mealie API エンドポイントの詳細な内訳については、API カバレッジ を参照してください。
食材によるレシピ検索
find_recipes_for_ingredients を使用すると、AI アシスタントは人間が読める食材名(例: "branzino"、"chicken thighs")からレシピを発見でき、Mealie の内部フード UUID を知る必要はありません。MCP は Mealie 固有の仕組み(名前を Mealie の Food オブジェクトに解決、Mealie の Recipe Finder(GET /api/recipes/suggestions)または通常のレシピ検索の呼び出し)をすべて処理します。一方、食材の代替・拡張(例: "branzino" の妥当な代替として "sea bass" や "whole fish" を判断すること)は呼び出し側の LLM に委ねられます。
食材の解決は、食材ごとに次の順序で行われます:
食品名との大文字小文字を区別しない完全一致。
食品の複数形名またはエイリアスのいずれかとの大文字小文字を区別しない完全一致(Mealie の Food オブジェクトには Category/Tag と異なり
slugフィールドがありません)。上記が一致しない場合、Mealie の食品検索からの一意の結果が 1 つだけの場合。
名前が複数の食品に一致し、一意の候補がない場合(例: "fish")、候補名とともに ambiguous として報告されます。ツールは推測しません。
検索戦略は、解決された内容によって異なります:
{ "ingredients": ["salmon"], "categories": ["Dinner"] }salmon を Food に解決し、Mealie の Recipe Finder を使用します。レシピは、解決された食材をいくつ使用しているか、欠落している他の食材がどれだけ少ないかでランク付けされます。matchSource: "suggestions"。
{ "ingredients": ["branzino"] }branzino に Food の一致がない場合 → Mealie の通常のレシピ検索(レシピ名、説明、材料テキストに一致)にフォールバックします。それでも有用な結果がない場合、unresolvedIngredients がそれを報告し、LLM は "sea bass" や "whole fish" などのより広い用語で再試行できます。matchSource: "text-search"(結果がない場合は "none")。
{ "ingredients": ["chicken thighs", "broccoli"], "requireAllIngredients": true }2 つ以上の解決済み食材と requireAllIngredients: true を使用する場合、Finder の代わりに厳密な食品ベースの AND フィルターを使用した Mealie の通常のレシピ検索を使用します。matchSource: "food-filter"。
categories/tags は get_recipes と同じ方法(名前、スラッグ、または ID で大文字小文字を区別せず)で解決され、検索実行前に正規の ID として Mealie に送信されます。food-filter パスと text-search パスではそのまま使用され、Recipe Finder パス(独自のタクソノミーフィルターがない)では返された候補に適用されます。
返される各レシピには、name、slug、description、categories、tags、totalTime、一致した要求食材、および(Recipe Finder の結果の場合)欠落している他の食材が含まれます。これにより、get_recipe_detailed や get_recipes_batch で詳しく確認する価値があるかを、候補ごとに追加のラウンドトリップなしで判断できます。
カテゴリとタグの割り当て
カテゴリはレシピブックを整理するための広いグループ(例: Dinner、Dessert)であり、タグはより具体的で自由形式の属性(例: Quick、Dairy-Free)です。どちらも update_recipe_taxonomy(この 1 つのジョブに特化したツール)または patch_recipe(既存フィールドに加えて categories/tags/taxonomyMode/createMissing も受け付けるため、名前/説明の編集とタクソノミー変更を 1 回の呼び出しで送信できます)を介して既存レシピに割り当てられます。
categories/tags の各値は、名前、スラッグ、または ID のいずれでもかまいません。既存のカテゴリ/タグとの照合は、名前とスラッグで大文字小文字を区別せずに行われます。結果は自動的に重複排除されます。
カテゴリとタグを追加し、レシピがすでに持っている他のすべてを保持する場合(mode: "merge"、デフォルト):
{
"slug": "chicken-shawarma",
"categories": ["Dinner"],
"tags": ["Dairy-Free", "Quick"],
"mode": "merge",
"createMissing": false
}タグリストを完全に置き換え、以前のタグを破棄する場合:
{
"slug": "chicken-shawarma",
"tags": ["Weeknight", "Middle Eastern"],
"mode": "replace",
"createMissing": true
}上記の createMissing: true は、Weeknight と Middle Eastern が存在しない場合に自動的に作成されることを意味します。
レシピからすべてのカテゴリをクリアするには、mode: "replace" で明示的な空配列を渡します。categories を省略すると、そのまま残ります:
{
"slug": "chicken-shawarma",
"categories": [],
"mode": "replace"
}多数のレシピを一度に更新するには、update_recipe_taxonomy_batch を使用します。各エントリは独立して処理され(並行性制限付き)、レスポンスにはレシピごとの成功またはエラー結果が含まれるため、1 つの不正なスラッグでバッチ全体が失敗することはありません:
{
"updates": [
{ "slug": "chicken-shawarma", "categories": ["Dinner"], "mode": "merge" },
{ "slug": "banana-bread", "tags": ["Dessert", "Baking"], "mode": "merge" },
{ "slug": "does-not-exist", "categories": ["Dinner"], "mode": "merge" }
]
}どちらのツールも、レシピの id/slug に加えて、コレクションごとに更新後の final リストと、added、removed、created されたアイテムを返します。正確に何が変更されたかを確認するのに役立ちます。
コントリビューション
あなたのインプットを歓迎します!始めるには コントリビューションガイドライン をお読みください。
開発
要件
テスト
yarn test型チェック
yarn typecheckビルド
yarn buildリント
yarn lint利用可能なツール(全 46 個)
レシピ(14)
get_recipes、find_recipes_for_ingredients、get_recipe_detailed、get_recipe_concise、get_recipes_batch、get_recipes_detailed_batch、create_recipe、patch_recipe、update_recipe_taxonomy、update_recipe_taxonomy_batch、duplicate_recipe、mark_recipe_last_made、set_recipe_image_from_url、delete_recipe
献立(5)
get_all_mealplans、get_mealplan_with_recipes、create_mealplan、create_mealplan_bulk、get_todays_mealplan
カテゴリ(7)
get_categories, get_empty_categories, create_category, get_category, get_category_by_slug, update_category, delete_category
タグ(7)
get_tags, get_empty_tags, create_tag, get_tag, get_tag_by_slug, update_tag, delete_tag
買い物リスト(13)
get_shopping_lists, create_shopping_list, get_shopping_list, update_shopping_list, delete_shopping_list, add_recipe_to_shopping_list, remove_recipe_from_shopping_list, get_shopping_list_items, create_shopping_list_item, create_shopping_list_items_bulk, update_shopping_list_item, delete_shopping_list_item, delete_shopping_list_items_bulk
ライセンス
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with Mealie recipe databases through MCP clients like Claude Desktop.123MIT
- AlicenseBqualityBmaintenanceMCP server for Mealie that exposes its REST API to manage recipes, meal plans, shopping lists, cookbooks, and taxonomy through natural language.75MIT
- FlicenseNot gradedqualityDmaintenanceA full-featured Mealie MCP server (27 tools) for recipe management, meal planning, and shopping lists, bundled with Claude Code skills and agents for family-friendly, dietary-compliant cooking guidance.1
- AlicenseDqualityAmaintenanceExposes every endpoint of the Mealie REST API as MCP tools, enabling LLMs to manage recipes, meal plans, shopping lists, and more.1001,6212MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
Recipes MCP — wraps TheMealDB API (free tier, no auth)
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/timo-reymann/mealie-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server