Skip to main content
Glama

fyndling-mcp

neongrau/fyndling-mcp MCP server

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 2,000+ markets, concerts, castle experiences, and living-history events across 20 European countries by location + radius + date range (updated weekly)

  • Permanent POIs — meaderies, mead producers, castles, and medieval restaurants, also searchable by geo-radius

  • Historical recipes — 1,400+ recipes from thirteen cookbooks spanning the 13th–17th 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: MockMCP

Tools

Events & Locations

find_events_near

Find medieval events near a geographic coordinate, sorted by distance.

Parameter

Type

Required

Description

lat

number

Latitude

lon

number

Longitude

radius_km

number

Search radius in km (default 50, max 500)

date_from

string

ISO 8601 start date, e.g. 2026-06-01

date_to

string

ISO 8601 end date, e.g. 2026-06-30

types

array

market, concert, burg_event, living_history, renfaire

limit

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

category

string

market, concert, burg_event, living_history, renfaire

country

string

ISO 3166-1 alpha-2 code (e.g. DE, AT, FR, PL)

date_from

string

ISO 8601

date_to

string

ISO 8601

limit

integer

Default 20, max 100


get_event

Get full details for a single event by ID.

Parameter

Type

Required

Description

id

string

Event ID (16-char hex, e.g. a1b2c3d4e5f6a7b8)


find_pois_near

Find permanent medieval-themed locations (meaderies, castles, restaurants).

Parameter

Type

Required

Description

lat

number

Latitude

lon

number

Longitude

radius_km

number

Default 100, max 1000

poi_type

string

meadery, metkellerei, burg, ma_gastronomie

limit

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:

Key

Title

Year

Language

Recipes

harpestreng

Kogebog (Harpestreng-Handschrift NKS 66)

~1300

Old Danish

25

viandier

Le Viandier de Taillevent

~1300

Old French

55

buch-guter-speise

Das Buch von guter Speise

1350

Middle High German

101

form-of-cury

The Forme of Cury

1390

Middle English

192

anonimo_toscano

Anonimo Toscano (Libro della cocina) — pilot

~1390

Tuscan Volgare

30

menagier

Ménagier de Paris

1393

Old French

379

bockenheim

Registrum Coquine (Johannes von Bockenheim)

~1433

Medieval Latin

64

tegernsee

Tegernseer Speisenbuch (BSB Cgm 8137)

1453–1534

Early New High German (Bavarian)

11

meister_hans

Kochbuch des Meister Hans (Cgm 384)

~1460

Early New High German (Alemannic–Swabian)

69

martino

Libro de Arte Coquinaria

1465

Early Italian

268

edelike_spijse

Von guten und edlen Speisen (Wel ende edelike spijse)

~1475

Middle Dutch

62

severin

Kuchařství (Böhmisches Kochbuch)

1535

Early Czech

92

koch_kellermeisterei

Koch und Kellermeisterei

1574

Early New High German

110


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

dish_type

pasta, reis, brei, beilage, huelsenfruechte, brot

diet

vegetarisch, vegan, fastenspeise

social_class

hofkueche, buergerlich, bauernkueche

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

course

string

See course types below

difficulty_max

integer 1–3

1=easy, 2=medium, 3=advanced

lagerkueche

boolean

Only recipes suitable for outdoor/camp cooking

source_key

string

Filter by cookbook key. Call list_recipe_sources for the full list; valid values are anonimo_toscano, bockenheim, buch-guter-speise, edelike_spijse, form-of-cury, harpestreng, koch_kellermeisterei, martino, meister_hans, menagier, severin, tegernsee, viandier.

dietary

string

vegetarian (no meat/fish, eggs/dairy allowed) or vegan (no animal products; almond milk and honey accepted by convention). Vegan recipes are also tagged vegetarian, so vegetarian includes the vegan ones. Equivalent to tags=["vegetarisch"] / tags=["vegan"].

tags

string[]

Controlled-vocabulary tag filter (AND logic, max 6). Vocabulary: pasta, reis, brei, beilage, huelsenfruechte, brot (dish type); vegetarisch, vegan, fastenspeise (diet); hofkueche, buergerlich, bauernkueche (social class). Call list_recipe_tags for descriptions.

epoch_from

integer

Earliest source year (e.g. 1300)

epoch_to

integer

Latest source year (e.g. 1500)

ingredients

string[]

Include filter: all listed must be present (partial match, AND logic)

exclude_courses

string[]

Exclude these course types

exclude_ingredients

string[]

Exclude recipes containing any of these ingredients

limit

integer

Default 20, max 100

Course types:

Value

Description

starter

Starters / appetisers

main_beef

Beef mains

main_pork

Pork mains

main_poultry

Poultry mains (chicken, goose, …)

main_game

Game mains (venison, hare, …)

main_fish

Fish mains

main_other

Other mains

main_meat

Alias — all meat mains combined

side

Side dishes

dessert

Desserts / sweet dishes

drink / beverage

Beverages (beverage is an alias for drink)

condiment

Sauces, spice pastes

other

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 — Bavarian monastery cooking from the 15th century:

{
  "source_key": "tegernsee",
  "limit": 11
}

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

id

string

Recipe ID (e.g. hkb-001, bgs-001, foc-015, men-042, wes-001, teg-001)

Full response includes:

  • text_modern — modern German adaptation of the recipe

  • ingredients — structured list with amount, unit, name, original_text, original (medieval source text)

  • transcript — original medieval text with language and source

  • annotations — glossary of archaic terms

  • faq — common questions answered

  • interpretive_choices — editorial decisions on ambiguous passages

  • scan — link to manuscript scan image

  • fyndling_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), 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

courses

string[]

Ordered course list, 1–6 entries (use course type values from above)

persons

integer

Number of persons (informational, included in output)

max_difficulty

integer 1–3

Maximum difficulty for any course

lagerkueche

boolean

Only camp-cooking-suitable recipes

dietary

string

vegetarian or vegan — applied to every course (vegan recipes are also tagged vegetarian)

tags

string[]

Controlled-vocabulary tags applied to every course (AND logic, max 6). Useful for thematic menus, e.g. ["hofkueche"] for a courtly banquet or ["bauernkueche"] for a peasant-class meal. See list_recipe_tags for the vocabulary.

epoch_from

integer

Earliest source year

epoch_to

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_other", "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, Denmark, Sweden, Norway, Estonia, Lithuania, and more.

Recipes: Thirteen cookbooks spanning Old Danish, Old French, Middle High German, Middle English, Tuscan Volgare, Medieval Latin, Middle Dutch, Early New High German (Bavarian + Alemannic–Swabian), Early Italian, and Early Czech — from Copenhagen, Paris, London, Würzburg, Florence, Frankfurt-am-Main, Ghent, Munich/Tegernsee, the Upper Rhine, northern Italy, Prague, and Frankfurt. Covering the 13th to 17th 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).


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.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Latest Blog Posts

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