Fyndling
About
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:
Details
- Author
- neongrau
- Downloads
- 353
- Categories
- Other
Jump to
- Query 2,000+ medieval events across 20 European countries by location, radius, and date range
- Search permanent POIs (meaderies, castles, restaurants) by geo‑radius
- Access 1,100+ historical recipes with modern German adaptations
- Filter recipes by cookbook, epoch, course, difficulty, and ingredients
- Compose multi‑course menus from historical recipes with ingredient overlap minimisation
- No authentication needed; updated weekly for events
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
FyndlingCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Add the server to your MCP client configuration with the URL https://fyndling.de/mcp. No authentication or API key is required. The server uses Streamable HTTP transport (MCP spec 2025‑03‑26) and is rate‑limited to 60 requests per minute.
find_events_near
Find medieval events near a geographic location. Returns events sorted by distance.
list_events
List medieval events filtered by category, country, and/or date range.
get_event
Get full details for a single event by its ID.
search_recipes
Search historical recipes (13th-17th century) by course, difficulty, ingredients, and other criteria. Each result includes `fyndling_url` - the canonical link to the recipe's HTML page on fyndling.de.
get_recipe
Get the full details of a single recipe including ingredients, annotations, FAQ, and original transcript. The response includes `fyndling_url` - the canonical link to the recipe's HTML page on fyndling.de. Ingredient fields: `original_text` is the canonical German display string (e.g. "250 g Maibutter", "3 EL Zucker") - use this for output unless scaling is active. `amount` (number|null) and `unit` (code: g|kg|ml|l|TL|EL|tbsp|tsp|pinch|piece|slice|clove|bunch|sprig|leaf|cm|null) are machine-readable values for portion scaling and unit conversion only - do NOT expand unit codes to English words. TL = Teelöffel (teaspoon), EL = Esslöffel (tablespoon).
compose_menu
Compose a multi-course menu from historical recipes. Minimizes ingredient overlap between courses. Returns one recipe per course.
list_recipe_sources
List all available historical recipe sources with year, region, language, and recipe count. Also returns the full course taxonomy (atomic values + aliases) so you can use granular filters like main_poultry, main_pork, main_game in search_recipes and compose_menu.
list_recipe_tags
List the controlled tag vocabulary for recipes, 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.
find_pois_near
Find permanent medieval-themed locations (meaderies, castles, restaurants) near a geographic point.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"fyndling": {
"fyndling": {
"url": "https://fyndling.de/mcp"
}
}
}
}
McpServers
{
"fyndling": {
"url": "https://fyndling.de/mcp"
}
}
fyndling-mcp
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 Desktopclaude_desktop_config.json):
``json
{
"mcpServers": {
"fyndling": {
"url": "https://fyndling.de/mcp"
}
}
}
`
---
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:
`json
{
"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 six available cookbooks with metadata (year, language, region, recipe count).
No parameters.
Sources:
| Key | Title | Year | Language | Recipes |
|---|---|---|---|---|
| buch-guter-speise | Das Buch von guter Speise | 1350 | Middle High German | 96 |
| form-of-cury | The Forme of Cury | 1390 | Middle English | 192 |
| menagier | Ménagier de Paris | 1393 | Old French | 380 |
| martino | Libro de Arte Coquinaria | 1465 | Early Italian | 268 |
| severin | Kuchařství (Böhmisches Kochbuch) | 1535 | Early Czech | ~100 |
| koch_kellermeisterei | Koch und Kellermeisterei | 1574 | Early New High German | 110 |
---
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 (see keys above) |
| epoch_from | integer | — | Earliest source year (e.g. 1350) |
| 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, excluding Ingwer-heavy recipes:
`json
{
"course": "dessert",
"ingredients": ["Zimt", "Ingwer"],
"limit": 5
}
`
Example — easy camp-cooking poultry dishes from before 1450:
`json
{
"course": "main_poultry",
"difficulty_max": 1,
"lagerkueche": true,
"epoch_to": 1450
}
`
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
---
get_recipe
Get the full details of a single recipe.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | ✓ | Recipe ID (e.g. bgs-001, foc-015, men-042) |
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
Example ingredient object:
`json
{
"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 |
| epoch_from | integer | — | Earliest source year |
| epoch_to | integer | — | Latest source year |
Example — 4-course dinner for 8, 14th-century only:
`json
{
"courses": ["starter", "main_fish", "main_poultry", "dessert"],
"persons": 8,
"epoch_from": 1300,
"epoch_to": 1400
}
``
---
Coverage
Events: Germany, Austria, Switzerland, France, Poland, Czech Republic, Italy, Spain, Portugal, UK, Ireland, Belgium, Netherlands, Denmark, Sweden, Norway, Estonia, Lithuania, and more. Recipes: Six cookbooks from Würzburg, Paris, London, northern Italy, Prague, and Frankfurt — spanning Middle High German, Middle English, Old French, Early Italian, Early Czech, and Early New High German. ---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.Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



