mcpField
M
mcp-supertoinette

mcp-supertoinette

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

mcp-supertoinette について

mcp-supertoinetteは、チャットクライアントをSupertoinetteのフランス語レシピ集につなぎます。APIキーやアカウントなしで、レシピ検索、分量調整、ワインの提案確認ができます。

主な機能

  1. 01料理名や食材でレシピ検索
  2. 02レシピの読み込みと分量調整
  3. 03カテゴリ別のページ閲覧
  4. 04ワインの組み合わせ検索
  5. 05任意の食材リストの分量調整

活用シーン

  1. 01食材からフランス語レシピを探す
  2. 02大人数向けにレシピの分量を調整
  3. 03カテゴリ内のレシピを閲覧
  4. 04料理に対するサイトのワイン提案を確認

MCP 対応

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

設定

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

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

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

リポジトリ
パッケージ
npmmcp-supertoinette1.2.0
mcpbmcp-supertoinette-1.2.0.mcpb1.2.0

ツール

6

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

パラメーター型必須説明
idstringはいレシピの URL 内の数字です。例:'4210'。レシピの番号がわからない場合は、料理を検索してください。
servingsintegerいいえ分量をこの人数分に換算します。省略すると、サイト掲載のまま返されます。サイト独自の表記に換算元となる数字が含まれていない場合は拒否されます。

詳細

README の画像

mcp-supertoinette

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

Supertoinette はフランスの料理サイトで、現在も運営されている中では最も古いサイトのひとつです。レシピには、材料、手順、下ごしらえ・調理・休ませる時間、何人分か、料理の写真が掲載されています。レシピに加えて、料理に合う飲み物やワインの選び方、ワインの種類を紹介する独自のページも用意されています。

このサーバーはチャットクライアントをこのサイトに接続します。レシピを検索したり、食卓を囲む人数に合わせて材料の分量を調整したレシピを読んだり、カテゴリーをたどったり、カテゴリーをページごとに読んだり、料理に合う飲み物を調べたりできます。API キーもアカウントも必要ありません。

フランス語版


インストール

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

Install in Cursor Install in VS Code

Claude Code

claude mcp add supertoinette -- npx -y mcp-supertoinette

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

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

Node 24 以降が必要です。環境変数を設定する必要はありません。

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

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

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

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

質問できること

  • « 子牛肉のブランケットのレシピを探して。 »
  • "そのレシピを10人分で読み上げて。"
  • "このサイトでは、レシピをどんなカテゴリーに分類していますか?"
  • "牛肉のブルゴーニュ風煮込みには、どんなワインが合いますか?"
  • "祖母のノートにある材料リストを3倍にして。"

Supertoinetteはフランスのサイトなので、レシピはフランス語で掲載されています。通常は検索してからレシピを取得します。検索結果の各行にはidが含まれており、get_recipeにはそのIDを渡します。

ツール

ツール機能
get_recipe指定した人数分に換算したレシピを1件取得します。
search_recipes料理名または材料からレシピを検索します。
list_categoriesサイトがレシピを分類しているカテゴリーを取得します。
browse_recipes1つのカテゴリーをページごとに取得します。
get_wine_pairings料理に合うものとしてサイトが提案する飲み物を取得します。
scale_ingredientsサイトにリクエストせず、任意の材料リストを換算します。
get_recipe

レシピを1件すべて取得します。人数が指定されている場合は、材料の分量も換算します。

引数型必須機能
id文字列、1~10文字はいレシピのURLに含まれる番号。検索結果の各行にも表示されます。
servings整数、1~1000いいえ材料を指定した人数分に換算します。

返される内容: サイトがタイトルの先頭に付けた絵文字を取り除いたtitleと、サイト上の表記そのままのtitle_as_published、url、description、published_at、手順の前に掲載されている文章であるintro、steps、prep_minutes、cook_minutes、rest_minutes、total_minutes、category、author、ratingが返されます。ページに記載がない項目は、それぞれnullになります。yieldには、レシピの元の分量と換算後の分量が示されます。ingredientsには、ページ上で材料が分類されている見出しとともに各項目が含まれます。ingredient_countはその項目数を数えます。各項目のscalingには、scaled、rounded、unscaledのいずれかが示されます。

search_recipes

料理名または材料から、レシピを1ページずつ検索します。

引数型必須機能
query文字列、1~120文字はいフランス語で指定する料理名または材料。
limit整数、1~39いいえ返す行数。
page整数、1~1000いいえ取得する結果ページ。デフォルトは最初のページです。
category文字列、1~60文字いいえ1つのカテゴリー。以前の回答のfacetsに記載された表記を使用します。

返される内容: id、title、title_as_published、urlを含む各行が返されます。idはget_recipeに渡します。これらに加えて、page、このページからサイトがリンクしている最後のページを示すlast_page、result_count、表示処理が行われる前にそのページにあった行数を示すrows_published、total_available、さらに次の検索で使うカテゴリー名を示すfacetsが返されます。カテゴリー名を手入力で作らないでください。サイトが認識しない名前を指定すると、該当なしを示すページが返されます。

list_categories

サイトがレシピを分類しているカテゴリーを取得します。引数はありません。

返される内容: サイトの2つのリストにある項目数を示すcategory_countと、categories、取得元のurlが返されます。カテゴリーはbrowse_recipesに渡してください。

browse_recipes

1つのカテゴリーをページごとに読み取ります。

引数型必須内容
categorystring、1~80文字はいlist_categories が公開したカテゴリーです。
limitinteger、1~30いいえ返す行数です。
pageinteger、1~1000いいえ読み取るページです。デフォルトは最初のページです。

戻り値: 行と、search_recipes が返すエンベロープです。 last_page は一覧が何ページまであるかを示します。

get_wine_pairings

料理について書かれたページをもとに、その料理に合う飲み物としてサイトが提案するものを読み取ります。

引数型必須内容
idstring、1~10文字いずれか一方料理のアドレスに含まれる番号です。
pageinteger、1~100いずれか一方サイト独自の料理一覧のページです。

戻り値: id、サイト独自の名称によるdish、およびページに最初に記載されたワインのスタイルであるstyleを含む項目です。該当する記載がない場合、styleはnullです。

scale_ingredients

サイトにリクエストせずに、フランス語の材料行リストに同じ計算を適用します。

引数型必須内容
ingredients1~200個の文字列の配列、各1~300文字はいレシピに書かれたとおりの、換算対象の行です。
factor0より大きく100以下の数値いずれか一方分量に掛ける数値です。
from_servingsinteger、1~1000いずれか一方リストが何人分として書かれているかです。
to_servingsinteger、1~1000いずれか一方何人分にするかです。

factorを渡すか、from_servingsとto_servingsの組み合わせを渡してください。

戻り値: get_recipeが返す形式の換算後の行です。各行にはscalingが含まれます。

分量の換算

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

材料をどれだけ細かく分けられるかは、材料によって異なります。バゲットは2つ、3つ、4つに切れますが、卵は分けられません。分量がその中間になる場合は四捨五入され、換算後のレシピは元の比率から少しずれます。その行にはroundedが含まれ、注記に処理内容が記載されます。

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

設定

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

変数デフォルト説明
STO_USER_AGENTプロジェクトの識別情報サイトにアプリケーション名と、担当者に連絡できる連絡先を知らせます。
STO_MIN_INTERVAL_MS3000リクエスト間の間隔です。3000~60000 の範囲で指定します。
STO_TIMEOUT_MS200001 回のリクエストのタイムアウト時間です。1000~120000 の範囲で指定します。
STO_MAX_RETRIES3一時的な障害が発生した場合の再試行回数です。0~8 の範囲で指定します。
STO_CACHE_TTL_MS900000ページをメモリに保持する時間です。0~86400000 の範囲で指定します。
STO_CACHE_MAX_ENTRIES200一度にメモリに保持するページ数です。1~5000 の範囲で指定します。
STO_MAX_BODY_BYTES8000000読み込むページの最大サイズです。バイト単位で、100000~64000000 の範囲で指定します。
STO_LOG_LEVELerrorsilent、error、info、debug のいずれかを指定します。stderr に出力されます。

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

エラー

すべてのエラーには、6 種類のコードのいずれかとメッセージが含まれます。また、役立つ場合は次に取るべき行動を示すヒントも含まれます。

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

ライブラリとして

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

import { SupertoinetteClient } from "mcp-supertoinette/client";

const client = new SupertoinetteClient();
const { data, cached } = await client.getRecipe({ id: "10" });
console.log(data.title, data.ingredients.length, cached);

searchRecipes、browseRecipes、getRecipe、getPairings はそれぞれ { data, cached } を返し、6 種類のコードのいずれかを含むエラーをスローします。ここでも、リクエスト間には最低 3 秒の間隔が設けられます。

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

リクエストは一度に1件ずつ送信され、間隔は最低3秒です。この最低間隔は、サーバーの設定にかかわらず適用されます。User-Agent の末尾には、常にプロジェクトの識別情報と連絡可能なアドレスが含まれます。

すべての結果には、読み取ったページのアドレスが含まれ、source にはサイト名が記載されます。レシピ、タイトル、写真の権利は Supertoinette に帰属します。

この MCP サーバーは非公式プロジェクトであり、Supertoinette とは一切関係ありません。

プライバシー

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

開発

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

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

コントリビューション

バグ、質問、アイデアはイシュートラッカーにお寄せください。プルリクエストも歓迎します。まずイシューを作成すると、変更内容の方向性を相談できます。CONTRIBUTING.mdをご覧ください。

ライセンス

MIT ライセンスです。詳しくはLICENSEをご覧ください。レシピの権利は Supertoinette および各著者に帰属します。


mcp-supertoinette(フランス語)

英語版

Supertoinetteはフランスの料理サイトで、現存する最も古いサイトのひとつです。レシピには材料、手順、準備・調理・休ませる時間、何人分か、料理の写真が掲載されています。レシピに加えて、料理に合う飲み物を紹介するページもあり、ワインとそのスタイルが記載されています。

このサーバーは、会話型クライアントをこのサイトに接続します。レシピを検索したり、人数に合わせた材料とともにレシピを読んだり、カテゴリを閲覧したり、カテゴリをページごとに読んだり、料理に合う飲み物の提案を確認したりできます。API キーもアカウントも必要ありません。

インストール

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

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

Claude Code

claude mcp add supertoinette -- npx -y mcp-supertoinette

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

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

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

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

-i は、プロトコルの通信路である標準入力を開いたままにします。-t は、TTY によってストリームが書き換えられるため省略しています。コンテナには、www.supertoinette.com への HTTPS の送信アクセスだけが必要です。それ以外は何も必要ありません。ボリューム、ポート、認証情報はいずれも不要です。

npm を使わないバンドル

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

できること

  • 「ブランケット・ド・ヴォーのレシピを探して。」
  • 「このレシピを10人分にして読んで。」
  • 「このサイトではレシピをどのカテゴリーに分類していますか?」
  • 「ブッフ・ブルギニョンに合うワインは?」
  • 「祖母のノートにある材料リストを3倍にして。」

Supertoinetteはフランスのサイトなので、レシピはフランス語で掲載されています。 通常の流れは、検索してレシピを読むことです。検索結果の行にはidがあり、 get_recipeでその識別子を指定します。

ツール

ツール機能
get_recipeレシピを読み込み、指定があれば人数に合わせて調整します。
search_recipes料理名または材料からレシピを探します。
list_categoriesサイトがレシピを分類しているカテゴリーを読み込みます。
browse_recipesカテゴリーをページごとに読み込みます。
get_wine_pairingsサイトが料理に合わせて提案している飲み物を読み込みます。
scale_ingredientsサイトに問い合わせることなく、任意の材料リストの分量を調整します。
get_recipe

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

引数型必須機能
id文字列、1~10文字はいレシピのURLに含まれる番号。検索結果の行に記載されています。
servings整数、1~1000いいえ指定した人数に合わせて材料を調整します。

返される内容: サイトの冒頭にある絵文字を除いたtitleと、サイトに掲載されたとおりの title_as_published、url、description、published_at、調理手順の上に掲載された 文章であるintro、steps、prep_minutes、cook_minutes、rest_minutes、 total_minutes、category、author、ratingです。ページに記載がない項目は それぞれnullになります。yieldには、レシピが何人分として書かれているかと、 何人分に調整されたかが示されます。ingredientsには、ページ上で材料をまとめている 小見出しとともに材料の行が含まれます。ingredient_countは材料の数を示し、 各行のscalingはscaled、rounded、unscaledのいずれかです。

search_recipes

料理名または材料から、1ページずつレシピを検索します。

引数型必須機能
query文字列、1~120文字はいフランス語で指定する料理名または材料です。
limit整数、1~39いいえ返す行数です。
page整数、1~1000いいえ読み込む検索結果のページです。既定では最初のページです。
category文字列、1~60文字いいえ以前の応答のfacetsと同じ表記のカテゴリーです。

返される内容: idを含む行。idはget_recipeで指定できます。また、 title、title_as_published、urlも返されます。さらに、page、このページから サイトがリンクしている最も遠いページを示すlast_page、result_count、表示処理の前に ページに含まれていた行数を示すrows_published、total_available、および次回の検索で 使用できるカテゴリー表記を示すfacetsも返されます。表記を手動で組み立てないでください。 サイトが知らない表記に対しては、結果がないように見えるページが返されます。

list_categories

サイトがレシピを分類しているカテゴリを読み込みます。引数はありません。

戻り値: categories。サイトの2つのリストに含まれる項目数を示す category_countと、読み込み元のurlを含みます。カテゴリは browse_recipesに渡せます。

browse_recipes

カテゴリをページごとに読み込みます。

引数型必須説明
category文字列、1~80文字はいlist_categoriesが返すカテゴリです。
limit整数、1~30いいえ返す行数です。
page整数、1~1000いいえ読み込むページです。デフォルトは1ページ目です。

戻り値: search_recipesが返す行とラッパー。リストが何ページまであるかを last_pageで示します。

get_wine_pairings

このテーマについてサイトが公開したページに基づき、料理に合わせて飲むものとして サイトが提案している内容を読み込みます。

引数型必須説明
id文字列、1~10文字いずれか一方料理のURLに含まれる番号です。
page整数、1~100いずれか一方サイトの料理リストのページです。

戻り値: id、サイトが付けた料理名のdish、ページの冒頭に記載されたワインの スタイルを示すstyleを含む項目です。スタイルが記載されていない場合はnullです。

scale_ingredients

サイトへのリクエストを行わず、フランス語の食材リストであればどれにでも同じ計算を 適用します。

引数型必須説明
ingredients1~200個の文字列からなる配列、各文字列1~300文字はいレシピに記載されたとおりの、調整する行です。
factor0を超え100以下の数値いずれか一方分量に掛ける数値です。
from_servings整数、1~1000いずれか一方元のリストの人数です。
to_servings整数、1~1000いずれか一方希望する人数です。

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

戻り値: get_recipeが返す形式で調整した行。それぞれにscalingが付きます。

分量の調整

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

食材をどの程度細かく分けられるかは、その性質によって異なります。バゲットは 半分、3等分、4等分にできますが、卵は分けられません。そのため、端数は丸められ、 調整後のレシピは元の分量比から少しずれることがあります。その行にはroundedが付き、 注記に処理内容が記載されます。

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

設定

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

変数デフォルト説明
STO_USER_AGENTプロジェクトの識別情報サイトに対してアプリケーションを名乗り、担当者への連絡先を伝えます。
STO_MIN_INTERVAL_MS30002 回のリクエスト間隔です。3000 から 60000 まで設定できます。
STO_TIMEOUT_MS20000リクエストのタイムアウトです。1000 から 120000 まで設定できます。
STO_MAX_RETRIES3一時的な失敗後の再試行回数です。0 から 8 まで設定できます。
STO_CACHE_TTL_MS900000ページをメモリに保持する期間です。0 から 86400000 まで設定できます。
STO_CACHE_MAX_ENTRIES200同時にメモリに保持するページ数です。1 から 5000 まで設定できます。
STO_MAX_BODY_BYTES8000000読み込むページの最大サイズです(バイト単位)。100000 から 64000000 まで設定できます。
STO_LOG_LEVELerrorsilent、error、info、debug のいずれかで、標準エラー出力に書き込みます。

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

エラー

各エラーには 6 種類のコードのいずれかとメッセージが付き、役立つ場合は次の操作の案内も含まれます。

コード発生したこと対処方法
not_foundサイトは応答しましたが、このレシピまたはページはありません。search_recipes で識別子を確認してください。
invalid_inputリクエストを送信する前に引数が拒否されました。引数を特定するメッセージを確認してください。
rate_limitedサイトがこのクライアントに速度を落とすよう求めています。指定された秒数だけ待ち、同じ引数で再試行してください。レシピは引き続き存在します。
parse_failureページは読み込まれましたが、期待されるコンテンツがありません。インシデントトラッカーで報告してください。
network_errorリクエストが完了しませんでした。少し待ってから再試行してください。
timeoutリクエストがタイムアウトしました。STO_TIMEOUT_MS を増やすか、取得する行数を減らしてください。

ライブラリとして

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

import { SupertoinetteClient } from "mcp-supertoinette/client";

const client = new SupertoinetteClient();
const { data, cached } = await client.getRecipe({ id: "10" });
console.log(data.title, data.ingredients.length, cached);

searchRecipes、browseRecipes、getRecipe、getPairings は、それぞれ { data, cached } を返し、6 種類のコードのいずれかを持つエラーをスローします。リクエスト間に最低 3 秒の間隔を空ける制約も、ここで適用されます。

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

リクエストは 1 件ずつ送信され、少なくとも 3 秒の間隔が空きます。この最低間隔は、設定にかかわらず維持されます。User-Agent の末尾には、常にプロジェクトの識別情報と担当者への連絡先が含まれます。

各結果には、読み取り元のページのアドレスが含まれ、source はサイト名を示します。レシピ、タイトル、写真の権利は Supertoinette に帰属します。

この MCP は非公式プロジェクトであり、Supertoinette とは提携していません。

プライバシー

このサーバーはお客様に関する情報を収集せず、作者に何も送信しません。お客様のマシン上で動作し、www.supertoinette.com のみに接続します。動作中はレスポンスをメモリに保持し、ディスクには何も書き込みません。PRIVACY.md には、リクエストに含まれる内容と、それを変更する設定について記載されています。

開発

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

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

貢献

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

ライセンス

MIT。詳細はLICENSEをご覧ください。レシピはSupertoinetteおよびその作者に帰属します。

コメント

MCP は初めてですか?

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

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