mcpField
M
mcp-wikibooks-cookbook

mcp-wikibooks-cookbook

ローカル
github.comゲーム・エンタメ0今日更新

mcp-wikibooks-cookbook について

mcp-wikibooks-cookbookは、チャットクライアントを英語版Wikibooks Cookbookにつなぎます。レシピ検索、カテゴリ別一覧、分量調整に加え、別途用意した食材リストも調整できます。

主な機能

  1. 01料理名や食材でレシピ検索
  2. 02レシピの読み込みと分量調整
  3. 03料理ジャンル・料理種別・主な食材で一覧表示
  4. 04任意の食材リストの分量調整

活用シーン

  1. 01料理名や食材からレシピを探す
  2. 02指定人数に合わせてレシピの分量を調整
  3. 03料理ジャンルや料理種別でレシピを閲覧
  4. 04手元の食材リストの分量を調整

MCP 対応

Wikibooks Cookbookの検索、レシピ詳細、カテゴリ別一覧、食材の分量調整をMCPクライアント向けのツールとして提供します。

設定

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

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

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

リポジトリ
パッケージ
npmmcp-wikibooks-cookbook2.2.0
mcpbmcp-wikibooks-cookbook-2.2.0.mcpb2.2.0

ツール

4

掲載時のツール一覧 · 今日に更新

パラメーター型必須説明
limitintegerいいえ
querystringはい'carbonara' のような料理、または 'guanciale' のような食材です。
searchenumいいえ'text' はページ全体を検索し、'title' はページ名のみを照合します。text | title

詳細

mcp-wikibooks-cookbook

npm CI license MCP Registry Glama M8ven LobeHub Install in Cursor Install in VS Code

Cookbookは、ウィキメディア・プロジェクトである英語版Wikibooksのレシピ集です。何千ものレシピが公開され、誰でも編集・管理できます。それぞれのレシピには、材料、必要な道具、手順、執筆者が加えたヒントやアレンジ、そして料理のジャンル、料理の種類、主な材料などの分類が記載されています。ページはクリエイティブ・コモンズ 表示-継承 4.0の下で公開されています。

このサーバーは、チャットクライアントをこのレシピ集に接続します。料理名や材料からレシピを検索したり、料理のジャンル、料理の種類、主な材料で一覧表示したり、食卓にいる人数に合わせて材料の分量を調整したレシピを読んだり、独自の材料リストの分量を調整したりできます。API キーもアカウントも必要ありません。

フランス語版


インストール

ワンクリックでインストール

Install in Cursor Install in VS Code

Claude Code

claude mcp add wikibooks-cookbook -- npx -y mcp-wikibooks-cookbook

Claude Desktop、Cursor、および標準の設定形式を使用するクライアント

{
  "mcpServers": {
    "wikibooks-cookbook": {
      "command": "npx",
      "args": ["-y", "mcp-wikibooks-cookbook"]
    }
  }
}

Node 24以降が必要です。環境変数の設定は不要です。

Docker を使用する場合
{
  "mcpServers": {
    "wikibooks-cookbook": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-wikibooks-cookbook:2.1.0"]
    }
  }
}

-iは、プロトコルが流れる標準入力を開いたままにします。TTYはストリームを書き換えるため、-tは指定しません。コンテナに必要なのはapi.wikimedia.orgへのHTTPS送信接続だけです。ボリューム、ポート、認証情報は必要ありません。

npm を使わずにバンドルを使用する

最新リリースから mcp-wikibooks-cookbook-2.1.0.mcpbをダウンロードして開きます。MCPバンドルに対応したクライアントなら、npmも設定ファイルの編集も不要で、自動的にインストールできます。バンドルには依存関係が含まれているため、インストール時に何かをダウンロードする必要はありません。

質問できること

  • 「Cookbook でカルボナーラのレシピを探して。」
  • 「4 人分ではなく、6 人分として読んで。」
  • 「このコレクションにはどんなタイのスープがありますか?」
  • 「レンズ豆を使ったレシピはどれですか?」
  • 「この材料リストを 2.5 倍にして。」

通常の流れは、検索してからレシピを読むことです。検索結果の行には id(ページキー)が含まれており、get_recipe はそのキーを受け取ります。

ツール

ツール機能
search_recipes料理名または材料からレシピを検索します。
get_recipe必要に応じて分量を変更し、1 件のレシピを読み込みます。
scale_ingredientsWiki に問い合わせずに、任意の材料リストの分量を変更します。
list_recipes料理のジャンル、料理の種類、または主な材料別にレシピを一覧表示します。
search_recipes

Cookbook を検索します。ページ全体のテキスト、またはページタイトルのみを検索対象にできます。

引数型必須機能
query文字列、1~300 文字はいcarbonara のような料理名、または guanciale のような材料名です。
searchtext または title、デフォルトは textいいえtext はページ全体を検索し、title はページ名のみを照合します。
limit整数、1~50、デフォルトは 10いいえ返す行数です。

返される内容: id(get_recipe が受け取るページキー)、title、url、image_url、Wiki のページに記載された短い説明である description、およびハイライトのマークアップを除いた一致箇所の抜粋である excerpt を含む行です。最後の 3 つは、検索結果に含まれない場合はそれぞれ null になります。total_available は常に null です。検索ルートは総数もページネーションも公開しないため、result_count にはこの呼び出しで返された行数が設定されます。

get_recipe

1 件のレシピを読み込み、分量が指定されている場合は材料の分量を変更します。

引数型必須機能
id文字列、1~300 文字はいCookbook:Spaghetti_alla_Carbonara のようなページキーです。
servings整数、1~500いいえ材料の分量を指定した人数分に変更します。
max_description_chars整数、100~20000、デフォルトは 1200いいえページの文章をどの程度返すかを指定します。

返される内容: title、url、ingredients、equipment、steps、ページに記載されたメモやアレンジの tips、prep_minutes、cook_minutes、total_minutes、ページ独自の表記による time_text、time_phases、category、およびページが分類されているすべてのカテゴリを示す categories です。ページに記載のない値は null になります。id は読み込まれたページを示します。リダイレクト後は要求されたキーとは異なる場合があり、その場合はリダイレクト元のキーが redirected_from に示されます。yield はレシピの元の分量と変更後の分量を示し、各材料の scaling には scaled、rounded、unscaled のいずれかが設定されます。

scale_ingredients

Wiki へのリクエストを行わず、材料行のリストに同じ算術処理を適用します。

引数型必須動作
ingredients1~100 個の文字列の配列、各最大 300 文字はい分量を調整する行です。
factor0 より大きく 100 以下の数値2 つのうち 1 つ適用する倍率です。
from_servings0 より大きく 500 以下の数値2 つのうち 1 つリストが何人分として書かれているかです。
to_servings0 より大きく 500 以下の数値2 つのうち 1 つ何人分にするかです。

factor、または from_servings と to_servings の組み合わせを渡します。

戻り値: 使用した factor、get_recipe が返す形式で分量を調整した ingredients、および scaled_count、rounded_count、unscaled_count です。

list_recipes

Cookbook のファイルで分類されているカテゴリに沿ってレシピを一覧表示します。引数は組み合わせて指定でき、どの検索がそれらをもとに構築されたかを回答で示します。

引数型必須動作
cuisine文字列、最大 80 文字いいえItalian や Thai などの料理の種類または国です。
dish_type文字列、最大 80 文字いいえsoup、dessert、bread などの料理の種類です。
main_ingredient文字列、最大 80 文字いいえレシピの主な材料です。
limit整数、1~50、デフォルトは 15いいえ返す行数です。

戻り値: search_recipes が返す行です。query には、このサーバーが引数から構築した検索内容が入り、各引数はその値が反映されるか、省略された場合は null になります。

分量の調整

分量は適した単位で示されるため、レシピで使われているものとは異なる単位で行が返されることがあります。たとえば、200 g に 20 を掛けると 4 kg になります。

材料をどこまで細かく分けられるかは、その材料によって異なります。パンは 2 つ、3 つ、4 つに切れますが、卵は分けられません。分量がその中間になる場合は丸められるため、調整後のレシピは元の比率から少しずれます。その行には rounded が付き、注記に処理内容が示されます。

数値はこのサーバーの計算結果なので、提示する際には再計算されたものだと伝えてください。ページに人数の記載がないレシピは人数に合わせて調整できず、その旨が回答に示されます。

ライセンスとクレジット表記

Cookbook のページは Creative Commons Attribution-ShareAlike 4.0 のもとで公開されています。 レシピを再掲載する場合は、Wikibooks と出典ページをクレジット表記し、そのレシピをもとに作成したものも同じライセンスで共有する必要があります。get_recipe は license とページの url の両方を返すため、回答にはクレジット情報が含まれます。

設定

すべての変数は任意です。クライアント設定の env ブロックで設定してください。

変数デフォルト説明
WB_USER_AGENTプロジェクトの識別情報Wikimedia にアプリケーション名と、連絡可能な担当者の連絡先を知らせます。
WB_MIN_INTERVAL_MS10002 つのリクエスト間の間隔です。500〜60000 の範囲で指定します。
WB_TIMEOUT_MS200001 件のリクエストのタイムアウト時間です。1000〜120000 の範囲で指定します。
WB_MAX_RETRIES3一時的な失敗後に再試行する回数です。0〜8 の範囲で指定します。
WB_CACHE_TTL_MS900000ページをメモリに保持する時間です。0〜86400000 の範囲で指定します。
WB_CACHE_MAX_ENTRIES200同時にメモリに保持するページ数です。1〜5000 の範囲で指定します。
WB_MAX_BODY_BYTES8000000読み込むページの最大サイズです。バイト単位で、100000〜64000000 の範囲で指定します。
WB_LOG_LEVELerrorsilent、error、info、debug のいずれかで、stderr に出力されます。

範囲外の値はデフォルト値に戻り、その理由が stderr に出力されます。

エラー

すべてのエラーには、6 種類のコードのうち 1 つ、メッセージ、および必要に応じて次に行う操作を示すヒントが含まれます。

コード発生したこと対処方法
not_foundwiki は応答しましたが、そのページは存在しません。search_recipes でページキーを確認してください。
invalid_inputリクエストを送信する前に引数が拒否されました。引数名が示されているメッセージを確認してください。
rate_limitedWikimedia から、このクライアントのリクエスト速度を落とすよう求められました。ヒントに示された秒数だけ待ってから、同じ引数で再度呼び出してください。レシピは引き続き利用できます。
parse_failureページは読み込まれましたが、想定されたコンテンツがありませんでした。課題トラッカーで報告してください。
network_errorリクエストが完了しませんでした。少し待ってから再試行してください。
timeoutリクエストがタイムアウトしました。WB_TIMEOUT_MS を増やすか、取得する行数を減らしてください。

ライブラリとして

wiki を読み込むレイヤーは、リクエスト間隔の制御、キャッシュ、エラー処理を備え、特定のプロトコルに依存しない形で単独公開されています。

import { WikibooksClient } from "mcp-wikibooks-cookbook/client";

const client = new WikibooksClient();
const { data, cached } = await client.getRecipe("Cookbook:Spaghetti_alla_Carbonara");
console.log(data.title, data.ingredients.length, cached);

search と getRecipe はそれぞれ { data, cached } を返し、6 種類のコードのうち 1 つを持つエラーをスローします。2 つのリクエスト間に設ける間隔も、ここで適用されます。

リクエスト間隔と出典表示

リクエストは一度に1件ずつ送信され、少なくとも1秒の間隔を空けます。また、サーバーの設定にかかわらず、最小間隔は0.5秒です。User-Agent の末尾には必ずプロジェクト名と、担当者に連絡できるアドレスが含まれます。

読み取りには、Wikimedia が開発者向けに文書化し、管理しているホスト api.wikimedia.org を使用します。すべての結果には、読み取り元ページのアドレスと、そのページが公開されているライセンスが含まれます。

この MCP サーバーは非公式プロジェクトであり、Wikimedia または Wikibooks コミュニティとは関係ありません。

プライバシー

このサーバーはユーザーに関する情報を収集せず、作者に情報を送信することもありません。お使いのマシン上で動作し、api.wikimedia.org のみに接続します。実行中は回答をメモリ上に保持し、ディスクには何も書き込みません。 PRIVACY.md には、リクエストに含まれる情報と、その内容を変更する設定が記載されています。

開発

npm install
npm run build:fixtures
npm test
npm run check

テストは生成されたフィクスチャに対して実行され、ネットワークリクエストは行いません。ライブテストスイートの npm run test:live は、各ルートに対して1件のリクエストを行い、サービス自体に対して毎晩実行されます。

貢献

バグ、質問、アイデアはイシュートラッカーにお寄せください。プルリクエストも歓迎します。まずイシューを作成すると、変更内容について合意しやすくなります。CONTRIBUTING.mdをご覧ください。

ライセンス

このサーバー独自のコードは MIT ライセンスです。詳細はLICENSEをご覧ください。Cookbook のページは、それぞれの著者および Wikibooks コミュニティに帰属し、CC BY-SA 4.0 の下で公開されています。


mcp-wikibooks-cookbook(フランス語)

英語版

Cookbookは、Wikimedia プロジェクトである英語版 Wikibooks のレシピ集です。何千ものレシピが公開され、継続的に更新されています。それぞれのレシピには、材料、必要な道具、手順、著者が加えたヒントやバリエーション、そして料理の種類、料理の分類、主な食材といったカテゴリが記載されています。ページは Creative Commons Attribution-ShareAlike 4.0 の下で公開されています。

このサーバーは、会話型クライアントをこのコレクションに接続します。料理や食材でレシピを検索したり、料理の分類、料理の種類、主な食材で一覧表示したり、人数に合わせて調整された材料とともにレシピを読んだり、任意の材料リストを調整したりできます。API キーもアカウントも必要ありません。

インストール

ワンクリックインストール

Cursor にインストール VS Code にインストール

Claude Code

claude mcp add wikibooks-cookbook -- npx -y mcp-wikibooks-cookbook

Claude Desktop、Cursor、および標準の設定形式に対応するすべてのクライアント

{
  "mcpServers": {
    "wikibooks-cookbook": {
      "command": "npx",
      "args": ["-y", "mcp-wikibooks-cookbook"]
    }
  }
}

Node 24 以降が必要です。環境変数の設定は不要です。

Docker を使用する場合
{
  "mcpServers": {
    "wikibooks-cookbook": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-wikibooks-cookbook:2.1.0"]
    }
  }
}

-i は、プロトコルのチャネルである標準入力を開いたままにします。-t は、TTY がストリームを書き換えるため省略しています。コンテナに必要なのは api.wikimedia.org への HTTPS アウトバウンドアクセスだけです。ボリューム、ポート、認証情報は必要ありません。

npm を使わずにインストール

最新のリリース から mcp-wikibooks-cookbook-2.1.0.mcpb をダウンロードして開いてください。MCP バンドルに対応したクライアントなら、自動でインストールされます。npm も、変更する設定ファイルも必要ありません。バンドルには依存関係が含まれているため、インストール時に何もダウンロードされません。

依頼できること

  • 「Cookbook でカルボナーラのレシピを探して。」
  • 「4 人分ではなく、6 人分にして読んで。」
  • 「コレクションにはどんなタイ風スープがある?」
  • 「レンズ豆を使ったレシピはどれ?」
  • 「この材料リストを 2.5 倍にして。」

通常の流れは検索してから読むことです。検索結果の行には id(ページキー)があり、get_recipe ではそのキーを指定します。

ツール

ツール内容
search_recipes料理名または材料でレシピを検索します。
get_recipeレシピを取得します。指定に応じて人数分を調整できます。
scale_ingredientswiki へのリクエストなしで、任意の材料リストの分量を調整します。
list_recipes料理の種類、料理区分、または主な材料でレシピを一覧表示します。
search_recipes

Cookbook を検索します。ページの全文、またはページタイトルのみを対象にできます。

引数型必須内容
query文字列、1~300 文字はいcarbonara のような料理名、または guanciale のような材料。
searchtext または title、既定値は textいいえtext はページ全体を検索し、title はページ名のみを対象にします。
limit整数、1~50、既定値は 10いいえ返す行数。

返却値: id(get_recipe で指定するページキー)、title、url、image_url、description(wiki がページに付けている短い説明)、および excerpt(該当箇所からハイライト用のマークアップを取り除いた抜粋)を含む行が返されます。最後の 3 つの値は、検索結果に含まれない場合は null です。検索ルートでは総件数もページネーションも公開されないため、total_available は常に null です。そのため、result_count にはこの呼び出しで返された行数が入ります。

get_recipe

レシピを読み込み、分量が指定されている場合は材料の分量を調整します。

引数型必須説明
id文字列、1~300文字はいCookbook:Spaghetti_alla_Carbonaraのようなページキーです。
servings整数、1~500いいえこの分量に合わせて材料を調整します。
max_description_chars整数、100~20000、既定値は1200いいえページの説明文として返す文字数です。

戻り値: title、url、ingredients、equipment、steps、ページに掲載されたメモやアレンジを示すtips、prep_minutes、cook_minutes、total_minutes、ページの表記どおりのtime_text、time_phases、およびページが属する各カテゴリを示すcategoryとcategoriesです。ページに記載されていない数値はnullになります。idは読み込まれたページの名前であり、リダイレクト後は要求されたキーとは異なる場合があります。その場合、遷移元のキーはredirected_fromで示されます。yieldはレシピの元の分量と調整後の分量を示し、各材料にはscaled、rounded、unscaledのいずれかの値をとるscalingが含まれます。

scale_ingredients

Wiki に問い合わせることなく、任意の材料リストに同じ計算を適用します。

引数型必須説明
ingredients1~100個の文字列の配列、各300文字まではい調整する行です。
factor0より大きく100以下の数値どちらか一方適用する倍率です。
from_servings0より大きく500以下の数値どちらか一方元のリストの分量です。
to_servings0より大きく500以下の数値どちらか一方希望する分量です。

factor、またはfrom_servingsとto_servingsの組み合わせを指定してください。

戻り値: 適用されたfactor、get_recipeが返す形式に調整されたingredients、およびscaled_count、rounded_count、unscaled_countです。

list_recipes

Cookbook のカテゴリに基づいてレシピを一覧表示します。引数は組み合わせて指定でき、レスポンスにはどのような検索が構成されたかが示されます。

引数型必須説明
cuisine文字列、80文字までいいえItalianやThaiのような料理の種類または国です。
dish_type文字列、80文字までいいえsoup、dessert、breadのような料理の種類です。
main_ingredient文字列、80文字までいいえレシピの主となる材料です。
limit整数、1~50、既定値は15いいえ返す行数です。

戻り値: search_recipesが返す行と、引数に基づいてこのサーバーが構成した検索を示すqueryです。また、省略された引数はnullとなり、それ以外の引数は値が再掲されます。

分量の調整

分量は、それに適した単位で表されます。調整後は、レシピとは異なる単位で行が表示されることがあります。たとえば、200 g を20倍すると 4 kg になります。

食材をどの程度細かく分けられるかは、その性質によって異なります。パンは半分、3等分、4等分にできますが、卵は分けられません。そのため、分割できない値になった場合は丸められ、調整後のレシピは元の比率から多少ずれます。行には rounded と記され、注記にどのように処理したかが示されます。

数値はこのサーバーが計算したものなので、提示する際は再計算されたことを伝えてください。ページに人数の記載がないレシピは、指定した人数分に換算できず、その旨が回答に示されます。

ライセンスとクレジット表記

Cookbook のページは、Creative Commons 表示-継承 4.0のもとで公開されています。レシピを再利用する場合は、Wikibooks と出典ページをクレジット表記し、それをもとに作成したものも同じライセンスで共有する必要があります。get_recipe は license とページの url の両方を返すため、回答にクレジット表記を含められます。

設定

各変数は省略可能です。クライアントの設定にある env ブロックで設定します。

変数デフォルト説明
WB_USER_AGENTプロジェクトの識別情報Wikimedia にアプリケーションを識別させ、担当者に連絡できるアドレスを提示します。
WB_MIN_INTERVAL_MS1000リクエスト間の間隔です。500~60000 の範囲で指定します。
WB_TIMEOUT_MS20000リクエストのタイムアウトです。1000~120000 の範囲で指定します。
WB_MAX_RETRIES3一時的な失敗後の再試行回数です。0~8 の範囲で指定します。
WB_CACHE_TTL_MS900000ページをメモリに保持する期間です。0~86400000 の範囲で指定します。
WB_CACHE_MAX_ENTRIES200一度にメモリに保持するページ数です。1~5000 の範囲で指定します。
WB_MAX_BODY_BYTES8000000読み込むページの最大サイズです。100000~64000000 バイトの範囲で指定します。
WB_LOG_LEVELerrorsilent、error、info、debug のいずれかを指定します。標準エラー出力に書き込まれます。

指定範囲外の値はデフォルト値に戻され、その理由が標準エラー出力に書き込まれます。

エラー

各エラーには6つのコードのいずれかとメッセージが含まれ、必要に応じて次に行う操作のヒントも示されます。

コード発生したこと対処方法
not_foundWiki は応答しましたが、このページはありません。search_recipes でページのキーを確認してください。
invalid_inputリクエストを送信する前に引数が拒否されました。どの引数かを示しているメッセージを読んでください。
rate_limitedWikimedia がこのクライアントにリクエストを遅らせるよう求めています。指定された秒数待ってから、同じ引数で再度呼び出してください。レシピは引き続き存在します。
parse_failureページは読み込まれましたが、想定されるコンテンツがありません。課題トラッカーで報告してください。
network_errorリクエストが完了しませんでした。少し待ってから再試行してください。
timeoutリクエストがタイムアウトしました。WB_TIMEOUT_MS を増やすか、取得する行数を減らしてください。

ライブラリとして

Wiki を読み取るレイヤーは、プロトコルに依存せず、独自のペース制御、キャッシュ、エラー処理を備えた単体のパッケージとして公開されています。

import { WikibooksClient } from "mcp-wikibooks-cookbook/client";

const client = new WikibooksClient();
const { data, cached } = await client.getRecipe("Cookbook:Spaghetti_alla_Carbonara");
console.log(data.title, data.ingredients.length, cached);

search と getRecipe はそれぞれ { data, cached } を返し、6つのコードのいずれかを持つエラーをスローします。リクエスト間の最小間隔もここで適用されます。

ペース制御とクレジット表記

リクエストは1つずつ送信され、少なくとも1秒の間隔が空けられます。また、設定にかかわらず、最小間隔は0.5秒です。User-Agent の末尾には、常にプロジェクト名と連絡先のメールアドレスが含まれます。

読み取り先は api.wikimedia.org です。これは Wikimedia が開発者向けに公開し、保守しているホストです。各結果には、読み取り元のページのアドレスと、そのページが公開されているライセンスが含まれます。

この MCP は非公式のプロジェクトであり、Wikimedia および Wikibooks コミュニティとは関係ありません。

プライバシー

このサーバーはユーザーに関する情報を収集せず、作者に情報を送信することもありません。お使いのマシン上で動作し、api.wikimedia.org とのみ通信します。実行中は応答をメモリに保持し、ディスクには何も書き込みません。PRIVACY.md では、リクエストに含まれる情報と、それを変更する設定について説明しています。

開発

npm install
npm run build:fixtures
npm test
npm run check

テストは生成されたフィクスチャを使用して実行され、リクエストは送信しません。ライブテストスイート npm run test:live は、各ルートにつき1つのリクエストを送信し、サービス本体に対して毎晩実行されます。

貢献

不具合、質問、アイデアは 課題トラッカーにお寄せください。 変更の提案も歓迎します。まず課題を作成すると、変更内容について合意しやすくなります。CONTRIBUTING.mdをご覧ください。

ライセンス

このサーバーのコードはMITライセンスです。LICENSEをご覧ください。Cookbook のページは各著者および Wikibooks コミュニティに帰属し、CC BY-SA 4.0 の下で公開されています。

コメント

MCP は初めてですか?

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

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