Nutrimeniu MCP
An official MCP server by Nutrimeniu that allows AI agents to search a food database and calculate nutrition declarations per 100g and per portion for recipes, complying with EU Regulation 1169/2011.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.nutrimeniu.ro/mcpWhat its tools do
2 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (2)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to nutrimeniu.ro ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search for foods by name and retrieve nutritional values per 100g
- Calculate total nutrition for recipes with up to 30 ingredients
- Generate nutrition declarations compliant with EU Regulation 1169/2011
Source and maintenance
Protocol and capabilities
- Server
- nutrimeniu-calculator 0.1.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 2 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
2 advertised
search_foods — Search foods
Search the Nutrimeniu food database (Romanian and European foods, names in English and Romanian, diacritics optional) and return matching foods with their food_id, data source and nutrition values per 100 g (energy kJ/kcal, fat, saturates, carbohydrate, sugars, protein, salt). Use this to look up a food by name, for example an ingredient that matched several foods or none in a nutrition calculation. Searches share a budget of 50 food lookups per conversation with incomplete calculations. Values are estimates from the source data, not laboratory analysis.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"lang": {
"enum": [
"en",
"ro"
],
"type": "string",
"description": "Language of the query and of the returned names. Default en."
},
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Maximum number of results, 1 to 20. Default 10."
},
"query": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "Food name to look for, in English or Romanian (diacritics optional)."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"foods"
],
"properties": {
"foods": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"per_100g"
],
"properties": {
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"source": {
"type": [
"string",
"null"
]
},
"name_en": {
"type": [
"string",
"null"
]
},
"per_100g": {
"type": "object",
"required": [
"energy_kj",
"energy_kcal",
"fat",
"saturates",
"carbohydrates",
"sugars",
"protein",
"salt"
],
"properties": {
"fat": {
"type": [
"number",
"null"
]
},
"salt": {
"type": [
"number",
"null"
]
},
"sugars": {
"type": [
"number",
"null"
]
},
"protein": {
"type": [
"number",
"null"
]
},
"energy_kj": {
"type": [
"number",
"null"
]
},
"saturates": {
"type": [
"number",
"null"
]
},
"energy_kcal": {
"type": [
"number",
"null"
]
},
"carbohydrates": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": {}
},
"source_label": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": {}
}
},
"limit_reached": {
"type": "object",
"required": [
"reason",
"budget",
"message"
],
"properties": {
"budget": {
"enum": [
"calculations",
"lookups"
],
"type": "string"
},
"reason": {
"enum": [
"account_required",
"session",
"daily"
],
"type": "string"
},
"message": {
"type": "string"
},
"register_url": {
"type": "string"
}
},
"description": "Present only when a limit was reached: no search or calculation was made. message explains the limit; register_url, when present, opens the Nutrimeniu sign-up page.",
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Search foods",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}calculate_nutrition — Calculate nutrition declaration
Use this when the user wants calories, macros or a nutrition table or label for a recipe or dish from its ingredients (Romanian: valori nutriționale, declarație nutrițională, calorii, la 100 g, per porție). Computes an EU Regulation 1169/2011-style nutrition declaration (energy kJ/kcal, fat, saturates, carbohydrate, sugars, protein, salt) per 100 g and per portion for a recipe, using the Nutrimeniu food database (Romanian and European foods, names in English or Romanian). Each ingredient is a name or food_id with its weight in grams, raw or cooked to match the food. When an ingredient matches several foods or none, the result has no totals and lists the candidate foods, if any, for that ingredient. A complete result also carries the allergens tagged on the matched foods, with a note that tags can be incomplete, an ingredient list sorted by weight with allergens in bold, the five values per portion that Romanian Order ANPC 201/2022 requires on menus (menu_declaration), values rounded for labels (label_rounded), the data source of each ingredient and a disclaimer. purpose is menu for a restaurant menu and label for a product label. Not for packaged products looked up by barcode or brand, for a daily food diary or diet plan, or for the user's own Nutrimeniu recipes. The values are estimates calculated from ingredient data, not laboratory analysis. Completed calculations are limited per conversation. Incomplete results are not counted toward that limit; they share a budget of 50 food lookups per conversation with food searches.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"ingredients"
],
"properties": {
"lang": {
"enum": [
"en",
"ro"
],
"type": "string",
"description": "Language for food names and table labels: en or ro. Default en."
},
"purpose": {
"enum": [
"general",
"menu",
"label"
],
"type": "string",
"description": "menu: a restaurant menu (Order ANPC 201/2022), shows the five mandatory values per portion first; label: a product label, uses label rounding. Default general."
},
"servings": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Number of portions the recipe makes. Default 1."
},
"ingredients": {
"type": "array",
"items": {
"type": "object",
"required": [
"grams"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "Ingredient name in English or Romanian, e.g. \"chicken breast\" or \"piept de pui\"."
},
"grams": {
"type": "number",
"maximum": 10000,
"minimum": 0.1,
"description": "Weight in grams (0.1 to 10000), raw or cooked to match the chosen food."
},
"food_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Exact food id from a food search or from a candidate list, in place of name.",
"exclusiveMinimum": 0
}
}
},
"maxItems": 30,
"minItems": 1,
"description": "The recipe ingredients, 1 to 30, each with a name or food_id and its weight in grams."
},
"recipe_name": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "Name of the dish, e.g. \"Ciorbă de perișoare\". Used as the recipe name when the user saves it in Nutrimeniu."
},
"cooked_weight_grams": {
"type": "number",
"maximum": 300000,
"minimum": 0.1,
"description": "Final weight of the dish after cooking, in grams, when it differs from the sum of the raw ingredients."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"format": {
"type": "string"
},
"sources": {
"type": "array",
"items": {
"type": "string"
}
},
"complete": {
"type": "boolean",
"description": "False when an ingredient is ambiguous or unknown: then there are no totals yet."
},
"per_100g": {
"anyOf": [
{
"type": "object",
"required": [
"energy_kj",
"energy_kcal",
"fat",
"saturates",
"carbohydrates",
"sugars",
"protein",
"salt"
],
"properties": {
"fat": {
"type": [
"number",
"null"
]
},
"salt": {
"type": [
"number",
"null"
]
},
"sugars": {
"type": [
"number",
"null"
]
},
"protein": {
"type": [
"number",
"null"
]
},
"energy_kj": {
"type": [
"number",
"null"
]
},
"saturates": {
"type": [
"number",
"null"
]
},
"energy_kcal": {
"type": [
"number",
"null"
]
},
"carbohydrates": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"allergens": {
"anyOf": [
{
"type": "object",
"required": [
"contains",
"may_contain",
"unchecked_ingredients",
"note"
],
"properties": {
"note": {
"type": "string"
},
"contains": {
"type": "array",
"items": {
"type": "string"
}
},
"may_contain": {
"type": "array",
"items": {
"type": "string"
}
},
"unchecked_ingredients": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "Allergens tagged on the matched foods. Tags can be missing: the note says so and unchecked_ingredients lists the foods whose allergen data is not checked."
},
"unmatched": {
"type": "array",
"items": {
"type": "string"
}
},
"disclaimer": {
"type": "string"
},
"ingredients": {
"type": "array",
"items": {
"type": "object",
"required": [
"input",
"grams",
"matched",
"candidates"
],
"properties": {
"grams": {
"type": "number"
},
"input": {
"type": [
"string",
"number"
]
},
"matched": {
"anyOf": [
{
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"source": {
"type": [
"string",
"null"
]
},
"name_en": {
"type": [
"string",
"null"
]
},
"source_label": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"candidates": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"source": {
"type": [
"string",
"null"
]
},
"name_en": {
"type": [
"string",
"null"
]
},
"energy_kcal": {
"type": [
"number",
"null"
]
},
"source_label": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": {}
}
}
},
"additionalProperties": {}
}
},
"per_portion": {
"anyOf": [
{
"type": "object",
"required": [
"energy_kj",
"energy_kcal",
"fat",
"saturates",
"carbohydrates",
"sugars",
"protein",
"salt"
],
"properties": {
"fat": {
"type": [
"number",
"null"
]
},
"salt": {
"type": [
"number",
"null"
]
},
"sugars": {
"type": [
"number",
"null"
]
},
"protein": {
"type": [
"number",
"null"
]
},
"energy_kj": {
"type": [
"number",
"null"
]
},
"saturates": {
"type": [
"number",
"null"
]
},
"energy_kcal": {
"type": [
"number",
"null"
]
},
"carbohydrates": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"save_recipe": {
"type": "object",
"required": [
"label",
"url",
"expires_at"
],
"properties": {
"url": {
"type": "string"
},
"label": {
"type": "string"
},
"expires_at": {
"type": "string"
}
},
"description": "Present on a complete result: a link that opens this recipe in Nutrimeniu, to keep it as a draft.",
"additionalProperties": false
},
"label_rounded": {
"anyOf": [
{
"type": "object",
"required": [
"per_100g",
"per_portion",
"guidance"
],
"properties": {
"guidance": {
"type": "string"
},
"per_100g": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"per_portion": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "The declaration rounded per the European Commission guidance (December 2012), as strings such as \"<0.5\"."
},
"limit_reached": {
"type": "object",
"required": [
"reason",
"budget",
"message"
],
"properties": {
"budget": {
"enum": [
"calculations",
"lookups"
],
"type": "string"
},
"reason": {
"enum": [
"account_required",
"session",
"daily"
],
"type": "string"
},
"message": {
"type": "string"
},
"register_url": {
"type": "string"
}
},
"description": "Present only when a limit was reached: no search or calculation was made. message explains the limit; register_url, when present, opens the Nutrimeniu sign-up page.",
"additionalProperties": false
},
"ingredients_text": {
"anyOf": [
{
"type": "object",
"required": [
"text",
"html"
],
"properties": {
"html": {
"type": "string"
},
"text": {
"type": "string"
}
},
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "Ingredient list sorted by weight, per portion, with allergens in bold (text uses **, html uses <b>)."
},
"menu_declaration": {
"anyOf": [
{
"type": "object",
"required": [
"portion_weight_grams"
],
"properties": {
"portion_weight_grams": {
"type": "number"
}
},
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "Energy, fat, saturates, sugars and salt per portion, rounded for a menu, with the portion weight (Order ANPC 201/2022)."
},
"total_weight_grams": {
"type": [
"number",
"null"
]
},
"portion_weight_grams": {
"type": [
"number",
"null"
]
},
"free_calculations_left": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Free completed calculations left in this conversation."
}
},
"additionalProperties": false
}{
"title": "Calculate nutrition declaration",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 857 ms
- 95th percentile latency
- 857 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 857 ms · metadata changed · 2 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http nutrimeniu-mcp https://api.nutrimeniu.ro/mcpCodex
codex mcp add nutrimeniu-mcp --url https://api.nutrimeniu.ro/mcpCursor
{
"mcpServers": {
"nutrimeniu-mcp": {
"url": "https://api.nutrimeniu.ro/mcp"
}
}
}Cline
{
"mcpServers": {
"nutrimeniu-mcp": {
"type": "streamableHttp",
"url": "https://api.nutrimeniu.ro/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"nutrimeniu-mcp": {
"type": "http",
"url": "https://api.nutrimeniu.ro/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http nutrimeniu-mcp https://api.nutrimeniu.ro/mcpClaude Desktop
https://api.nutrimeniu.ro/mcpWindsurf
{
"mcpServers": {
"nutrimeniu-mcp": {
"serverUrl": "https://api.nutrimeniu.ro/mcp"
}
}
}Let your agent find its tools
Find servers like Nutrimeniu MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run Nutrimeniu MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.