mcpField
F
Fyndling

Fyndling

リモート
github.com/neongrauゲーム・エンタメ0今日更新
リポジトリ

Fyndling について

Fyndling MCP は、中世市や歴史再現に関心のある人向けに、ヨーロッパのイベント、関連スポット、歴史レシピのデータを提供します。場所、日付、レシピタグなどで検索できます。

主な機能

  1. 01場所、半径、日付でイベント検索
  2. 02城やミーダリーなどのスポット検索
  3. 03中世の歴史レシピ検索
  4. 04レシピ資料とタグ分類の参照
  5. 05結果の絞り込みとページ送り

活用シーン

  1. 01近隣の中世イベントの訪問計画
  2. 02近くの城やミーダリーの検索
  3. 03料理や食事条件から歴史レシピを調査

MCP 対応

Streamable HTTP の MCP エンドポイント https://fyndling.de/mcp から、イベント、スポット、レシピの検索ツールを認証なしで提供します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://fyndling.de/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

9
パラメーター型必須説明
latnumberはい中心点の緯度
lonnumberはい中心点の経度
radius_kmnumberいいえ検索半径(キロメートル、デフォルトは 50)
date_fromstringいいえフィルター:開始日(ISO 8601 形式、例:2026-06-01)
date_tostringいいえフィルター:終了日、ISO 8601 形式(例:2026-06-30)
typesarrayいいえイベントタイプで絞り込みます。省略するとすべてのタイプが対象になります。
limitintegerいいえ最大結果数(デフォルト 20)

詳細

fyndling-mcp

smithery badge neongrau/fyndling-mcp MCP server

中世の市場ファン、歴史再現イベントの参加者、リビングヒストリー愛好家、そして彼らの計画を支援する AI アシスタントのために作られています。Fyndling MCP は、ニッチなヨーロッパの 2 つのデータセットに AI クライアントから直接アクセスできるようにします。

  • 中世のイベント — ヨーロッパと北米の 26 か国以上で開催される 5,800 件以上の市場、コンサート、城での体験、リビングヒストリーイベント、ルネサンスフェアを、場所+半径+期間で検索できます(毎週更新)
  • 常設の POI — 1,900 件以上のミード醸造所、ミード製造者、城、中世風レストランも、地理的な半径を指定して検索できます
  • 歴史的なレシピ — 1300~1598 年頃の41 冊の料理本に収録された 6,350 件以上のレシピ。現代ドイツ語版の翻案、構造化された材料リスト、原稿の書き起こし、料理の種類、食事制限、社会階級で絞り込むための統制語彙タグを備えています

→ このデータを使用したウェブアプリ、fyndling.de

エンドポイント: https://fyndling.de/mcp
トランスポート: Streamable HTTP(MCP 仕様 2025-03-26)
認証: なし
レート制限: 1 分あたり 60 リクエスト


クイックスタート

MCP クライアントの設定に追加してください(例:Claude Desktop の claude_desktop_config.json)。

{
  "mcpServers": {
    "fyndling": {
      "url": "https://fyndling.de/mcp"
    }
  }
}

ツール

イベントと場所

すべてのリストツール(find_events_near、list_events、find_pois_near、search_recipes)は、同じ形式のデータを返します。total(すべての一致件数)、count、offset、sort、has_more、next_offset に加えて、配列(events、pois、recipes)を返します。offset を使ってページ分割します。並べ替えでは常に id で同順位を解決するため、ページの飛ばしや重複は発生しません。不明な ID や無効な入力などのエラーは、通常の結果ではなく、実際の MCP エラー(isError)として返されます。

イベントのスキーマ(固定。すべてのデータソースで同じフィールド):id、name、date_from、date_to(null = 1 日のみ)、ort、plz、country、lat、lon、geo_precision、venue、category、categories[]、flags[]、cancelled、source_url、fyndling_url、description(リストでは抜粋)、extra{}(データソース固有の未加工フィールド)。band、organizers[]、duplicate_ids[] は任意です。地点周辺の検索結果には distance_km と distance_approximate が追加されます。

  • category は保存されているカテゴリ(market、concert、burg_event、renfaire)です。categories[] には、living_history など、フラグに基づくカテゴリも含まれます。フィルター(category、types)は categories[] を対象にするため、返される結果とフィルターの条件が食い違うことはありません。
  • flags[] には living_history、beerenweine、free_admission、sold_out と、派生フラグの party(「Bal Renaissance」などのダンスやパーティーの夜。market に分類)が含まれます。
  • geo_precision は検証済みではなく、導出されたものです。値は venue、address、plz、city のいずれかです。多くの会場で共有される座標(例:都市ごとに 1 つの地点)は city として扱われます。精度の低いイベントも表示され、マーク(distance_approximate)が付けられますが、並べ替えでは plz の場合は最大 5 km、city の場合は最大 10 km 遠いものとして扱われるため、精度の高い結果が埋もれることはありません。
  • スクレイピングで取得したプレースホルダーテキストは null として返されます。
find_events_near

地理座標の近くにある中世のイベントを検索します。実効距離、日付、IDの順に並べ替えます。

ParameterTypeRequiredDescription
latnumber✓緯度。-90~90
lonnumber✓経度。-180~180
radius_kmnumber—検索半径(km)(デフォルト:50、最大:500)
date_fromstring—YYYY-MM-DD形式の実在する日付。デフォルト:今日(Europe/Berlin)
date_tostring—YYYY-MM-DD形式。date_fromより前の日付は指定できません
typesarray—market、concert、burg_event、renfaire、living_history
limit / offsetinteger—ページサイズ(デフォルト:20、最大:100)/スキップ数
include_cancelledboolean—デフォルトはfalseです。キャンセル済みとは、DBフラグが設定されているか、名前または説明に「abgesagt」が含まれるものです
dedupeboolean—デフォルトはtrueです。同じカテゴリ、正規化された名前、日付、場所の表示上の重複を非表示にします。残すエントリーにはduplicate_idsが記載されます。IDとスクレイパーキーは変更されません

日付フィルターでは期間の重なりを判定します。date_fromより前に始まり、その日以降も開催される複数日イベントも見つかります。定期開催のマーケットは、次回の日付を示す1件のエントリーとして表示されます。レスポンスにはeffective_date_fromとeffective_date_toが含まれます。無効な入力(緯度95、「morgen」、逆転した期間)は検証エラーになります。

例 — 今夏、ウィーンから80 km以内のマーケット:

{
  "lat": 48.2082, "lon": 16.3738,
  "radius_km": 80,
  "date_from": "2026-06-01", "date_to": "2026-08-31",
  "types": ["market"]
}

list_events

カテゴリ、国、日付範囲で絞り込んだイベントを、開始日、IDの順に並べて一覧表示します。

ParameterTypeRequiredDescription
categorystring—market、concert、burg_event、renfaire、living_history
countrystring—ISO 3166-1 alpha-2コード(例:DE、AT、FR、PL)
date_from / date_tostring—YYYY-MM-DD形式。date_fromのデフォルトは今日(Europe/Berlin)です
limit / offsetinteger—ページサイズ(デフォルト:20、最大:100)/スキップ数
include_cancelled, dedupeboolean—find_events_nearと同じです

get_event

1件のイベントの詳細情報を取得します(POI IDも指定できます)。完全な説明、organizers、other_dates(近隣で開催される同じシリーズのイベント)、nearby_events、nearby_pois(今後開催されるものに限り、各最大5件、25 km以内)が含まれます。不明または削除済みのIDを指定すると、MCPエラーになります。

ParameterTypeRequiredDescription
idstring✓イベントID(16文字の16進数。例:a1b2c3d4e5f6a7b8)

find_pois_near

中世をテーマにした常設施設を検索します。実効距離、IDの順に並べ替えます。

ParameterTypeRequiredDescription
lat / lonnumber✓座標(上記と同様に検証されます)
radius_kmnumber—デフォルト:100、最大:1000
poi_typestring—meadery(ミードの製造元。metkellereiとmetkellereienはエイリアスとして使用できます)、burg(城)、ma_gastronomie(中世風レストラン。国は別のフィールドです)。出力のpoi_typeは常に正規の値で、フィルター値と一致します
limit / offsetinteger—ページサイズ(デフォルト:20、最大:100)/スキップ数

POIスキーマ: id、name、poi_type、ort、plz、country、state、address、lat、lon、geo_precision、website、website_ok(最後のリンクチェックでtrue/false、不明の場合はnull)、collected_at、distance_km、distance_approximate、fyndling_url、extra{}(例:城のzustand/slug)。イベントのフィールドはありません。


歴史料理のレシピ
list_recipe_sources

利用可能な料理書をすべて、メタデータ(年、言語、地域、レシピ数)およびコースの分類体系全体(個別の値とエイリアス)とともに一覧表示します。

パラメーターはありません。

資料(有効な料理書41冊。日付順):

キータイトル年言語レシピ数
harpestrengKogebog(Harpestreng-Handschrift NKS 66)~1300古デンマーク語25
viandierLe Viandier de Taillevent~1300古フランス語55
buch-guter-speiseDas Buch von guter Speise~1350中高ドイツ語101
corema_n2Nürnberg, Germanisches Nationalmuseum, Hs 3227a~1389中高ドイツ語(東中部ドイツ語)15
anonimo_toscanoAnonimo Toscano (Libro della cocina)~1390トスカーナ俗語40
form-of-curyThe Forme of Cury~1390中英語192
menagierMénagier de Paris1393古フランス語378
bockenheimRegistrum Coquine (Johannes von Bockenheim)~1433中世ラテン語70
muenchner_cgm811Münchner Handschrift Cgm 811~1440初期新高ドイツ語(シュヴァーベン=バイエルン)4
corema_ka2Haus- und Arzneibuch (Karlsruhe, Cod. Donaueschingen 793)~1445初期新高ドイツ語(バイエルン語、下イン渓谷)56
rheinfraenkisches_kochbuchRheinfränkisches Kochbuch~1445ライン・フランケン語(中高ドイツ語)76
corema_ka1Reichenauer Kochbuch (Karlsruhe, Cod. Aug. pap. 125)15世紀初期新高ドイツ語(アレマン語)104
hausbuch-donaueschingen-792Haus- und Arzneibuch im Codex Donaueschingen 792~1450初期新高ドイツ語(アレマン語、ボーデン湖地域)2
corema_b4Berlin, Staatsbibliothek, Ms. germ. qu. 1187~1450初期新高ドイツ語(バイエルン語)269
corema_w1Vienna, Austrian National Library, Cod. 2897~1450初期新高ドイツ語(バイエルン=オーストリア語)269
meister_eberhardKochbuch Meister Eberhards~1450初期新高ドイツ語(バイエルン語)23
tegernseeTegernseer Speisenbuch1453–1534初期新高ドイツ語(バイエルン語)51
meister_hansKochbuch des Meisters Hans (UB Basel, A.N.V. 12)~1460初期新高ドイツ語(アレマン=シュヴァーベン語)289
muenchner_clm15632Klosterkochbuch Rott am Inn (Clm 15632)1458/1464初期新高ドイツ語(バイエルン語)55
martinoLibro de Arte Coquinaria~1465初期イタリア語268
koenigsberger_kochbuchKönigsberger Kochbuch (Deutschordensarchiv)15世紀初期新高ドイツ語(バイエルン語/東中部)34
muenchner_cgm384Münchner Handschrift Cgm 384~1470初期新高ドイツ語(アレマン語)83
corema_k1Kölner Küchenmeisterei (Historisches Archiv der Stadt Köln, Best. 7004, 27)15~16世紀(異論あり)初期新高ドイツ語(リプアーリ語/西中部ドイツ語)24
edelike_spijseVon guten und edlen Speisen (Wel ende edelike spijse)~1475中期オランダ語62
muenchner_cgm467Hausbuch aus Dietramszell (Cgm 467)~1477初期新高ドイツ語(バイエルン語)3
mondseer_kochbuchMondseer Kochbuch (Graz, UB Ms. 1609)~1480初期新高ドイツ語(バイエルン=オーストリア語)268
muenchner_cgm725Münchner Handschrift Cgm 72515世紀後半初期新高ドイツ語(バイエルン語)22
corema_so1Solothurner Küchenmeisterei (Zentralbibliothek Solothurn, Cod. S 490)~1487初期新高ドイツ語(アレマン語)26
corema_n1Alemannisches Büchlein von guter Speise1492–1494初期新高ドイツ語(シュヴァーベン語)26
weinbuch-donaueschingenWeinbuch im Codex Donaueschingen~1500初期新高ドイツ語(南ライン・フランケン語)28
muenchner_cgm349Münchner Handschrift Cgm 34916世紀(追補)初期新高ドイツ語(バイエルン語)4
muenchner_cgm5919Regensburger Kochbuch (Cgm 5919)~1505初期新高ドイツ語(バイエルン語)104
severinKuchařství (Böhmisches Kochbuch)1535初期チェコ語147
corema_wo10Wolfenbüttel, Herzog-August-Bibliothek, Cod. Guelf. 42.3-5. Aug. 4°1543初期新高ドイツ語116
philippine_welserDas Kochbuch der Philippine Welser1543初期新高ドイツ語(東シュヴァーベン語/アウクスブルク語、チロル=バイエルン語の追記)242
staindlEin künstlichs vnd nutzlichs Kochbuch (Balthasar Staindl)1545初期新高ドイツ語(シュヴァーベン語/アウクスブルク語)294
sabina_welserinDas Kochbuch der Sabina Welserin1553初期新高ドイツ語(東シュヴァーベン語/アウクスブルク語)206
stenglerinKochbuch der Maria Stenglerin1554初期新高ドイツ語(シュヴァーベン語/アウクスブルク語)145
koch_kellermeistereiKoch und Kellermeisterei1574初期新高ドイツ語110
rumpoltEin new Kochbuch (Marx Rumpolt)1581初期新高ドイツ語(フランクフルト/マインツ)2028
weckerEin köstlich new Kochbuch (Anna Wecker)1598初期新高ドイツ語(上部ドイツ語、アンベルク/上プファルツ)50
上記の レシピ 列は、各ソースから現在利用できるレシピ数です。list_recipe_sources はソースごとに 2 つの数値を返します。recipe_count(現在、取り込み済みで検索可能なレシピ数)と recipe_count_original(原稿または版に含まれるレシピ数。不明の場合は null)です。説明には元の数値が記載されている場合があるため、現在取り込み中のソースでは、この 2 つの数値が異なっていても問題ありません。コーパスはソースごとにレビューされ、公開されるため、すべての数値は今後増加します。

list_recipe_tags

ラベル、説明、現在のレシピ数とともに、管理されたタグ語彙をカテゴリ(dish_type、diet、social_class)ごとに一覧表示します。これらのタグ ID は、search_recipes と compose_menu の tags パラメーターの値として使用してください。

パラメーターはありません。

タググループ:

グループタグ
dish_typepasta, reis, brei, beilage, huelsenfruechte, brot
dietvegetarisch, vegan, fastenspeise
social_classhofkueche, buergerlich, bauernkueche
beveragemet, methiglyn, bochet, melomel, hippocras
occasionfesttag, schauspeise

また、レスポンスには、レシピに付けられているものの、tags フィルターの有効な値ではない自由形式の編集用・内部用タグ uncontrolled_tags も一覧表示されます。

タグ ID はドイツ語(ケバブケース)です。そのまま search_recipes(tags=[...]) に渡してください。複数のタグは AND 条件で組み合わされます。tags=["hofkueche", "vegetarisch"] を指定すると、宮廷料理としてタグ付けされたベジタリアン料理だけが返されます。ソースが複数の階級を明示的に扱っている場合、1 つのレシピに社会階級タグが複数付くことがあります(典型的な Bockenheim の例:"et erit bonum pro ciuibus Rusticis et nobilibus" → bauernkueche と hofkueche の両方)。

食事制限タグと任意の食材: タグは、レシピのベース版(任意の食材を含まないもの)に基づいて決まります。任意の食材を加えると条件を満たさなくなる場合(例:ビーガンレシピに任意の肉と卵、ベジタリアンレシピに任意のラード)、レシピのタグは維持され、dietary_note(「ベース版はビーガン(任意の食材を除く);卵、肉、ヤギ乳を加えてアレンジ可能」)が付きます。この注記は dietary または食事制限タグでフィルターしたときに自動的に表示され、fields からも取得できます。「Menge nach Belieben」は分量を示すものであり、任意の食材ではありません。

search_recipes の dietary フィルターは、便利なエイリアスです。dietary="vegetarian" は tags=["vegetarisch"] と同等で、dietary="vegan" は tags=["vegan"] と同等です。ビーガンレシピには vegetarisch タグも付いているため、dietary="vegetarian" では両方のグループが返される点に注意してください。


search_recipes

絞り込みと食材のマッチングを使って、歴史的なレシピを検索します。

パラメーター型必須説明
course文字列—コースの種類については、以下を参照してください
difficulty_max整数 1–3—1=簡単、2=中程度、3=上級
lagerkuecheブール値—屋外やキャンプでの調理に適したレシピのみ
source_key文字列—料理本のキーで絞り込みます。全リスト(有効なソース41件)については、list_recipe_sources を呼び出してください。
dietary文字列—vegetarian(肉・魚なし、卵・乳製品は可)または vegan(動物性食品なし。慣例によりアーモンドミルクと蜂蜜は可)。ヴィーガンのレシピにはベジタリアンのタグも付いているため、vegetarian にはヴィーガンのレシピも含まれます。tags=["vegetarisch"] / tags=["vegan"] と同等です。
tags文字列[]—管理された語彙によるタグで絞り込みます(AND ロジック、最大6件)。語彙:pasta、reis、brei、beilage、huelsenfruechte、brot(料理の種類);vegetarisch、vegan、fastenspeise(食事制限);hofkueche、buergerlich、bauernkueche(社会階級)。説明については、list_recipe_tags を呼び出してください。
epoch_from整数—最も古い資料の年(例:1300)
epoch_to整数—最も新しい資料の年(例:1500)
ingredients文字列[]—含有条件:指定した項目がすべて含まれている必要があります(AND)。大文字・小文字、ウムラウト、ßを同一視します(Apfel で Äpfel が見つかります)。Öl (zum Braten der Äpfel) のような括弧内の注記は無視され、否定表現(fleischlose Brühe、ohne Fleisch、kein Fleisch は word / token モードで Fleisch に一致しません)も無視されます。ingredient_match を参照してください。
ingredient_qids文字列[]—Wikidata QIDによる完全一致の絞り込み。例:["Q89"] = リンゴ(AND)。綴り、言語、複数形に左右されません。QIDのない食材は検索結果から漏れます(qid_coverage を参照)。
ingredient_matchword | token | substring—word(デフォルト):食材名の単語の先頭に検索語が一致する必要があります(Apfel で Äpfel、Apfelessig が見つかりますが、Granatäpfel は見つかりません)。token:検索語が単語全体に一致する必要があります(Apfelessig は一致しません)。substring:どこにあっても一致します(Granatäpfel、Jakober-Äpfel も一致します)。検索語の単純な複数形語尾は無視されます(Birnen = Birne)。
query文字列—フリーテキスト検索(最小3文字。%、_、\ などの特殊文字は通常の句読点として扱われ、ワイルドカードにはなりません。文字または数字を含まないクエリは何にも一致しません。各語はANDで結合され、ウムラウトは同一視されます)。4文字以下の語は単語の先頭に一致する必要があります。5文字以上の語はどこにあっても一致します(Torte は Quittentorte に一致しますが、Törtchen には一致しません)。
query_in配列—query の検索対象:title、text、ingredients、transcript。デフォルトは ["title","text","ingredients"] です。語とフィールドごとにスコアが付与され、複合語の途中より単語の先頭での一致が優先されます:title 100/60、ingredients 30/15、text 10/5、transcript 3/1。同点の場合は quality_score、次に id で決まります。
sortrelevance | quality_score | id—デフォルトは query がある場合は relevance、ない場合は id です。関連度順: (1) タイトルに一致するレシピが先で、複合語の途中より単語の先頭での一致を優先します。(2) タイトルに一致しないレシピでは、食材の一致を本文の一致より優先します。(3) quality_score の降順。(4) id。したがって、タイトルに一致するレシピ間の順序は quality_score のみで決まります。すべての並べ替えでは同点時に id を使用するため、ページ分割時の順序は安定します。
exclude_courses文字列[]—指定したコースの種類を除外します
exclude_ingredients文字列[]—指定した食材のいずれかを含むレシピを除外します(ingredients と同じ照合方法)
related_to文字列—レシピID:そのレシピに関連するもののみ(get_related を参照)。他のすべての絞り込み条件と併用できます。各検索結果には relation、reason、confidence、quelle が含まれます。デフォルトの並び順は、関連度の高い順、次に quality_score です。
include_low_confidenceブール値—related_to と併用:自動導出された confidence: low の関連も含めます(デフォルトでは非表示。similar は relation で指定しない限り非表示です)
relation文字列[]—related_to と併用:twin、variant、alternative_role、parallel_other_language、similar、depends_on に絞り込みます(OR)。
dish_role文字列[]—course とは独立した、レシピが担う役割(OR):tortenboden、pastetenteig、teig_basis、fuellung、garnitur、sauce_basis、bruehe_basis、gelee_basis。値と件数:list_recipe_tags → dish_roles。
limit整数—1ページあたりの件数。デフォルトは20、最大100
offset整数—この件数分の検索結果をスキップします。前回の応答に含まれる next_offset を渡してください
detailslim | standard—デフォルトの slim:id、source_key、source_ref、title_modern、course、lagerküche、difficulty、prep_time_min、tags(常に配列。該当なしの場合は [])、fyndling_url。standard = リスト項目の全情報(本文、食材、注釈、FAQ)。
fields文字列[]—デフォルトの項目に追加する、許可リストに含まれるフィールド(例:quality_score、tags、score、matched_ingredients、dish_role、relations = slim形式の [{id, relation}])。値がない場合は null / [] が返され、不明な名前は拒否されます。
fields_modeadd | only—add(デフォルト)はデフォルトの項目を拡張します。only は fields のみ(+ id、fyndling_url)を返します。
レスポンス: total(すべての一致件数)、count(このページの件数)、offset、sort、has_more、next_offset、recipes。材料フィルターを使うと、各検索結果に matched_ingredients が含まれます。ingredient_qids を使うと、レスポンスに qid_coverage が追加されます(材料の行のうちQIDが付いているのは約75%のみです。QIDのないレシピはこのフィルターでは見つかりません)。結果はID順に並びます(query を指定した場合はタイトルの一致が先)。そのため、広範囲な検索では has_more を確認してください。

コースの種類:

値説明
starter前菜
main_beef牛肉のメイン料理
main_pork豚肉のメイン料理
main_poultry鶏肉など家禽のメイン料理(鶏、ガチョウなど)
main_gameジビエのメイン料理(シカ肉、野ウサギなど)
main_fish魚料理のメイン料理
main_otherその他のメイン料理
main_vegetarianベジタリアン向けのメイン料理
main_side副菜のメイン料理
main_meat動物の種類が特定されていない肉料理(羊肉、ラム肉、内臓肉、ミックス)— また、以下に示すように、すべての肉料理を指すエイリアスです
mainエイリアス — すべてのメイン料理(牛肉、豚肉、家禽、ジビエ、肉料理、魚料理、ベジタリアン料理、副菜、その他)
side副菜
dessertデザート/甘い料理
drink / beverage飲み物(beverage は drink のエイリアスです。cellar のクラフトは飲み物ではありません)
condimentソース、スパイスペースト
otherその他

main_meat は、意図的に保存値とエイリアスの両方として使われています。種類が特定されていない肉も肉料理であるため、course=main_meat はすべての肉料理(牛肉、豚肉、家禽、ジビエ、種類が特定されていない肉料理)を返します。ベジタリアン料理や魚料理は含まれません。beverage に cellar は含まれません。

例 — シナモンとショウガを使ったデザート:

{
  "course": "dessert",
  "ingredients": ["Zimt", "Ingwer"],
  "limit": 5
}

例 — 1450年以前の、キャンプ料理向けの簡単な家禽料理:

{
  "course": "main_poultry",
  "difficulty_max": 1,
  "lagerkueche": true,
  "epoch_to": 1450
}

例 — 最古の史料(13世紀デンマーク)の全レシピ:

{
  "source_key": "harpestreng",
  "limit": 25
}

例 — 15世紀後半のフランドル宮廷料理:

{
  "source_key": "edelike_spijse",
  "course": "main_poultry",
  "limit": 10
}

例 — レーゲンスブルク写本(Cgm 5919、約1500年):

{
  "source_key": "muenchner_cgm5919",
  "limit": 20
}

例 — ヴィーガン向けデザート(動物性食品を使わない、断食期間向けの菓子):

{
  "course": "dessert",
  "dietary": "vegan",
  "limit": 10
}

例 — 宮廷風のパン料理(宴会用の焼き菓子):

{
  "tags": ["hofkueche", "brot"],
  "limit": 10
}

例 — 農民階級の断食料理(農村の断食日に食べる料理):

{
  "tags": ["bauernkueche", "fastenspeise"],
  "limit": 20
}

レシピ一覧のフィールド(一覧表示のパフォーマンス向上のため、詳細情報は省略されています。v2では一覧の結果から applied_delta_ids、quality_score_details、review_dates も省略されます。get_recipe は引き続きすべての情報を返します):id、source_key、title_modern、course、difficulty、serves、prep_time_min、ingredients、lagerküche、published_at、fyndling_url(fyndling.de のレシピページへの正規リンク)


get_recipe

単一のレシピの詳細を取得します。

パラメーター型必須説明
idstring✓レシピID(例:hkb-001、bgs-001、foc-015、men-042、m384-001、m5919-010)

レスポンスに含まれる詳細情報:

  • text_modern — 現代ドイツ語に翻案したレシピ
  • ingredients — amount、unit、name、original_text、original(中世の史料本文)を含む構造化リスト
  • transcript — 言語と史料情報を含む、中世の原文
  • annotations — 古語の用語集
  • faq — よくある質問への回答
  • interpretive_choices — 曖昧な箇所に関する編集上の判断
  • scan — 写本のスキャン画像へのリンク
  • fyndling_url — fyndling.de のレシピページへの正規リンク(例:https://fyndling.de/rezepte/mar-005/)

材料の単位: g、kg、ml、l、TL(ティースプーン)、EL(テーブルスプーン)、tsp、tbsp、pinch、piece、slice、clove、bunch、sprig、leaf、cm。表示には original_text を使ってください。amount と unit は分量の調整にのみ使用します。

材料オブジェクトの例:

{
  "original": "ein phunt mandels",
  "amount": 500,
  "unit": "g",
  "name": "Mandeln",
  "original_text": "500 g Mandeln"
}

get_related

あるレシピに関連するレシピと、その関連の種類です。姉妹レシピ、バリエーション、代替レシピを探す際に推奨される方法です。互換性のため、get_recipe は従来の related_recipes(ID のみのリスト)を保持し、新たに related(ID、タイトル、関連の種類)を追加しています。

パラメーター型必須説明
id文字列✓レシピ ID。例:wo10-042
relationstring[]—指定した種類のみ(OR)。デフォルト:similar を除くすべて(relation: ["similar"] を指定してください)
include_low_confidenceboolean—デフォルトは false です。自動導出された confidence: low の関連(主にテキストの数式による一致)は非表示になります。人手で確認された関連は常に表示されます
detailslim | standard—デフォルトは slim です。reason と fyndling_url(任意の ID のページ:https://fyndling.de/rezepte/<id>/)は含まれず、エントリーあたり約 70 トークンです。standard では fyndling_url、source_ref、完全な reason が追加されます
limit / offsetinteger—ページサイズ(デフォルトは 20、最大 100)/スキップする件数

関連の種類: twin(同じレシピの別の伝承)、variant(同じ調理技法で、分量または材料が異なる)、alternative_role(別のアプローチで同じ役割を果たすもの。例:異なるタルト生地)、parallel_other_language(別の言語で書かれた同じレシピ)、similar(人手で確認された関連レシピ一覧をもとにした、自動判定の未分類の関連)、depends_on(方向性あり:「上記の記述どおり」。エントリーには direction が付きます。outgoing はこのレシピが一覧にあるレシピに依存することを示し、incoming は一覧にあるレシピがこのレシピに依存することを示します)。depends_on 以外はすべて対称です。

エントリー(slim): id、title_modern、source_key、course、difficulty、prep_time_min、relation、confidence、quelle、direction(depends_on の場合のみ)。standard では fyndling_url、source_ref、reason(差異について説明しているレシピの注記から引用した一文)が追加されます。confidence(high/medium/low)と quelle(curated = レシピ本文と照合して個別に確認済み、auto = テキスト内の参照、対照表、関連レシピ一覧から一括で導出。どちらも人による最終判定ではありません)の詳細をご覧ください。順序は関連の強さ、quality_score、id の順です。レシピは関連の種類ごとに 1 回だけ表示されます。2 つのレシピの組み合わせに 2 種類の関連が付くのは、両方が人手で確認され、それぞれ異なる関係を示す場合のみです(例:wo10-044 は wo10-042 の variant であり、同時に depends_on でもあります)。total はページ分割して取得できるエントリー数と正確に一致します。エンベロープは search_recipes と同じです。不明な ID は MCP エラーになります。


compose_menu

歴史的なレシピから複数コースのメニューを作成します。各コースにレシピを1品選びます。コースごとの選定基準は、まずそれまでに選んだコースとの食材の重複が最も少ないこと、次にメニューでまだ使われていない料理書から選ぶこと(品質に問題がなければ、メニューには複数の出典を組み合わせます)、最後に quality_score が最も高いことです。各コースの候補は、該当する条件に一致するレビュー評価上位200件です。

パラメーター型必須説明
coursesstring[]✓コースの順序付きリスト。1~6件(上記のコースタイプの値を使用)
personsinteger—人数。値をそのまま返すだけです — 分量は調整されません。
detailslim | standard—デフォルトは slim(id、タイトル、コース、出典、難易度、準備時間、quality_score、URL。3コースで約400トークン)。standard では各エントリーの全情報が返されます(コースごとに約8,000トークン)。
max_difficultyinteger 1–3—各コースの最大難易度
lagerkuecheboolean—野外調理に適したレシピのみ
dietarystring—vegetarian または vegan — すべてのコースに適用します(ヴィーガンのレシピにはベジタリアンのタグも付いています)
tagsstring[]—すべてのコースに適用する統制語彙タグ(AND 条件、最大6件)。テーマに沿ったメニューに便利です。たとえば、宮廷の宴会には ["hofkueche"]、農民階級の食事には ["bauernkueche"] を指定します。語彙については list_recipe_tags を参照してください。
epoch_frominteger—出典の最古の年
epoch_tointeger—出典の最新の年

例 — 14世紀のみの、8人向け4コースディナー:

{
  "courses": ["starter", "main_fish", "main_poultry", "dessert"],
  "persons": 8,
  "epoch_from": 1300,
  "epoch_to": 1400
}

例 — 6人向けベジタリアン3コースメニュー:

{
  "courses": ["starter", "main_vegetarian", "dessert"],
  "persons": 6,
  "dietary": "vegetarian"
}

例 — 宮廷の宴会(12人向け5コースのHofkücheディナー):

{
  "courses": ["starter", "main_fish", "main_poultry", "main_game", "dessert"],
  "persons": 12,
  "tags": ["hofkueche"]
}

対象範囲

イベント: ドイツ、オーストリア、スイス、フランス、ポーランド、チェコ、イタリア、スペイン、ポルトガル、英国、アイルランド、ベルギー、オランダ、ルクセンブルク、デンマーク、スウェーデン、ノルウェー、フィンランド、エストニア、リトアニアなど。また、米国、カナダ、メキシコをはじめとする各地のルネサンス・フェアも対象です。

レシピ: 40冊の料理書を収録。古デンマーク語、古フランス語、中高ドイツ語、中英語、トスカーナ俗語、ラテン語、中期オランダ語、初期新高ドイツ語(バイエルン語、アレマン語・シュヴァーベン語、ライン・フランケン語、リプアーリ語)、初期イタリア語、初期チェコ語の資料を含みます。コペンハーゲン、パリ、ロンドン、ヴュルツブルク、フィレンツェ、ローマの教皇庁、ゲント、ケルン、ゾロトゥルン、上ライン地方、北イタリア、プラハ、フランクフルト・アム・マイン、そして南ドイツの写本が集中する地域(ミュンヘン〈BSB Cgm 384, 467, 725, 811, 5919, Cgm 349, Clm 15632〉、テーゲルンゼー、ロット・アム・イン、ディートラムスツェル、レーゲンスブルク、ライヒェナウ島・ボーデン湖周辺地域〈カールスルーエ、Cod. Aug. pap. 125〉、イン川下流域〈カールスルーエ、Cod. Donaueschingen 793〉、ドイツ騎士団領ケーニヒスベルクの断片)に由来します。13世紀から16世紀までを網羅しています。

主な出典:ハーペストレング写本(NKS 66、約1300年)は、北ヨーロッパで現存する最古の料理書です。タイユヴァンの『ル・ヴィアンディエ』(約1300年)は、中世フランスの宮廷料理書の中でも特に影響力のある一冊です。ヨハネス・フォン・ボッケンハイムの『レギストルム・コキネ』(約1433年、BnF Ms. Latin 7054)は、マルティヌス5世の教皇庁で編纂されたラテン語の料理書で、「pro magnatibus」「pro communibus」「pro rusticis」のように、レシピに社会階級を明記しています。ゲント写本(BHSL.HS.1035、約1475年)は、同時代の中期オランダ語のレシピ集として、完全な形で保存されている唯一のものです。テーゲルンゼー料理書(BSB Cgm 8137、1453~1534年)は、バイエルンのベネディクト会修道院の料理を記録しており、Rutschart(現在の Ritschert)という名称が記された、現存する最古の記録を含んでいます。南ドイツの写本群(ミュンヘン/レーゲンスブルク/テーゲルンゼー)により、Fyndlingは15~16世紀のドイツ料理書のレシピを構造化したデジタルコーパスとして、最大級の規模を誇ります。


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

イベントデータは公開情報源から集約したものです。正確性は保証されないため、必ず主催者に確認してください。

レシピ本文と現代向けの翻案:© Fyndling、CC BY-SA 4.0。中世の原文はパブリックドメインです。

コメント

MCP は初めてですか?

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

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