Dish Directory

Restaurants and their signature dishes across the US and Canada.

Should I use this

Quality & Safety

B
Description quality
93%
Schema completeness
52%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~799Tokens (tool definitions)
~909 BTypical response size
Moderate attention impact (0.62% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "dishdirectory": {
      "url": "https://dishdirectory.com/mcp"
    }
  }
}

Remote endpoints

https://dishdirectory.com/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_listings(q, country, region, city, category, ...)

Search published restaurants by text, place and category.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "description": "Search text, with at least one letter or digit. Matches name, categories, attributes, description and place. Typos fall back to close matches.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "country": {
      "description": "ISO 3166-1 alpha-2 country code, any case. A country the directory does not cover, as listed in /places, gives 400.",
      "type": "string",
      "pattern": "^[A-Za-z]{2}$"
    },
    "region": {
      "description": "Region slug, from /places.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
    },
    "city": {
      "description": "City slug, from /places.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
    },
    "category": {
      "description": "Category slug, from /categories. A parent slug also matches its children.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
    },
    "sort": {
      "description": "`relevance` needs `q` and is the default with it. `name` is the default without `q`. `recent` is newest first.",
      "type": "string",
      "enum": [
        "relevance",
        "name",
        "recent"
      ]
    },
    "limit": {
      "default": 20,
      "description": "Items per page.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "description": "`page.nextCursor` from the previous response. Opaque. Send the same filters and `limit`.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "additionalProperties": false
}
🟢get_listing(slug)

Get one published restaurant by its slug.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
      "description": "The listing slug."
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}
🟢list_places

List countries, regions and cities that have restaurants.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢list_categories

List categories with their restaurant counts.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢get_stats

Get the number of published restaurants, places and categories, and when the data last changed.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢list_sources

List where the restaurant data comes from, with the license and refresh of each source.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools