Find a dish in London by area, postcode, price, diet and serving time. Free, read-only, no key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Find venues in the covered parts of London that serve a dish, with each matching dish's name, price as printed on the menu, the venue's own diet labels, and the link to the venue's page. Filters: an area name, or a postcode / coordinates with a radius; a maximum price; a diet; and when it is served. Coverage is 7 London boroughs (Camden, City of London, Hackney, Islington, Newham, Tower Hamlets, Waltham Forest), not all of London: call list_coverage for the area names. Diet filters only match labels the venue prints on the dish, never a guess, so check allergies with the venue. Times come from the menu where it prints them; venues that only have opening hours are listed separately as times_not_printed. Prices are as read on the date shown, not live. Read-only. Use get_page with a venue URL for the full menu.
The dish or food in plain words, e.g. "fish and chips", "pulled pork burger", "dosa", "bottomless brunch". Several dishes joined by "and" must all be at the same venue ("wings and chips").
Optional: a borough or neighbourhood by name, e.g. "Shoreditch", "Camden Town", "Hackney". Matches venues inside it. Use near instead for a postcode or a point.
Optional: vegan (also matches "vegan option"), vegetarian (includes vegan), gluten-free (also matches "GF option"), dairy-free, halal. Only labels the venue prints on that dish count.
Optional: a UK postcode ("E8 3RL"), a postcode district ("N1"), or "latitude,longitude". Matches venues within radius_km, nearest first. Postcodes are looked up on postcodes.io.
Optional, in London time: now = serving at this minute; tonight = from 17:00 today; today / tomorrow = any time that day; breakfast, brunch, lunch, dinner = that window today; a weekday = any time that day.
Venues to return. Default 10.
Optional: highest price in pounds (GBP) for the dish, e.g. 12. Dishes with no printed price are left out when this is set.
Only with near: how far to look, in km. Default 1.5 for a full postcode or a point, 2.5 for a postcode district.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http dishes-of-london https://dishesof.com/mcp
Find venues in the covered parts of London that serve a dish, with each matching dish's name, price as printed on the menu, the venue's own diet labels, and the link to the venue's page. Filters: an area name, or a postcode / coordinates with a radius; a maximum price; a diet; and when it is served. Coverage is 7 London boroughs (Camden, City of London, Hackney, Islington, Newham, Tower Hamlets, Waltham Forest), not all of London: call list_coverage for the area names. Diet filters only match labels the venue prints on the dish, never a guess, so check allergies with the venue. Times come from the menu where it prints them; venues that only have opening hours are listed separately as times_not_printed. Prices are as read on the date shown, not live. Read-only. Use get_page with a venue URL for the full menu.
| Argument | Type | Description |
|---|---|---|
| area | string | Optional: a borough or neighbourhood by name, e.g. "Shoreditch", "Camden Town", "Hackney". Matches venues inside it. Use near instead for a postcode or a point. |
| diet | string | Optional: vegan (also matches "vegan option"), vegetarian (includes vegan), gluten-free (also matches "GF option"), dairy-free, halal. Only labels the venue prints on that dish count. |
| dish* | string | The dish or food in plain words, e.g. "fish and chips", "pulled pork burger", "dosa", "bottomless brunch". Several dishes joined by "and" must all be at the same venue ("wings and chips"). |
| near | string | Optional: a UK postcode ("E8 3RL"), a postcode district ("N1"), or "latitude,longitude". Matches venues within radius_km, nearest first. Postcodes are looked up on postcodes.io. |
| when | string | Optional, in London time: now = serving at this minute; tonight = from 17:00 today; today / tomorrow = any time that day; breakfast, brunch, lunch, dinner = that window today; a weekday = any time that day. |
| limit | integer | Venues to return. Default 10. |
| max_price | number | Optional: highest price in pounds (GBP) for the dish, e.g. 12. Dishes with no printed price are left out when this is set. |
| radius_km | number | Only with near: how far to look, in km. Default 1.5 for a full postcode or a point, 2.5 for a postcode district. |
{
"type": "object",
"required": [
"dish"
],
"properties": {
"area": {
"type": "string",
"description": "Optional: a borough or neighbourhood by name, e.g. \"Shoreditch\", \"Camden Town\", \"Hackney\". Matches venues inside it. Use near instead for a postcode or a point."
},
"diet": {
"enum": [
"vegan",
"vegetarian",
"gluten-free",
"dairy-free",
"halal"
],
"type": "string",
"description": "Optional: vegan (also matches \"vegan option\"), vegetarian (includes vegan), gluten-free (also matches \"GF option\"), dairy-free, halal. Only labels the venue prints on that dish count."
},
"dish": {
"type": "string",
"description": "The dish or food in plain words, e.g. \"fish and chips\", \"pulled pork burger\", \"dosa\", \"bottomless brunch\". Several dishes joined by \"and\" must all be at the same venue (\"wings and chips\")."
},
"near": {
"type": "string",
"description": "Optional: a UK postcode (\"E8 3RL\"), a postcode district (\"N1\"), or \"latitude,longitude\". Matches venues within radius_km, nearest first. Postcodes are looked up on postcodes.io."
},
"when": {
"enum": [
"now",
"tonight",
"today",
"tomorrow",
"breakfast",
"brunch",
"lunch",
"dinner",
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday",
"sunday"
],
"type": "string",
"description": "Optional, in London time: now = serving at this minute; tonight = from 17:00 today; today / tomorrow = any time that day; breakfast, brunch, lunch, dinner = that window today; a weekday = any time that day."
},
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Venues to return. Default 10."
},
"max_price": {
"type": "number",
"minimum": 0,
"description": "Optional: highest price in pounds (GBP) for the dish, e.g. 12. Dishes with no printed price are left out when this is set."
},
"radius_km": {
"type": "number",
"maximum": 5,
"minimum": 0.2,
"description": "Only with near: how far to look, in km. Default 1.5 for a full postcode or a point, 2.5 for a postcode district."
}
},
"additionalProperties": false
}The full text of one page on Dishes of London (https://dishesof.com) as Markdown, with its title, URL, last-updated date and any structured fields (verdicts, categories and so on). Pass the page URL or its path, as returned by search_site or list_pages. Read-only.
| Argument | Type | Description |
|---|---|---|
| url* | string | Full URL (https://dishesof.com/…) or path ("/about/"). |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Full URL (https://dishesof.com/…) or path (\"/about/\")."
}
},
"additionalProperties": false
}The boroughs and neighbourhoods Dishes of London covers (with venue counts), the dish categories it groups menus into, and the diet filters find_dishes accepts. Call it when you need a valid area name, or to tell someone whether their part of London is covered yet. Read-only.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Every published page on Dishes of London (https://dishesof.com), newest first, with URL, section, last-updated date and description. 2154 pages in total; filter by section and page through with offset.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 50. |
| offset | integer | Default 0. |
| section | string | Optional: pages, home, london. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Default 50."
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "Default 0."
},
"section": {
"type": "string",
"description": "Optional: pages, home, london."
}
},
"additionalProperties": false
}Keyword search over every published page on Dishes of London (https://dishesof.com): titles, descriptions, headings and full text. Returns up to 10 pages (max 25) with URL, last-updated date, a one-line description and a snippet around the match. Read-only; cite the page URL. Use get_page for a page's full text.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 10. |
| query* | string | Words to look for, e.g. "bottomless brunch" or "how menus are checked". |
| section | string | Optional: limit to one section (pages, home, london). |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Default 10."
},
"query": {
"type": "string",
"description": "Words to look for, e.g. \"bottomless brunch\" or \"how menus are checked\"."
},
"section": {
"type": "string",
"description": "Optional: limit to one section (pages, home, london)."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 12, 2026.