Fyndling
fyndling-mcp
Built for medieval market fans, reenactors, and living-history enthusiasts — and the AI assistants that help them plan. Fyndling MCP gives AI clients direct access to two niche European datasets:
Medieval events — query 3,700+ markets, concerts, castle experiences, living-history events, and renaissance faires across 25+ countries in Europe and North America, by location + radius + date range (updated weekly)
Permanent POIs — 1,900+ meaderies, mead producers, castles, and medieval restaurants, also searchable by geo-radius
Historical recipes — over 2,000 recipes from twenty-four cookbooks spanning the 13th–16th century, with modern German adaptations, structured ingredient lists, original manuscript transcripts, and a controlled tag vocabulary for dish-type, diet, and social-class filtering
→ fyndling.de — the web app behind this data
Endpoint: https://fyndling.de/mcp
Transport: Streamable HTTP (MCP spec 2025-03-26)
Auth: none
Rate limit: 60 requests / minute
Quickstart
Add to your MCP client config (e.g. Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"fyndling": {
"url": "https://fyndling.de/mcp"
}
}
}Related MCP server: LiveDataLink
Tools
Events & Locations
find_events_near
Find medieval events near a geographic coordinate, sorted by distance.
Parameter | Type | Required | Description |
| number | ✓ | Latitude |
| number | ✓ | Longitude |
| number | — | Search radius in km (default 50, max 500) |
| string | — | ISO 8601 start date, e.g. |
| string | — | ISO 8601 end date, e.g. |
| array | — |
|
| integer | — | Max results (default 20, max 100) |
Example — markets within 80 km of Vienna this summer:
{
"lat": 48.2082, "lon": 16.3738,
"radius_km": 80,
"date_from": "2026-06-01", "date_to": "2026-08-31",
"types": ["market"]
}Response fields: id, name, date_from, date_to, city, country, lat, lon, distance_km, category, description, fyndling_url
list_events
List events filtered by category, country, and/or date range.
Parameter | Type | Required | Description |
| string | — |
|
| string | — | ISO 3166-1 alpha-2 code (e.g. |
| string | — | ISO 8601 |
| string | — | ISO 8601 |
| integer | — | Default 20, max 100 |
get_event
Get full details for a single event by ID.
Parameter | Type | Required | Description |
| string | ✓ | Event ID (16-char hex, e.g. |
find_pois_near
Find permanent medieval-themed locations (meaderies, castles, restaurants).
Parameter | Type | Required | Description |
| number | ✓ | Latitude |
| number | ✓ | Longitude |
| number | — | Default 100, max 1000 |
| string | — |
|
| integer | — | Default 20, max 100 |
Historical Recipes
list_recipe_sources
List all available cookbooks with metadata (year, language, region, recipe count) and the full course taxonomy (atomic values + aliases).
No parameters.
Sources (24 active cookbooks, ordered by date):
Key | Title | Year | Language | Recipes |
| Kogebog (Harpestreng-Handschrift NKS 66) | ~1300 | Old Danish | 25 |
| Le Viandier de Taillevent | ~1300 | Old French | 55 |
| Das Buch von guter Speise | ~1350 | Middle High German | 101 |
| Anonimo Toscano (Libro della cocina) | ~1390 | Tuscan Volgare | 40 |
| The Forme of Cury | ~1390 | Middle English | 192 |
| Ménagier de Paris | 1393 | Old French | 379 |
| Registrum Coquine (Johannes von Bockenheim) | ~1433 | Medieval Latin | 70 |
| Münchner Handschrift Cgm 811 | ~1440 | Early New High German (Swabian–Bavarian) | 4 |
| Rheinfränkisches Kochbuch | ~1445 | Rhine-Franconian (Middle High German) | 76 |
| Kochbuch Meister Eberhards | ~1450 | Early New High German (Bavarian) | 23 |
| Kochbuch des Meisters Hans (Cgm 384) | ~1460 | Early New High German (Alemannic–Swabian) | 113 |
| Klosterkochbuch Rott am Inn (Clm 15632) | 1458/1464 | Early New High German (Bavarian) | 55 |
| Tegernseer Speisenbuch | 1453–1534 | Early New High German (Bavarian) | 51 |
| Libro de Arte Coquinaria | ~1465 | Early Italian | 268 |
| Königsberger Kochbuch (Deutschordensarchiv) | 15th c. | Early New High German (Bavarian / East-Central) | 25 |
| Münchner Handschrift Cgm 384 | ~1470 | Early New High German (Alemannic) | 83 |
| Von guten und edlen Speisen (Wel ende edelike spijse) | ~1475 | Middle Dutch | 62 |
| Hausbuch aus Dietramszell (Cgm 467) | ~1477 | Early New High German (Bavarian) | 3 |
| Mondseer Kochbuch (Graz, UB Ms. 1609) | ~1480 | Early New High German (Bavarian–Austrian) | 50 |
| Münchner Handschrift Cgm 725 | late 15th c. | Early New High German (Bavarian) | 22 |
| Münchner Handschrift Cgm 349 | 16th c. (addendum) | Early New High German (Bavarian) | 4 |
| Regensburger Kochbuch (Cgm 5919) | ~1505 | Early New High German (Bavarian) | 104 |
| Kuchařství (Böhmisches Kochbuch) | 1535 | Early Czech | 147 |
| Koch und Kellermeisterei | 1574 | Early New High German | 110 |
The Recipes column above is the number of recipes currently available from each source. Note that the recipe_count field returned by list_recipe_sources reflects each manuscript's full recipe count (its total editorial scope) — for sources still being ingested, that figure can be higher than what search_recipes returns today. The corpus is reviewed and published source-by-source, so all counts grow over time.
list_recipe_tags
List the controlled tag vocabulary, grouped by category (dish_type, diet, social_class), with labels, descriptions and current recipe counts. Use these tag IDs as values for the tags parameter in search_recipes and compose_menu.
No parameters.
Tag groups:
Group | Tags |
|
|
|
|
|
|
Tag IDs are German (kebab-style). Pass them verbatim to search_recipes(tags=[...]). Multiple tags combine with AND logic — tags=["hofkueche", "vegetarisch"] returns only vegetarian dishes that are also tagged as courtly cuisine. Social-class tags can co-occur on a single recipe when a source explicitly addresses multiple classes (classic Bockenheim pattern: "et erit bonum pro ciuibus Rusticis et nobilibus" → both bauernkueche and hofkueche).
The dietary filter in search_recipes is a convenience alias: dietary="vegetarian" is equivalent to tags=["vegetarisch"], and dietary="vegan" to tags=["vegan"]. Note that vegan recipes also carry the vegetarisch tag, so dietary="vegetarian" returns both groups.
search_recipes
Search historical recipes with filtering and ingredient matching.
Parameter | Type | Required | Description |
| string | — | See course types below |
| integer 1–3 | — | 1=easy, 2=medium, 3=advanced |
| boolean | — | Only recipes suitable for outdoor/camp cooking |
| string | — | Filter by cookbook key. Call |
| string | — |
|
| string[] | — | Controlled-vocabulary tag filter (AND logic, max 6). Vocabulary: |
| integer | — | Earliest source year (e.g. |
| integer | — | Latest source year (e.g. |
| string[] | — | Include filter: all listed must be present (partial match, AND logic) |
| string[] | — | Exclude these course types |
| string[] | — | Exclude recipes containing any of these ingredients |
| integer | — | Default 20, max 100 |
Course types:
Value | Description |
| Starters / appetisers |
| Beef mains |
| Pork mains |
| Poultry mains (chicken, goose, …) |
| Game mains (venison, hare, …) |
| Fish mains |
| Other mains |
| Vegetarian mains |
| Alias — all mains combined (meat + fish + other + vegetarian) |
| Alias — all meat mains (no fish) |
| Side dishes |
| Desserts / sweet dishes |
| Beverages ( |
| Sauces, spice pastes |
| Miscellaneous |
Example — desserts with cinnamon and ginger:
{
"course": "dessert",
"ingredients": ["Zimt", "Ingwer"],
"limit": 5
}Example — easy camp-cooking poultry dishes from before 1450:
{
"course": "main_poultry",
"difficulty_max": 1,
"lagerkueche": true,
"epoch_to": 1450
}Example — all recipes from the oldest source (13th-century Denmark):
{
"source_key": "harpestreng",
"limit": 25
}Example — Flemish court cuisine from the late 15th century:
{
"source_key": "edelike_spijse",
"course": "main_poultry",
"limit": 10
}Example — the Regensburg manuscript (Cgm 5919, ~1500):
{
"source_key": "muenchner_cgm5919",
"limit": 20
}Example — vegan desserts (lent-friendly sweets, no animal products):
{
"course": "dessert",
"dietary": "vegan",
"limit": 10
}Example — courtly bread-based dishes (banquet-grade Backwerk):
{
"tags": ["hofkueche", "brot"],
"limit": 10
}Example — peasant-class lent food (rural fast-day dishes):
{
"tags": ["bauernkueche", "fastenspeise"],
"limit": 20
}Recipe list fields (full details stripped for list performance): id, source_key, title_modern, course, difficulty, serves, prep_time_min, ingredients, lagerküche, published_at, fyndling_url (canonical link to the recipe page on fyndling.de)
get_recipe
Get the full details of a single recipe.
Parameter | Type | Required | Description |
| string | ✓ | Recipe ID (e.g. |
Full response includes:
text_modern— modern German adaptation of the recipeingredients— structured list withamount,unit,name,original_text,original(medieval source text)transcript— original medieval text with language and sourceannotations— glossary of archaic termsfaq— common questions answeredinterpretive_choices— editorial decisions on ambiguous passagesscan— link to manuscript scan imagefyndling_url— canonical link to the recipe page on fyndling.de (e.g.https://fyndling.de/rezepte/mar-005/)
Ingredient units: g, kg, ml, l, TL (Teelöffel/teaspoon), EL (Esslöffel/tablespoon), tsp, tbsp, pinch, piece, slice, clove, bunch, sprig, leaf, cm. Use original_text for display; amount + unit are for scaling only.
Example ingredient object:
{
"original": "ein phunt mandels",
"amount": 500,
"unit": "g",
"name": "Mandeln",
"original_text": "500 g Mandeln"
}compose_menu
Compose a multi-course menu from historical recipes. Automatically minimises ingredient overlap between courses.
Parameter | Type | Required | Description |
| string[] | ✓ | Ordered course list, 1–6 entries (use course type values from above) |
| integer | — | Number of persons (informational, included in output) |
| integer 1–3 | — | Maximum difficulty for any course |
| boolean | — | Only camp-cooking-suitable recipes |
| string | — |
|
| string[] | — | Controlled-vocabulary tags applied to every course (AND logic, max 6). Useful for thematic menus, e.g. |
| integer | — | Earliest source year |
| integer | — | Latest source year |
Example — 4-course dinner for 8, 14th-century only:
{
"courses": ["starter", "main_fish", "main_poultry", "dessert"],
"persons": 8,
"epoch_from": 1300,
"epoch_to": 1400
}Example — vegetarian 3-course menu for 6:
{
"courses": ["starter", "main_vegetarian", "dessert"],
"persons": 6,
"dietary": "vegetarian"
}Example — courtly banquet (5-course Hofküche dinner for 12):
{
"courses": ["starter", "main_fish", "main_poultry", "main_game", "dessert"],
"persons": 12,
"tags": ["hofkueche"]
}Coverage
Events: Germany, Austria, Switzerland, France, Poland, Czech Republic, Italy, Spain, Portugal, UK, Ireland, Belgium, Netherlands, Luxembourg, Denmark, Sweden, Norway, Finland, Estonia, Lithuania, and more — plus renaissance faires in the United States, Canada, Mexico, and beyond.
Recipes: Twenty-two cookbooks spanning Old Danish, Old French, Middle High German, Middle English, Tuscan Volgare, Medieval Latin, Middle Dutch, Early New High German (Bavarian, Alemannic–Swabian, Rhine-Franconian), Early Italian, and Early Czech — from Copenhagen, Paris, London, Würzburg, Florence, the papal court at Rome, Ghent, the Upper Rhine, northern Italy, Prague, Frankfurt-am-Main, and a dense cluster of South-German manuscripts: Munich (BSB Cgm 384, 467, 725, 811, 5919, Cgm 349, Clm 15632), Tegernsee, Rott am Inn, Dietramszell, Regensburg, and the Teutonic-Order Königsberg fragment. Covering the 13th to 16th century.
Notable sources: The Harpestreng manuscript (NKS 66, ~1300) is the earliest surviving cookbook from northern Europe. Le Viandier de Taillevent (~1300) is one of the most influential French court cookbooks of the Middle Ages. The Registrum Coquine of Johannes von Bockenheim (~1433, BnF Ms. Latin 7054) is a Latin compilation from the papal court of Martin V that explicitly labels recipes by social class — "pro magnatibus", "pro communibus", "pro rusticis". The Ghent manuscript (BHSL.HS.1035, ~1475) is the only fully preserved Middle Dutch recipe collection of its era. The Tegernseer Speisenbuch (BSB Cgm 8137, 1453–1534) documents Benedictine monastery cuisine from Bavaria and contains the oldest known written record of the name Rutschart (today's Ritschert). The South-German manuscript cluster (Munich/Regensburg/Tegernsee) makes Fyndling one of the largest structured digital corpora of 15th–16th-century German cookbook recipes.
License & Attribution
Event data is aggregated from public sources; accuracy is not guaranteed — always verify with the organiser.
Recipe texts and modern adaptations: © Fyndling, CC BY-SA 4.0. Original medieval texts are in the public domain.
This server cannot be installed
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/neongrau/fyndling-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server