Japan Restaurant Calories

Nutrition facts for 24,000+ menu items of 100+ Japanese restaurant chains, with sources.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
82%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,160Tokens (tool definitions)
~1.4 KBTypical response size
Moderate attention impact (0.91% 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": {
    "calories": {
      "url": "https://calories.omikuji.dev/mcp"
    }
  }
}

Remote endpoints

https://calories.omikuji.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_menu(query, chain, genre, min_kcal, max_kcal, ...)

Search menu items of Japanese restaurant chains and get their nutrition facts. Queries that return no results are counted anonymously (the query text and chain only) to decide which chains to add. query matches item name, size, category, genre and chain name (Japanese; spaces mean AND; katakana/hiragana and full/half width are treated alike; common chain nicknames like ケンタ, マック, サイゼ work). Combine with chain / genre / kcal range. Use nutrient to find items rich in a nutrient (only chains that publish it). With a query, results are sorted by how well the item name matches (default sort "relevance"); otherwise by kcal ascending. Each item has an id for sum_items, a page url, and the chain's source_file.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Words to match, e.g. \"牛丼 並盛\", \"チーズバーガー\", \"すき家 カレー\"."
    },
    "chain": {
      "type": "string",
      "description": "Chain id from list_chains, or its Japanese name / nickname."
    },
    "genre": {
      "type": "string",
      "enum": [
        "デザート",
        "ドリンク",
        "ごはん・サイド",
        "寿司",
        "麺類",
        "カレー",
        "丼もの",
        "バーガー",
        "ピザ",
        "揚げ物",
        "ステーキ・肉料理",
        "餃子・中華",
        "定食・セット",
        "サラダ・野菜",
        "スープ・汁物",
        "調味料・トッピング",
        "その他"
      ]
    },
    "min_kcal": {
      "type": "number"
    },
    "max_kcal": {
      "type": "number"
    },
    "nutrient": {
      "type": "string",
      "enum": [
        "kcal",
        "protein_g",
        "fat_g",
        "saturated_g",
        "carb_g",
        "sugar_g",
        "fiber_g",
        "salt_g",
        "sodium_mg",
        "potassium_mg",
        "calcium_mg",
        "phosphorus_mg",
        "iron_mg",
        "vit_a_ug",
        "retinol_ug",
        "carotene_ug",
        "vit_b1_mg",
        "vit_b2_mg",
        "niacin_mg",
        "vit_c_mg",
        "vit_d_ug",
        "vit_e_mg",
        "cholesterol_mg",
        "ash_g",
        "weight_g"
      ],
      "description": "Only items that publish this nutrient."
    },
    "sort": {
      "type": "string",
      "enum": [
        "relevance",
        "kcal_asc",
        "kcal_desc",
        "nutrient_asc",
        "nutrient_desc"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1000,
      "default": 0
    }
  },
  "additionalProperties": false
}
🟢sum_items(items)

Add up nutrition for a set of items (a meal, a day) using ids from search_menu. Nutrients that some items do not publish are reported in incomplete, because their total is an underestimate.

Input Schema

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "maxItems": 30,
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "id from search_menu, e.g. \"sukiya/牛丼-並盛\"."
          },
          "quantity": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 20,
            "default": 1
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "items"
  ],
  "additionalProperties": false
}
🟢list_chains(query)

List the restaurant chains covered, with item counts, which nutrients each chain publishes, the source document and when it was fetched. query filters by chain name.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
🟡request_missing(chain, item, note)

Tell the site operator that a restaurant chain or menu item is missing. Use only after search_menu / list_chains could not find it AND the user actually wanted it. One request per chain or item. Only the chain, item and note are stored (no personal information is needed or kept). Requests are counted (not shown publicly) and used to decide what to add next. Some chains do not publish nutrition values at all, so a request does not guarantee coverage.

Input Schema

{
  "type": "object",
  "properties": {
    "chain": {
      "type": "string",
      "maxLength": 60,
      "description": "Restaurant chain name, e.g. 丸亀製麺."
    },
    "item": {
      "type": "string",
      "maxLength": 100,
      "description": "Menu item name, if a specific item is missing."
    },
    "note": {
      "type": "string",
      "maxLength": 300,
      "description": "Optional short context, e.g. \"seasonal item\", \"new menu from October\"."
    }
  },
  "required": [
    "chain"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools