mcpField
T
Tandoor MCP Server

Tandoor MCP Server

ローカル
github.com/starbuck93ヘルスケア1883 週間前に更新

Tandoor MCP Server について

Tandoor MCP Serverは、MCPクライアントをTandoor Recipe Managerに接続します。ツールを通じてレシピやミールプランを操作でき、買い物リストも管理できます。

主な機能

  1. 01材料と手順を含むレシピの作成
  2. 02名前や条件によるレシピ検索
  3. 03ミールプランの作成と絞り込み
  4. 04レシピ詳細と食材リストの取得
  5. 05買い物リスト項目の管理

活用シーン

  1. 01クライアントからTandoorにレシピを追加
  2. 02食材・キーワード・評価でレシピを検索
  3. 03日付と食事タイプに応じた献立計画
  4. 04買い物項目の更新やチェック

MCP 対応

レシピの作成・検索、ミールプランの管理、Tandoorデータの取得、買い物リストの編集に使うツールをMCPクライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Tandoor MCP Server

Tandoor Recipe Manager と連携するための Model Context Protocol(MCP)サーバーです。

Geminiで生成した画像

現在の状況

  • ✅ 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 にレシピを作成します
  • 特定の日付と食事タイプを指定して、食事プランにレシピを追加します
  • さまざまな条件(名前、キーワード、食材、評価)でレシピを検索します
  • 日付範囲と食事タイプで絞り込んで、食事プランを取得します
  • 特定のレシピの詳細情報をすべて取得します
  • 利用可能な食事タイプ、キーワード、食材、単位を一覧表示します
  • 買い物リストの項目を管理します(表示、追加、更新、削除)

セットアップ

  1. 依存関係をインストールします:

    npm install
    
  2. サーバーをビルドします:

    npm run build
    
  3. サーバーを手動で実行します(テスト用):

    # 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
    
  4. 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": []
        }
      }
    }
    
  5. すべてを 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"
      ]

  1. ./.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

テストスクリプトには、次の操作を行うための簡単なメニューがあります。

  1. 利用可能なツールを一覧表示する
  2. レシピの作成をテストする
  3. 食事プランへのレシピ追加をテストする

実装に関する注意事項

Tandoor API には、食事プランの作成に関する固有の要件があります。

  1. from_date フィールドには時刻の要素を含める必要があります(YYYY-MM-DDT00:00:00)。
  2. recipe フィールドは、id、name、keywords プロパティを含むオブジェクトである必要があります。
  3. meal_type フィールドは、id と name プロパティを含むオブジェクトである必要があります。
  4. servings フィールドは数値ではなく文字列である必要があります。

これらの要件は MCP サーバーによって自動的に処理されます。

トラブルシューティング

MCP サーバーで問題が発生した場合:

  1. サーバーが実行中で、[Setup] Tandoor MCP server running on stdio. と表示されていることを確認します。
  2. Tandoor の URL と API トークンが正しいことを確認します。
  3. サーバーの実行中に、ターミナルにエラーメッセージが表示されていないか確認します。
  4. 食事の種類の名前が、Tandoor インスタンス内のものと完全に一致していることを確認します。
  5. テストスクリプトを使用して、MCP システムの外部でサーバーの機能を確認します。
  6. サーバーを手動で実行し、コンソール出力で詳細なエラーメッセージを確認します。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。