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 为 AI 客户端提供直接访问两个欧洲特色数据集的能力:

  • 中世纪活动 — 可按地点 + 半径 + 日期范围查询欧洲和北美 26 个以上国家的 5,800 多场市集、音乐会、城堡体验、生活史活动和文艺复兴集市(每周更新)
  • 常设兴趣点 — 1,900 多家蜂蜜酒馆、蜂蜜酒生产商、城堡和中世纪餐厅,也支持按地理半径搜索
  • 历史食谱 — 收录来自四十一本食谱书的 6,350 多道食谱,年代约为 1300 至 1598 年,包含现代德语改编版本、结构化食材清单、原始手稿转录,以及用于按菜肴类型、饮食和社会阶层筛选的受控标签词汇表

→ fyndling.de — 提供这些数据的 Web 应用

端点: https://fyndling.de/mcp
传输方式: Streamable HTTP(MCP 规范 2025-03-26)
身份验证: 无
速率限制: 每分钟 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 = 单日活动)、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。多个场馆共用的坐标(例如每座城市仅有一个定位点)归为 city。精度不足的活动仍会显示并标记(distance_approximate),但排序时会分别视作距离最多远 5 km(plz)或 10 km(city),因此不会挤掉定位精确的结果。
  • 抓取内容中的占位文本会以 null 返回。
find_events_near

查找地理坐标附近的中世纪活动,并按实际距离、日期和 ID 排序。

参数类型必填描述
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 且仍在进行的多日活动也会被找到。循环市集会作为一个条目显示下一场日期。响应会回显 effective_date_from 和 effective_date_to。输入无效(lat 为 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 排序。

参数类型必填描述
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

获取单个活动的完整详情(也接受 POI ID):完整描述、organizers、other_dates(附近的同系列活动日期)、nearby_events 和 nearby_pois(各最多 5 个,位于 25 km 范围内,且仅限即将举行的活动)。未知或已删除的 ID 会产生 MCP 错误。

参数类型必填描述
idstring✓活动 ID(16 位十六进制,例如 a1b2c3d4e5f6a7b8)

find_pois_near

查找附近的常设中世纪主题地点,并按实际距离、再按 ID 排序。

参数类型必填描述
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 本活跃食谱书,按日期排序):

键标题年份语言食谱数
harpestreng烹饪书(Harpestreng 手稿 NKS 66)~1300古丹麦语25
viandierTaillevent 的《Viandier》~1300古法语55
buch-guter-speise《美食之书》~1350中古高地德语101
corema_n2纽伦堡,日耳曼国家博物馆,手稿 3227a~1389中古高地德语(东中部德语)15
anonimo_toscano托斯卡纳匿名作者(《烹饪之书》)~1390托斯卡纳俗语40
form-of-cury《烹饪之法》~1390中古英语192
menagier《巴黎家政指南》1393古法语378
bockenheim《烹饪登记簿》(Johannes von Bockenheim)~1433中世纪拉丁语70
muenchner_cgm811慕尼黑手稿 Cgm 811~1440早期新高地德语(施瓦本—巴伐利亚)4
corema_ka2《家用与药用书》(卡尔斯鲁厄,Cod. Donaueschingen 793)~1445早期新高地德语(巴伐利亚语,因河下游河谷)56
rheinfraenkisches_kochbuch《莱茵法兰克烹饪书》~1445莱茵法兰克语(中古高地德语)76
corema_ka1《赖兴瑙烹饪书》(卡尔斯鲁厄,Cod. Aug. pap. 125)15 世纪早期新高地德语(阿勒曼尼语)104
hausbuch-donaueschingen-792《唐纳埃申根手抄本 792 中的家用与药用书》~1450早期新高地德语(阿勒曼尼语,博登湖地区)2
corema_b4柏林,国家图书馆,Ms. germ. qu. 1187~1450早期新高地德语(巴伐利亚语)269
corema_w1维也纳,奥地利国家图书馆,Cod. 2897~1450早期新高地德语(巴伐利亚—奥地利语)269
meister_eberhard《埃伯哈德大师烹饪书》~1450早期新高地德语(巴伐利亚语)23
tegernsee《泰根湖食谱书》1453–1534早期新高地德语(巴伐利亚语)51
meister_hans《汉斯大师烹饪书》(巴塞尔大学图书馆,A.N.V. 12)~1460早期新高地德语(阿勒曼尼—施瓦本)289
muenchner_clm15632《罗特修道院烹饪书》(Clm 15632)1458/1464早期新高地德语(巴伐利亚语)55
martino《烹饪艺术之书》~1465早期意大利语268
koenigsberger_kochbuch《柯尼斯堡烹饪书》(条顿骑士团档案馆)15 世纪早期新高地德语(巴伐利亚语/东中部地区)34
muenchner_cgm384慕尼黑手稿 Cgm 384~1470早期新高地德语(阿勒曼尼语)83
corema_k1《科隆厨房大师指南》(科隆市历史档案馆,Best. 7004, 27)15–16 世纪(有争议)早期新高地德语(里普阿里亚语/西中部德语)24
edelike_spijse《美好而珍贵的美食》(Wel ende edelike spijse)~1475中古荷兰语62
muenchner_cgm467《迪特拉姆斯采尔家用书》(Cgm 467)~1477早期新高地德语(巴伐利亚语)3
mondseer_kochbuch《蒙德湖烹饪书》(格拉茨大学图书馆,Ms. 1609)~1480早期新高地德语(巴伐利亚—奥地利语)268
muenchner_cgm725慕尼黑手稿 Cgm 72515 世纪末早期新高地德语(巴伐利亚语)22
corema_so1《索洛图恩厨房大师指南》(索洛图恩中央图书馆,Cod. S 490)~1487早期新高地德语(阿勒曼尼语)26
corema_n1《阿勒曼尼美食小册》1492–1494早期新高地德语(施瓦本语)26
weinbuch-donaueschingen《唐纳埃申根手抄本中的葡萄酒书》~1500早期新高地德语(南莱茵法兰克语)28
muenchner_cgm349慕尼黑手稿 Cgm 34916 世纪(附录)早期新高地德语(巴伐利亚语)4
muenchner_cgm5919《雷根斯堡烹饪书》(Cgm 5919)~1505早期新高地德语(巴伐利亚语)104
severin《烹饪术》(波希米亚烹饪书)1535早期捷克语147
corema_wo10沃尔芬比特尔,奥古斯特公爵图书馆,Cod. Guelf. 42.3-5. Aug. 4°1543早期新高地德语116
philippine_welser《菲利皮娜·韦尔瑟烹饪书》1543早期新高地德语(东施瓦本语/奥格斯堡语,附有蒂罗尔—巴伐利亚语补充)242
staindl《一部巧妙实用的烹饪书》(Balthasar Staindl)1545早期新高地德语(施瓦本语/奥格斯堡语)294
sabina_welserin《萨比娜·韦尔瑟琳烹饪书》1553早期新高地德语(东施瓦本语/奥格斯堡语)206
stenglerin《玛丽亚·施滕格勒烹饪书》1554早期新高地德语(施瓦本语/奥格斯堡语)145
koch_kellermeisterei《烹饪与酒窖管理》1574早期新高地德语110
rumpolt《一本新烹饪书》(Marx Rumpolt)1581早期新高地德语(法兰克福/美因茨)2028
wecker《一本精美的新烹饪书》(Anna Wecker)1598早期新高地德语(上德语,安贝格/上普法尔茨)50
上方 食谱数 列表示每个来源中当前可用的食谱数量。list_recipe_sources 会为每个来源返回两个数值:recipe_count(当前已导入且可搜索的数量)和 recipe_count_original(原稿或版本中的食谱数量;若未知则为 null)。描述中可能会引用原始数量,因此对于仍在导入的来源,两者可能确实不同。语料库按来源逐一审核和发布,因此所有数量都会随时间增加。

list_recipe_tags

按类别(dish_type、diet、social_class)列出受控标签词汇表,包含标签、描述和当前食谱数量。在 search_recipes 和 compose_menu 的 tags 参数中使用这些标签 ID。

无参数。

标签组:

分组标签
dish_typepasta、reis、brei、beilage、huelsenfruechte、brot
dietvegetarisch、vegan、fastenspeise
social_classhofkueche、buergerlich、bauernkueche
beveragemet、methiglyn、bochet、melomel、hippocras
occasionfesttag、schauspeise

响应还会列出 uncontrolled_tags:存在于食谱中、但不是有效 tags 筛选值的自由格式编辑/内部标签。

标签 ID 为德语(kebab 风格)。在 search_recipes(tags=[...]) 中原样传入。多个标签按 AND 逻辑组合——tags=["hofkueche", "vegetarisch"] 只会返回同时标记为素食和宫廷菜肴的菜品。当来源明确涉及多个阶层时,同一食谱可以同时带有多个社会阶层标签(典型的 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字符串—按食谱书键筛选。调用 list_recipe_sources 可查看完整列表(41 个有效来源)。
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),也忽略否定词(在 word/token 模式下,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 个字符的词项必须位于单词开头;较长词项可匹配任意位置(Torte 可匹配 Quittentorte,但不匹配 Törtchen)。
query_in数组—query 的搜索范围:title、text、ingredients、transcript。默认值为 ["title","text","ingredients"]。按词项和字段评分;单词开头的匹配优先于复合词内部的匹配:标题 100/60、配料 30/15、正文 10/5、转录文本 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 的关联(默认隐藏;除非通过 relation 请求,否则 similar 也会隐藏)
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整数—每页条数,默认 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 = 精简格式 [{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(只有约 75% 的食材行带有 QID——没有 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
}

示例——宫廷风格的面包类菜肴(宴席级 Backwerk):

{
  "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(Teelöffel/茶匙)、EL(Esslöffel/汤匙)、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、标题、关系)。

参数类型必填描述
idstring✓食谱 ID,例如 wo10-042
relationstring[]—仅包含这些类型(或)。默认:除 similar 外的所有类型(使用 relation: ["similar"] 查询)
include_low_confidenceboolean—默认 false:隐藏 confidence: low 的自动推导关系(主要是文本公式匹配);人工整理的关系始终显示
detailslim | standard—默认 slim:不包含 reason 和 fyndling_url(任意 ID 的页面:https://fyndling.de/rezepte/<id>/),每条约 70 个 token。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。每种关系类型中,每道食谱只出现一次;仅当两种关系均为人工整理且描述不同内容时,一对食谱才会有两种关系(例如,wo10-044 是 wo10-042 的 variant,并且 depends_on 它)。total 精确统计可分页浏览的条目数。封装结构与 search_recipes 相同。未知 ID 会导致 MCP 错误。


compose_menu

根据历史食谱搭配多道菜单,每道菜选用一道食谱。每道菜的选择顺序为:与此前已选菜品的食材重叠最少;其次,优先选择菜单中尚未使用的食谱书(在品质允许时混合来源);最后,选择 quality_score 最高的食谱。每道菜的候选项为匹配结果中评价最高的 200 道。

参数类型必填描述
coursesstring[]✓按顺序排列的菜品列表,1–6 项(使用上文中的菜品类型值)
personsinteger—用餐人数。仅回显——不会按人数缩放用量。
detailslim | standard—默认值为 slim(id、标题、菜品、来源、难度、准备时间、quality_score、URL;3 道菜约 400 个 token)。standard 会返回完整条目(每道菜约 8k 个 token)。
max_difficultyinteger 1–3—任意菜品的最高难度
lagerkuecheboolean—仅限适合营地烹饪的食谱
dietarystring—vegetarian 或 vegan——应用于每道菜(纯素食谱也会标记为素食)
tagsstring[]—应用于每道菜的受控词表标签(AND 逻辑,最多 6 个)。适用于主题菜单,例如,["hofkueche"] 用于宫廷宴席,或 ["bauernkueche"] 用于农民阶层餐食。词表请参见 list_recipe_tags。
epoch_frominteger—来源年份下限
epoch_tointeger—来源年份上限

示例——适合 8 人的 4 道菜晚餐,仅限 14 世纪:

{
  "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)、泰根湖、因河畔罗特、迪特拉姆斯策尔、雷根斯堡、赖兴瑙/博登湖地区(Karlsruhe, Cod. Aug. pap. 125)、下因河谷(Karlsruhe, Cod. Donaueschingen 793),以及条顿骑士团柯尼斯堡残篇。时间跨度为 13 至 16 世纪。

著名来源:Harpestreng 手稿(NKS 66,约 1300 年)是北欧现存最早的烹饪书。Taillevent 的《Le Viandier》(约 1300 年)是中世纪最具影响力的法国宫廷烹饪书之一。Johannes von Bockenheim 的《Registrum Coquine》(约 1433 年,BnF Ms. Latin 7054)是马丁五世教廷的一部拉丁文汇编,明确按社会阶层标注食谱——“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。中世纪原文属于公有领域。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。