MALAI
com.itsmalai/malaiitsmalai.comstreamable-httpv1.1.0Scanned
GLP-1 nutrition companion: your food log, protein targets, next meals, plus USDA food facts.
11 tools: 4 change things and 7 only read.
- Reads private data · 1
- Reads text others write · 0
- Can send data out · 0
- 1 finding
Anlyon alternative
4 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
11 tools
Changes things 4Claude Code: ask
malai_calculate_daily_targetsMALAI: Estimate daily calories, protein, carbs, fat and fiber from sex, age, height, weight, activity and goal, with MALAI's safety limits (a calorie floor and a cap on the rate of…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it MALAI: Estimate daily calories, protein, carbs, fat and fiber from sex, age, height, weight, activity and goal, with MALAI's safety limits (a calorie floor and a cap on the rate of loss). Same calculator the MALAI app uses. Use for "how many calories should I eat on Wegovy", "what macros to lose 1 lb a week". Adults only. Don't use for a signed-in user's saved targets (that is malai_get_nutrition_targets).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
malai_calculate_protein_targetMALAI: Calculate a daily protein range for someone on a GLP-1 medication from their body weight: 1.2–1.6 g per kg, the 2025 joint advisory range for weight loss, split into per-mea…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it MALAI: Calculate a daily protein range for someone on a GLP-1 medication from their body weight: 1.2–1.6 g per kg, the 2025 joint advisory range for weight loss, split into per-meal amounts. Same method as MALAI's protein calculator. Use for "how much protein should I eat on Zepbound", "I weigh 210 lb, what's my protein target". Don't use for a signed-in user's saved MALAI target (that is malai_get_nutrition_targets).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
malai_log_foodMALAI: Log food or drink the user says they ate into their MALAI food log, from their own words, e.g.1 finding
Why it is in this group
- The name "malai_log_food" says "log": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "malai_log_food" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "malai_log_food" says "log": a word for reading.
Description, as the server wrote it MALAI: Log food or drink the user says they ate into their MALAI food log, from their own words, e.g. "2 boiled eggs", "a protein shake", "half my chicken rice bowl". Use whenever the user says they ate, drank, or want to log something. Step 1: call with text only; MALAI returns matching options from its food database and the user's saved recipes. Step 2: confirm the right option with the user (or pick the clear best match), then call again with itemId, itemType and amount/unit. Returns what was logged and today's updated protein. Pass requestId on step 2 so a retry never logs twice. The returned entryId identifies the entry.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
malai_suggest_next_mealMALAI: Get personalised ideas for the user's next meal or snack, chosen by MALAI from their saved recipes and MALAI's GLP-1-friendly recipes to close today's protein gap at this ti…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it MALAI: Get personalised ideas for the user's next meal or snack, chosen by MALAI from their saved recipes and MALAI's GLP-1-friendly recipes to close today's protein gap at this time of day. Use for "what should I eat", "what's for dinner", "I'm hungry", "something light with protein". Returns up to 3 options with protein and calories. To log one, call malai_log_food with the values in its logWith field.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 7Show 7 read-only tools
malai_get_body_profileMALAI: Read the user's body profile in MALAI: age, sex, height, weight, activity level, goal and units.No findings
Why it is in this group
- The name "malai_get_body_profile" says "get": a word for reading.
Description, as the server wrote it MALAI: Read the user's body profile in MALAI: age, sex, height, weight, activity level, goal and units. Use before advice that depends on their body or goal. If isPlaceholder is true the profile was never filled in; tell the user and suggest completing it in the MALAI app rather than quoting numbers based on it.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
malai_get_food_logMALAI: Read what the user actually logged in MALAI across a date range: their real history, not a plan.No findings
Why it is in this group
- The name "malai_get_food_log" says "get": a word for reading.
Description, as the server wrote it MALAI: Read what the user actually logged in MALAI across a date range: their real history, not a plan. Use for "what did I eat yesterday", "what did I have this week", "how has my protein been lately". Defaults to the last 7 days. Returns each entry with its entryId, meal and nutrition, and a total.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
malai_get_medication_guideMALAI: Get MALAI's guide to a GLP-1 medication (Ozempic, Wegovy, Mounjaro or Zepbound): dose steps, common side effects with trial frequencies and food tips, what to eat, treatment…No findings
Why it is in this group
- The name "malai_get_medication_guide" says "get": a word for reading.
Description, as the server wrote it MALAI: Get MALAI's guide to a GLP-1 medication (Ozempic, Wegovy, Mounjaro or Zepbound): dose steps, common side effects with trial frequencies and food tips, what to eat, treatment phases, the first week, and FAQs, citing prescribing information. Use for "what are Mounjaro side effects", "what should I eat in my first week on Wegovy". Never use it to recommend a dose change, skipping or stopping; tell the user to ask their prescriber.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
malai_get_nutrition_targetsMALAI: Read the user's daily nutrition targets from MALAI: calories, protein, carbs, fat, fiber, plus BMR and TDEE.No findings
Why it is in this group
- The name "malai_get_nutrition_targets" says "get": a word for reading.
Description, as the server wrote it MALAI: Read the user's daily nutrition targets from MALAI: calories, protein, carbs, fat, fiber, plus BMR and TDEE. MALAI calculates these from the user's profile and GLP-1 needs; use them exactly as given rather than calculating your own. Use when the user asks about their goals, their protein target, or whether an amount is enough.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
malai_get_saved_recipesMALAI: List the recipes and foods the user saved in MALAI, with the meal times each is marked for and per-serving nutrition.No findings
Why it is in this group
- The name "malai_get_saved_recipes" says "get": a word for reading.
Description, as the server wrote it MALAI: List the recipes and foods the user saved in MALAI, with the meal times each is marked for and per-serving nutrition. Use for "what recipes do I have", "show my saved meals", or to suggest something the user already likes.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
malai_get_today_nutritionMALAI: Get what the user has eaten today against their MALAI targets: calories, protein, carbs, fat and fiber eaten vs target, what is left (especially protein), and how many entri…No findings
Why it is in this group
- The name "malai_get_today_nutrition" says "get": a word for reading.
Description, as the server wrote it MALAI: Get what the user has eaten today against their MALAI targets: calories, protein, carbs, fat and fiber eaten vs target, what is left (especially protein), and how many entries are logged. Use for "how am I doing today", "how much protein do I have left", "am I on track", or before suggesting what to eat. These are the user's real logged numbers; do not estimate them.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
malai_search_foodsMALAI: Look up nutrition for a food in MALAI's database (USDA FoodData Central, US foods): calories, protein, carbs, fat, fiber, saturated fat and sugar per serving (or per 100 g),…Reads private dataNo findings
Why it is in this group
- The name "malai_search_foods" says "search": a word for reading.
What it can reach
- private-dataThe description's first sentence says "database": it reads databases.
Description, as the server wrote it MALAI: Look up nutrition for a food in MALAI's database (USDA FoodData Central, US foods): calories, protein, carbs, fat, fiber, saturated fat and sugar per serving (or per 100 g), plus the share of calories from protein. Use for "how much protein is in cottage cheese", "compare tofu and chicken", "is a turkey sandwich high in protein". A null value means unknown, not zero. Don't use to log food (that needs a MALAI account: malai_how_to_connect).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged untrusted-input or outbound.
- Reads private data1
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write0
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
- Warnmalai_log_food
The server marks "malai_log_food" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "malai_log_food" says "log": a word for reading.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http malai https://mcp.itsmalai.com/mcpclaude mcp add --transport http malai https://mcp.itsmalai.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__malai__malai_get_today_nutrition",
"mcp__malai__malai_get_food_log",
"mcp__malai__malai_get_nutrition_targets",
"mcp__malai__malai_get_saved_recipes",
"mcp__malai__malai_get_body_profile",
"mcp__malai__malai_search_foods",
"mcp__malai__malai_get_medication_guide"
],
"ask": [
"mcp__malai__malai_log_food",
"mcp__malai__malai_suggest_next_meal",
"mcp__malai__malai_calculate_protein_target",
"mcp__malai__malai_calculate_daily_targets"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as malai. Review it before you use it.
Capability tags behind 1 rule
- mcp__malai__malai_search_foods private-data
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/com.itsmalai/malai/verify?hash=2ce52c032ce53dde30917bab12e0425805eddb40b37603715c735b61f7b6c2c3" | jq -e '.changed == false'Pinned hash 2ce52c032ce5, from Nov 4, 2026, 12:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/com.itsmalai/malai/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/com.itsmalai/malai)Source: MCP Registry. Synced Nov 4, 2026, 12:17 UTC.