mcpField
C
Cook (Cooklang recipes)

Cook (Cooklang recipes)

ローカル
cook.mdヘルスケア33 週間前に更新

Cook (Cooklang recipes) について

Cookは、Cooklangのレシピ集を扱うAIエージェント向けのローカルMCPサーバーです。レシピの検索、検証、編集、整理に対応し、cook.mdへのログイン後は栄養計算や一部のインポートも利用できます。

主な機能

  1. 01レシピの読み取り・検索・検証
  2. 02レシピとメニューファイルの作成
  3. 03プランから買い物リストを作成
  4. 04パントリー在庫と期限の管理
  5. 05カスタムレポートの生成
  6. 06栄養計算とレシピのインポート

活用シーン

  1. 01週の献立と買い物リストの作成
  2. 02レシピ集の参照切れを確認
  3. 03在庫から作れる料理を検索
  4. 04ウェブページや写真からレシピを取り込む

MCP 対応

MCPサーバーはCooklangのレシピ用ツール、プロンプト、リソースをMCPクライアントに提供します。レシピファイルは指定したローカルフォルダーに保存され、栄養計算と一部のインポートにはcook.mdへのログインが必要です。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"cook-md-cook": {
"command": "npx",
"args": [
"-y",
"@cookmd/mcp"
],
"env": {
"COOK_RECIPES_DIR": "<COOK_RECIPES_DIR>"
}
}
}
}
起動コマンドnpx -y @cookmd/mcp
設定が必要な環境変数
COOK_RECIPES_DIRRecipe folder. If unset, the client's workspace roots, then the working directory.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@cookmd/mcp0.2.3

ツール

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

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

詳細

cook-mcp

AI エージェント(Claude Code、Claude Desktop、Cursor、ChatGPT、その他の MCP クライアント)が、お使いの Cooklang レシピコレクションにアクセスできる MCP サーバーです。レシピは、所有するフォルダー内に通常の .cook ファイルと .menu ファイルとして保存されます。エージェントはレシピの読み取り、検索、検証、書き込み、買い物リストの作成、パントリーの管理、レポートの生成をすべてローカルで行えます。アカウントは不要です。cook.md にログインすると、栄養計算や、写真およびソーシャルリンクからのレシピのインポートも利用できます。

インストール

Claude Code:

claude mcp add cook -- npx -y @cookmd/mcp

mcpServers 設定を利用できるクライアント:

{
  "mcpServers": {
    "cook": {
      "command": "npx",
      "args": ["-y", "@cookmd/mcp"],
      "env": { "COOK_RECIPES_DIR": "/path/to/recipes" }
    }
  }
}

COOK_RECIPES_DIR が設定されていない場合、サーバーはクライアントが共有するワークスペースフォルダー、またはクライアントの起動元フォルダーを使用します。レシピフォルダーの選択方法をご覧ください。

対応プラットフォーム:macOS(arm64、x64)および Linux(x64、arm64、glibc 2.35 以降)。Windows ビルドはまだありません。

各クライアント向けのセットアップ手順:https://cook.md/help/mcp

Claude Code プラグイン

Claude Code ユーザーは、サーバーを手動で追加する代わりに cooklang プラグインをインストールできます。cooklang/cooklang-skills にあり、このサーバーと以下のスキルがバンドルされています。

/plugin marketplace add cooklang/cooklang-skills
/plugin install cooklang@cooklang-skills

プラグインは、Claude Code のプロジェクトフォルダーをレシピのルートとしてサーバーを起動します。Claude Code は、依頼内容(「来週の夕食を計画して」「このレシピは有効?」など)に応じて適切なスキルを選択します。すでに claude mcp add cook でサーバーを追加している場合は、二重起動を避けるため、その登録を削除してください。

スキル(このサーバーから cooklang://skills/<name> リソースとしても提供されます):

スキル用途
cooklang-editing新しいレシピの作成、または .cook ファイルの編集や修正
cooklang-validationレシピ、フォルダー、またはコレクション全体のエラーや壊れた参照の確認
metadataYAML フロントマター(タイトル、タグ、分量、時間)の追加や修正。一括変更にも対応
recipe-importURL、写真、貼り付けたテキストからレシピをインポート
recipe-search材料、タグ、料理の種類、コース、または覚えているフレーズからレシピを検索
scale-recipe分量を増減したレシピを表示
export-recipeレシピを Markdown、JSON、プレーンテキスト、HTML に変換
organize-collectionフォルダー構成、メタデータ監査、売り場とパントリーの設定、ライブラリー全体のチェック
meal-planning.menu の献立プランを作成または編集
shopping-listレシピやプランから、売り場ごとにまとめた買い物リストを作成。パントリーの在庫分は差し引き
pantry在庫、期限、残り少ない食材を管理。手元にあるもので何を作れるか確認
report-authoringrender_report を使ったカスタム Jinja レポートや印刷用データの作成
nutrition-reports栄養評価とスクリーニング(Cook Basic または Pro)
nutrition-goals栄養目標を達成できるよう、レシピやプランを変更(Cook Basic または Pro)

このリポジトリ内の skills/ が正式なコピーです。プラグインリポジトリはここから同期します。各スキルは skills/<name>/SKILL.md にあります。

ツール

無料(ローカル、ログイン不要)
ツール内容
list_recipesレシピ、献立、またはレポートテンプレートを一覧表示します(kind:recipe、menu、template、all)
read_recipeレシピまたは献立を読み込みます。ソースに加えて、解析済みの材料、調理器具、手順、メタデータを取得できます。オプションで分量を調整できます
search_recipes名前や内容を検索します。タグで絞り込むこともできます
validateファイル、フォルダー、コレクション全体、または未保存のコンテンツを検証し、エラーや参照切れを確認します
write_recipe.cook レシピを保存します(先に検証します)
write_menu.menu 献立を保存します(先に検証します)
write_configconfig/aisle.conf、config/pantry.conf、または reports/ や config/reports/ 内の .jinja レポートテンプレートを保存します
shopping_listレシピや献立から買い物リストを作成します。重複をまとめ、売り場ごとに分類し、パントリーの在庫を差し引きます
pantry_listパントリーの内容をセクションごとに表示します
pantry_expiringまもなく期限切れになる品目を表示します
pantry_depleted在庫が少ないときのしきい値以下の品目を表示します
pantry_recipesパントリーにある食材で作れるレシピを表示します
pantry_updateパントリーの品目を追加、更新、削除します
render_reportレシピまたは献立を対象に、Jinja レポートテンプレートをレンダリングします(通常のテンプレートにはログイン不要です)
Cook Basic / Pro(cook.md ログイン)
ツール内容
logincook.md のデバイスログインを開始します。コードと URL が表示されます
auth_statusログイン状態、プラン、インポート可能回数を表示します
get_nutrition1種類の食材の分量に対する栄養情報を取得します
aggregate_nutrition複数の食材行の栄養情報を合計します
lookup_ingredient食材カタログをあいまい検索します
convert_units単位を変換します(体積から重量への変換には密度が必要です)
check_category食材が特定のカテゴリに属するかを確認します
branded_lookupバーコードまたはテキストで包装済み商品を検索します
reference_intakes1日の参照摂取量の表(RDA/DV)を取得します
import_recipeウェブページ、写真、または貼り付けたテキストを Cooklang に変換します

ウェブページや貼り付けたテキストからの import_recipe は、ログインなしで利用できます。写真やソーシャルメディアのリンクには cook.md アカウントが必要で、インポート可能回数を使用します。Cooklang テキストを返しますが、保存はしません。エージェントが検証してから write_recipe を呼び出します。render_report 内の栄養関連関数にも Cook Basic または Pro が必要です。

プロンプトとリソース

プロンプト:meal-planning、shopping-list、pantry、import-recipe、edit-recipe、nutrition-report、nutrition-goals、scale-recipe。

リソース:

  • cooklang://spec:Cooklang の仕様
  • cooklang://syntax:構文リファレンス
  • cooklang://menu-format:.menu 献立フォーマット
  • cooklang://skills/<name>:エージェント向けの実践ガイド。上記の表にある各スキルに対応しています:cooklang-editing、cooklang-validation、export-recipe、meal-planning、metadata、nutrition-goals、nutrition-reports、organize-collection、pantry、recipe-import、recipe-search、report-authoring、scale-recipe、shopping-list

安全性

  • 書き込み先はレシピのルートディレクトリ内に限られます。範囲外のパスは拒否されます。
  • すべての書き込みは事前に検証されます。無効な Cooklang は保存されません。
  • 非推奨の >> メタデータ構文は拒否されます。YAML フロントマターを使用してください。
  • 削除ツールはありません。エージェントがファイルを削除することはできません。

既知の制限事項

  • 買い物リストで在庫を差し引く処理は、単位が一致する場合にのみ機能します。たとえば、パントリーにある 1 kg は、レシピの 200 g とは相殺されません。これは cookcli-core の制限です。
  • レシピフォルダー内のシンボリックリンクは、読み込みや一覧表示の際にほとんどたどられません。ただし、拡張子なしの名前で指定されたシンボリックリンクや、レシピの @./ 参照を通じて到達したシンボリックリンクは、たどられる場合があります。これは、フォルダー外を指すシンボリックリンクをレシピに配置した場合にのみ問題になります。
  • Windows 向けビルドはまだありません。
  • 削除ツールはありません。

環境変数

変数デフォルト意味
COOK_RECIPES_DIRクライアントのルート、その後に作業ディレクトリレシピのルートです。すべてのパスはこのルートからの相対パスです。設定されている場合は常に優先されます。
COOKMD_BASE_URLhttps://cook.mdログイン、利用権限、インポート
NUTRITION_API_URLhttps://nutrition.cook.md栄養サービス
NUTRITION_API_TOKENなし組織キーまたは事前作成されたトークンです。保存済みのログイン情報より優先されます。
COOK_MCP_AUTH_PATH~/.config/cook-mcp/auth.jsonトークンの保存先です。旧 NUTRITION_MCP_AUTH_PATH もエイリアスとして引き続き使用できます。

レシピフォルダーの選択方法

  1. COOK_RECIPES_DIR が設定されている場合はそれを使用します。それ以外は参照しません。
  2. クライアントの MCP ルートです。クライアントがルートをサポートしている場合(開いているワークスペースフォルダーをサーバーと共有する場合)、既存のフォルダーである最初の file:// ルートがレシピのルートになります。サーバーは最初のレシピツール呼び出し時と、クライアントからルートの変更が通知されるたびに問い合わせます。クライアントが 5 秒以内に応答しない場合、サーバーは作業ディレクトリを使用し、後で再度問い合わせます(最大 30 秒に 1 回)。
  3. クライアントがサーバーを起動したフォルダーです。

ルートとは、意図的に開いたフォルダーです。そのため、/、ホームフォルダー、またはエージェントのプラグインインストールフォルダー内(たとえば ~/.codex/plugins/cache/...、~/.gemini/extensions/...、または CLAUDE_PLUGIN_ROOT が指すフォルダー)でない限り使用されます。作業ディレクトリはより厳密に確認されます。作業ディレクトリ自体、またはその 4 階層上までのフォルダーに .claude-plugin/plugin.json、Agent Plugins の plugin.json、または gemini-extension.json がある場合も拒否されます。そうしないと、サーバーを自身のインストールフォルダーで起動するプラグインが、誤ったファイルを公開し、更新時に消去されるフォルダーにレシピを書き込むおそれがあるためです。使用可能なフォルダーが見つからない場合、レシピツールはレシピフォルダーが設定されていないこと、その理由、COOK_RECIPES_DIR で解決できることを伝えます。auth_status には recipe_root_source: "unset" と表示されます。それ以外の場合、recipe_root_source は env、roots、または cwd です。

各クライアントの動作:

  • Claude Code はプロジェクトフォルダーをルートとして送信することが確認されているため、設定は不要です。

  • Codex はルートを送信せず(0.160.1 で確認済み)、サーバーをプラグインフォルダーで起動する可能性があるため、COOK_RECIPES_DIR を設定してください:

    codex mcp add cook --env COOK_RECIPES_DIR=/path/to/recipes -- npx -y @cookmd/mcp
    
  • VS Code と Cursor はルートのサポートをドキュメントで案内しています(ここでは未確認)。レシピツールにフォルダーが設定されていないと表示された場合は、サーバーの設定で COOK_RECIPES_DIR を設定してください。

質問例

  • 「レシピから来週の夕食を計画して、買い物リストを作成してください。」
  • 「パントリーにあるもので何が作れますか?」
  • 「コレクション全体を確認して、壊れた参照がないか調べてください。」
  • 「https://example.com/some-recipe をレシピとしてインポートしてください。」
  • 「今週のプランにはタンパク質がどれくらい含まれていますか?」(Cook Basic または Pro が必要です)

ソースからビルドする

cargo build --release
cargo test

バイナリは target/release/cook-mcp です。stdio 経由で MCP と通信します。cook-mcp login と cook-mcp logout を使用すると、ターミナルから cook.md のログインを管理できます。

nutrition-mcp からの移行

@cookmd/nutrition-mcp は引き続き動作します。現在は @cookmd/mcp を実行する薄いシムです。切り替えるには、MCP 設定のパッケージ名を @cookmd/mcp に変更してください。ログイン情報は引き継がれます。

変更点は 2 つあります。レシピツールには COOK_RECIPES_DIR が必要です(以前の設定では指定されていませんでした)。または、クライアントをレシピフォルダーで起動してください。どちらも設定されていない場合、レシピツールはレシピフォルダーが設定されていないことをエージェントに伝えます。また、render_report のパスはレシピフォルダーからの相対パスになりました。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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