Tandoor MCP Server について
Tandoor MCP Serverは、MCPクライアントをTandoor Recipe Managerに接続します。ツールを通じてレシピやミールプランを操作でき、買い物リストも管理できます。
主な機能
- 01材料と手順を含むレシピの作成
- 02名前や条件によるレシピ検索
- 03ミールプランの作成と絞り込み
- 04レシピ詳細と食材リストの取得
- 05買い物リスト項目の管理
活用シーン
- 01クライアントからTandoorにレシピを追加
- 02食材・キーワード・評価でレシピを検索
- 03日付と食事タイプに応じた献立計画
- 04買い物項目の更新やチェック
MCP 対応
レシピの作成・検索、ミールプランの管理、Tandoorデータの取得、買い物リストの編集に使うツールをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Tandoor MCP Server
Tandoor Recipe Manager と連携するための Model Context Protocol(MCP)サーバーです。
現在の状況
- ✅ create_tandoor_recipe:実装およびテストに成功
- ✅ create_tandoor_meal_plan:実装およびテストに成功
- ✅ get_recipes:実装およびテストに成功
- ✅ get_meal_plans:実装およびテストに成功
- ✅ get_recipe_details:実装済み
- ✅ get_meal_types:実装済み
- ✅ get_keywords:実装済み
- ✅ get_foods:実装済み
- ✅ get_units:実装済み
- ✅ get_shopping_list:実装済み
- ✅ add_shopping_list_item:実装済み(名前による検索機能付き)
- ✅ update_shopping_list_item:実装済み
- ✅ remove_shopping_list_item:実装済み
機能
- 材料と手順を指定して、Tandoor にレシピを作成します
- 特定の日付と食事タイプを指定して、食事プランにレシピを追加します
- さまざまな条件(名前、キーワード、食材、評価)でレシピを検索します
- 日付範囲と食事タイプで絞り込んで、食事プランを取得します
- 特定のレシピの詳細情報をすべて取得します
- 利用可能な食事タイプ、キーワード、食材、単位を一覧表示します
- 買い物リストの項目を管理します(表示、追加、更新、削除)
セットアップ
-
依存関係をインストールします:
npm install -
サーバーをビルドします:
npm run build -
サーバーを手動で実行します(テスト用):
# Windows PowerShell $env:TANDOOR_URL = "https://your-tandoor-instance.com" $env:TANDOOR_API_TOKEN = "your-api-token" node .\build\index.js # Windows CMD set TANDOOR_URL=https://your-tandoor-instance.com set TANDOOR_API_TOKEN=your-api-token node .\build\index.js # Linux/macOS TANDOOR_URL=https://your-tandoor-instance.com TANDOOR_API_TOKEN=your-api-token node ./build/index.js -
MCP の設定に追加します:
{ "mcpServers": { "tandoor": { "command": "node", "args": ["path/to/tandoor-mcp-server/build/index.js"], "env": { "TANDOOR_URL": "https://your-tandoor-instance.com", "TANDOOR_API_TOKEN": "your-api-token" }, "disabled": false, "autoApprove": [] } } } -
すべてを autoApprove したい場合は……
"autoApprove": [
"add_shopping_list_item",
"create_tandoor_meal_plan",
"create_tandoor_recipe",
"get_foods",
"get_keywords",
"get_meal_plans",
"get_meal_types",
"get_recipe_details",
"get_recipes",
"get_recipes",
"get_shopping_list",
"get_units",
"remove_shopping_list_item",
"update_shopping_list_item"
]
./.clinerulesをプロジェクトディレクトリに追加します
- 必要に応じて、
./memory-bankに、好みの食材や苦手な食材を記載した Markdown ファイルまたはテキストファイルのリストも追加してください。アシスタントから食事の提案を受けたい場合に役立ちます。
利用可能なツール
create_tandoor_recipe
Tandoor に新しいレシピを作成します。
パラメーター:
name(string、必須):レシピ名です。description(string、任意):レシピの説明です。servings(number、任意):分量です。ingredients_block(string、必須):材料を1行に1つずつ記載した複数行のテキストです。instructions_block(string、必須):レシピの手順を記載した複数行のテキストです。
例:
{
"name": "Simple Pasta",
"description": "A quick and easy pasta dish.",
"servings": 2,
"ingredients_block": "200g pasta\n2 tbsp olive oil\n1 clove garlic, minced\nSalt and pepper to taste",
"instructions_block": "1. Cook pasta according to package instructions.\n2. Heat oil in a pan and add garlic.\n3. Drain pasta and add to the pan.\n4. Season with salt and pepper."
}
create_tandoor_meal_plan
特定の日付と食事タイプを指定して、1つ以上のレシピを Tandoor の食事プランに追加します。
パラメーター:
title(string、任意):食事プランの項目名です。recipes(array、必須):プランに追加するレシピ名または ID の配列です。start_date(string、必須):食事プランの項目の日付です(YYYY-MM-DD)。meal_type(string、必須):食事タイプの名前です(例:'夕食'、'昼食')。servings(number、任意):食事プランの項目の分量です(デフォルト:1)。note(string、任意):食事プランの項目に付けるメモです。
例:
{
"title": "Friday Dinner",
"recipes": [123, "Simple Pasta"],
"start_date": "2025-03-29",
"meal_type": "Dinner",
"servings": 2,
"note": "Quick dinner for Friday night."
}
get_recipes
さまざまな条件に基づいて、Tandoor のレシピを検索します。
パラメーター:
query(string、任意):レシピ名に対して照合する検索語です(あいまい検索)。keywords(array of integers、任意):キーワード ID の配列です。いずれかのキーワードに一致するレシピを返します。foods(array of integers、任意):食材 ID の配列です。いずれかの食材を含むレシピを返します。rating(integer、任意):レシピに必要な最低評価です(0~5)。limit(integer、任意):返すレシピの最大件数です。デフォルトは 10 です。
例:
{
"query": "chicken",
"keywords": [5, 12],
"rating": 4,
"limit": 5
}
get_meal_plans
Tandoor の食事プランの項目を取得します。必要に応じて、日付範囲と食事タイプで絞り込めます。
パラメーター:
from_date(string、任意):食事プランを絞り込む開始日です(YYYY-MM-DD、当日を含む)。to_date(string、任意):食事プランを絞り込む終了日です(YYYY-MM-DD、当日を含む)。meal_type_id(integer、任意):絞り込みに使用する食事タイプ ID です。
例:
{
"from_date": "2025-03-01",
"to_date": "2025-03-31",
"meal_type_id": 1
}
get_recipe_details
特定のレシピの詳細をすべて取得します。
パラメーター:
recipe_id(integer、必須):取得するレシピの ID。
例:
{
"recipe_id": 123
}
get_meal_types
Tandoor で利用可能なすべての食事の種類を一覧表示します。
パラメーター: なし
例:
{}
get_keywords
キーワードを一覧表示または検索します。
パラメーター:
query(string、任意):キーワード名の検索語(任意)。root(integer、任意):第 1 階層の子要素を取得するための ID(任意。ルートの場合は 0)。tree(integer、任意):ツリー内のすべての子要素を取得するための ID(任意)。
例:
{
"query": "italian"
}
get_foods
食品を一覧表示または検索します。
パラメーター:
query(string、任意):食品名の検索語(任意)。root(integer、任意):第 1 階層の子要素を取得するための ID(任意。ルートの場合は 0)。tree(integer、任意):ツリー内のすべての子要素を取得するための ID(任意)。
例:
{
"query": "chicken breast"
}
get_units
単位を一覧表示または検索します。
パラメーター:
query(string、任意):単位名の検索語(任意)。
例:
{
"query": "gram"
}
get_shopping_list
現在の買い物リストの項目を取得します。
パラメーター:
checked(string、任意):チェック状態で絞り込みます("true"、"false"、"both"、"recent")。デフォルトは "recent" です。
例:
{
"checked": "false"
}
add_shopping_list_item
食品名または ID、単位名または ID を指定して、買い物リストに項目を追加します。
パラメーター:
food_name_or_id(string または integer、必須):食品項目の名前または ID。amount(string、必須):必要な量(例:'1'、'2.5'、'1/2')。unit_name_or_id(string または integer、必須):単位の名前または ID(例:'cup'、'g'、5)。note(string、任意):項目へのメモ(任意)。
名前を使用した例:
{
"food_name_or_id": "Chicken Breast",
"amount": "500",
"unit_name_or_id": "g",
"note": "For stir-fry"
}
ID を使用した例:
{
"food_name_or_id": 42,
"amount": "2",
"unit_name_or_id": 15
}
update_shopping_list_item
既存の買い物リスト項目を更新します(例:チェックのオン/オフ、量の変更)。
パラメーター:
item_id(integer、必須):更新する買い物リスト項目の ID。amount(string、任意):新しい量(任意)。unit_id(integer、任意):新しい単位 ID(任意)。checked(boolean、任意):新しいチェック状態(任意)。note(string、任意):新しいメモ(任意)。
項目にチェックを付ける例:
{
"item_id": 101,
"checked": true
}
remove_shopping_list_item
買い物リストから項目を削除します。
パラメーター:
item_id(integer、必須):削除する買い物リスト項目の ID。
例:
{
"item_id": 102
}
テスト
MCP 接続に依存せずにサーバーの機能を確認できるテストスクリプトが含まれています。
# Set your API token (if not already set in the environment)
$env:TANDOOR_API_TOKEN = "your-api-token"
# Run the test script
npm run test
テストスクリプトには、次の操作を行うための簡単なメニューがあります。
- 利用可能なツールを一覧表示する
- レシピの作成をテストする
- 食事プランへのレシピ追加をテストする
実装に関する注意事項
Tandoor API には、食事プランの作成に関する固有の要件があります。
from_dateフィールドには時刻の要素を含める必要があります(YYYY-MM-DDT00:00:00)。recipeフィールドは、id、name、keywordsプロパティを含むオブジェクトである必要があります。meal_typeフィールドは、idとnameプロパティを含むオブジェクトである必要があります。servingsフィールドは数値ではなく文字列である必要があります。
これらの要件は MCP サーバーによって自動的に処理されます。
トラブルシューティング
MCP サーバーで問題が発生した場合:
- サーバーが実行中で、
[Setup] Tandoor MCP server running on stdio.と表示されていることを確認します。 - Tandoor の URL と API トークンが正しいことを確認します。
- サーバーの実行中に、ターミナルにエラーメッセージが表示されていないか確認します。
- 食事の種類の名前が、Tandoor インスタンス内のものと完全に一致していることを確認します。
- テストスクリプトを使用して、MCP システムの外部でサーバーの機能を確認します。
- サーバーを手動で実行し、コンソール出力で詳細なエラーメッセージを確認します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。