MyFitnessPal
PYPI · MFP-MCP · SCANNED SEP 22
MCP server for MyFitnessPal: log, search, and analyze your food diary.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security32
- Malware scan not yet available for this package.Unverified
- CVE check failed: a known high-severity CVE affects lxml 5.4.0, a direct dependency. A fixed version is available. View diagnostics → Fail
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 10 of 66 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency35
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 57 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability69
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 1095 tokens (~91/item across 12 items; 12 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
- Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage67
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "fitness_delete_food" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the MyFitnessPal MCP server?
MyFitnessPal runs locally as a PyPI package, launched with uvx mfp-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · mfp-mcp
claude mcp add mason-levyy-mfp-mcp -- uvx mfp-mcp
{
"mcpServers": {
"mason-levyy-mfp-mcp": {
"command": "uvx",
"args": [
"mfp-mcp"
]
}
}
} {
"servers": {
"mason-levyy-mfp-mcp": {
"command": "uvx",
"args": [
"mfp-mcp"
]
}
}
} codex mcp add mason-levyy-mfp-mcp -- uvx mfp-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mason-levyy-mfp-mcp": {
"type": "local",
"command": [
"uvx",
"mfp-mcp"
],
"enabled": true
}
}
} openclaw mcp add mason-levyy-mfp-mcp --command uvx --arg mfp-mcp
mcp_servers:
mason-levyy-mfp-mcp:
command: "uvx"
args: ["mfp-mcp"] {
"McpServers": {
"mason-levyy-mfp-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"mfp-mcp"
]
}
}
} assistant mcp add mason-levyy-mfp-mcp -t stdio -c uvx -a mfp-mcp
{
"mcpServers": {
"mason-levyy-mfp-mcp": {
"command": "uvx",
"args": [
"mfp-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Sept 26 −3
- Stability: pass → 0.80 functional
- 18 Sept 26 −14
- Malware scan: pass → unverified ▼ security
- Stability: 0.97 → pass security
- 17 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- Security disclosure: fail → pass ▲ functional
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- 13 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 12 Sept 26 −18
- Malware scan: pass → unverified ▼ security
- Stability: pass → 0.80 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 22 Sept 2026 · Analysed pypi/mfp-mcp@0.3.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Vulnerabilities 2 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-vfmq-68hx-4jfw | CVE-2026-41066 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N | yes |
| PYSEC-2026-87 | CVE-2026-41066 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 66 packages
| Packages resolved | 66 |
|---|---|
| Stale | 10 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
fitness_bulk_export ~107
Export a whole date range at once for analysis: per-day nutrition totals, food entries with macros, the MyFitnessPal daily note, and local feel notes. Read-only. start/end: YYYY-MM-DD (default: last 30 days ending today). sync_first: gap-fill from MyFitnessPal before exporting. Off by default so large historical exports stay fast on cached data.
| Name | Type | Req | Description |
|---|---|---|---|
| end | – | – | – |
| start | – | – | – |
| sync_first | boolean | – | – |
No output schema declared.
No examples provided.
fitness_delete_food ~141
Remove a food from the MyFitnessPal diary by name match. query: text matched against logged entry names (e.g. "banana"). If this matches nothing, the error lists what's actually logged that day/meal — use that to retry with a better query. If it matches more than one entry (and none is an exact name match), the error lists the candidates; narrow `query` to pick one. meal: optional breakfast|lunch|dinner|snacks to disambiguate duplicates. date: YYYY-MM-DD (default: today).
| Name | Type | Req | Description |
|---|---|---|---|
| date | – | – | – |
| meal | – | – | – |
| query | string | yes | – |
No output schema declared.
No examples provided.
fitness_get_day ~47
Nutrition summary, diary entries, the MyFitnessPal daily note, and the local feel note for a day. date: YYYY-MM-DD (default: today).
| Name | Type | Req | Description |
|---|---|---|---|
| date | – | – | – |
No output schema declared.
No examples provided.
fitness_get_exercise ~42
Read the MyFitnessPal exercise diary (cardio + strength) for a day. date: YYYY-MM-DD (default: today).
| Name | Type | Req | Description |
|---|---|---|---|
| date | – | – | – |
No output schema declared.
No examples provided.
fitness_get_note ~53
Read the MyFitnessPal daily diary note (the free-text 'Notes' box at the bottom of the day) straight from your account. date: YYYY-MM-DD (default: today).
| Name | Type | Req | Description |
|---|---|---|---|
| date | – | – | – |
No output schema declared.
No examples provided.
fitness_get_trends ~85
A single metric over a date range, for charts/analysis. metric: weight | calories_in | protein | carbs | fat. start/end: YYYY-MM-DD (default: last 30 days). Returns {metric, points: [{day, value}, ...]} with nulls omitted.
| Name | Type | Req | Description |
|---|---|---|---|
| end | – | – | – |
| metric | string | yes | – |
| start | – | – | – |
No output schema declared.
No examples provided.
fitness_log_feel ~65
Save a 'how I feel today' note. Stored locally only — never sent to MyFitnessPal. rating: optional 1-5. date: YYYY-MM-DD (default: today).
| Name | Type | Req | Description |
|---|---|---|---|
| date | – | – | – |
| note | – | – | – |
| rating | – | – | – |
No output schema declared.
No examples provided.
fitness_log_food ~124
Log a food to the real MyFitnessPal diary. Searches for `query` and logs the top match. To log an exact item, pass the food_id + weight_id of a fitness_search_food candidate (query is then used as the display name). meal: breakfast|lunch|dinner|snacks. date: YYYY-MM-DD (default: today).
| Name | Type | Req | Description |
|---|---|---|---|
| date | – | – | – |
| food_id | – | – | – |
| meal | string | – | – |
| quantity | number | – | – |
| query | string | yes | – |
| weight_id | – | – | – |
No output schema declared.
No examples provided.
fitness_log_note ~108
Write the MyFitnessPal daily diary note (the free-text 'Notes' box at the bottom of the day). This is your real MFP note, synced to your account — distinct from the local-only fitness_log_feel. text: the note body. append: add to the existing note on a new line instead of replacing it. date: YYYY-MM-DD (default: today).
| Name | Type | Req | Description |
|---|---|---|---|
| append | boolean | – | – |
| date | – | – | – |
| text | string | yes | – |
No output schema declared.
No examples provided.
fitness_log_weight ~67
Log a weight measurement to MyFitnessPal. weight: in your MyFitnessPal account's display unit (kg or lbs). Logging twice for the same date updates that day's measurement. date: YYYY-MM-DD (default: today).
| Name | Type | Req | Description |
|---|---|---|---|
| date | – | – | – |
| weight | number | yes | – |
No output schema declared.
No examples provided.
fitness_modify_food ~179
Replace a MyFitnessPal diary entry: deletes the match, then adds a food. query: the existing entry to replace (name match) within `meal`. If this matches nothing, the error lists what's actually logged that day/meal — use that to retry with a better query. If it matches more than one entry (and none is an exact name match), the error lists the candidates; narrow `query` to pick one. new_query: the food to add instead; omit to re-add `query` (e.g. to change quantity). meal: breakfast|lunch|dinner|snacks. date: YYYY-MM-DD (default: today).
| Name | Type | Req | Description |
|---|---|---|---|
| date | – | – | – |
| meal | string | – | – |
| new_query | – | – | – |
| quantity | number | – | – |
| query | string | yes | – |
No output schema declared.
No examples provided.
fitness_search_food ~77
Search MyFitnessPal's food database and return candidate matches. Each candidate has name, brand, calories, macros, serving, and the food_id + weight_id to pass to fitness_log_food to log exactly that item.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| query | string | yes | – |
| with_macros | boolean | – | – |
No output schema declared.
No examples provided.
What is the MyFitnessPal MCP server?
MyFitnessPal is an MCP server listed in the public MCP registry as io.github.Mason-Levyy/mfp-mcp. MCP server for MyFitnessPal: log, search, and analyze your food diary. This page covers its PyPI package (mfp-mcp).
Is the MyFitnessPal MCP server safe to use?
MyFitnessPal scores 55 out of 100 on VerifyMCP. We recorded 2 known advisories against it as of 22 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the MyFitnessPal MCP server expose?
MyFitnessPal exposes 12 tools: fitness_get_day, fitness_search_food, fitness_log_food, fitness_delete_food, fitness_modify_food, and 7 more. Their descriptions and schemas cost roughly 1,095 tokens of context every time the server is loaded.
Is the MyFitnessPal MCP server still maintained?
MyFitnessPal is still listed as active in the MCP registry. We last reached this channel on 22 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.