← 返回目录
M

MyFitnessPal MCP Server

社区
让 AI 助手直接读写你的 MyFitnessPal 饮食与健康数据
分类
其他 第 142 / 230
Stars
★ 68 热门
传输方式
stdio(本地进程)
运行环境
Python 3.10+ · Node.js 18+ · Docker
凭据
需要 API Key / 凭据
许可证
MIT
最近提交
工具数
20
51FMRS · D

这是一个功能覆盖较广的本地 MyFitnessPal MCP 服务器:20 个工具涵盖饮食日记读写、食物搜索、自定义食物管理、体重等测量、运动、营养目标、饮水量、营养报告和断食写入,并支持从浏览器自动发现会话 Cookie。但它并非官方项目:MyFitnessPal 没有公开 API,读取靠网页抓取,写入依赖未公开且随时可能变更的内部接口;作者也明确说明旧版表单登录在迁移到 NextAuth 后基本失效,实际可靠的认证方式是在浏览器登录后由 MCP 读取 Cookie。适合接受这些限制的个人用户,不适合需要稳定官方支持或不愿在本机保存会话凭据的场景。

最强项 · 文档质量 14/20 最弱项 · 安全与权限 8/20

可靠性
9/20
安全与权限
8/20
维护活跃度
10/20
文档质量
14/20
安装易用性
10/20
查看各项评分依据
可靠性 9/20
README 声明了 20 个工具,但仅以表格与 API 参考描述行为,未提供 server.py 等源码,无法核对声明与实现是否一致,也无 CI 工作流或已提交测试可供验证,按静态校准规则 reliability 上限 12。认证链路脆弱:README 自述 MFP 已迁移至 NextAuth,传统表单登录几乎必然失败,凭证认证只在缓存 cookie 仍有效时可用;写入还依赖未文档化的 v2 JSON 接口,且作者承认该接口曾变更导致日志写入 404 中断。依赖方面要求 Python 3.10–3.12 且 lxml 在 3.13+ 无法构建,约束未被代码锁定。因此给 9:主路径或许可用,但缺少执行证据、错误处理与回归测试的描述,关键写入路径存在已知的易碎点。
安全与权限 8/20
无恶意、无隐蔽外传、无凭据窃取迹象,不触发红线,但权限与确认机制不完整。写入类工具(mfp_add_food_to_diary、mfp_set_goals、mfp_set_measurement、mfp_set_water、mfp_delete_custom_food、mfp_remove_food_from_diary、fasting 写入)在 README 中均无“需用户确认”的提示,删除类操作也仅一句“不可恢复”说明,未要求显式二次确认。凭据处理有可取处:支持 Fernet 加密并将 MFP_SECRET_KEY 存放在环境变量或 OS keychain,cookie 文件 0700/0600。但读取浏览器 cookie 需要访问 macOS keychain 的 Safe Storage,属较宽权限;旧的明文 MFP_PASSWORD 配置仍被文档化并示例化,会以明文落盘。整体风险可见但收敛不足,故给 8。
维护活跃度 10/20
MIT 许可证明确,仓库未归档,53 star、7 个未关闭 issue,说明有使用群体。但缺少任何发布记录、版本号策略、CHANGELOG、CI 或依赖更新机制的证据;README 中“功能、维护与安全”依赖作者个人对 MFP 私有接口的逆向,且作者自述接口已变更一次,维护负担集中在单点未文档化 API 上,无安全响应渠道说明。按“10 = 活跃但治理/版本化有缺口”锚点,给 10。
文档质量 14/20
文档是本仓库最强的部分:安装(venv、pip 版本要求)、四种认证方式的优先级与失败原因、Claude Desktop 配置示例(macOS/Windows)、Docker 挂载示例、完整工具参数表、自定义食物的 carbs/country_code 语义表、fasting 只写不读的机制与 405 原因、以及较详尽的故障排查(keychain 弹窗、Python 版本、模块缺失)。同时明确披露限制:MFP 无公开 API、写入走未文档化接口、可能随时失效。扣分点:仓库结构与 README 描述的部分路径不一致(如 src/mfp_mcp 与 mfp_mcp 模块),部分示例仍含占位符 YOUR_USERNAME 与实际仓库不符;缺少真实运行输出的可复核证据;README 属不可信证据本身且无外部文档链接验证。综合给 14。
安装易用性 10/20
提供了清晰的从源码安装流程、Claude Desktop 配置样例(含绝对路径与 macOS/Windows 差异)以及 Docker 示例,认证主流路径为“在任意 Chromium 浏览器登录后自动发现 cookie”,对 macOS 用户较省事。但整体仍偏手工且脆弱:需手动创建 venv、锁定 Python 3.10–3.12(3.13+ 因 lxml 失败)、pip 需 21.3+、必须手写 JSON 配置并重启客户端;加密方案还要额外 Node.js 18+、npm install 与 keychain CLI 两步,跨平台说明不均衡(自动发现仅 macOS)。既无 CI 也无测试佐证安装可复现,按静态校准上限 15,给 10。

静态评测 · 未实际运行收录于 2026-09-10

查看 FMRS 评分方法 →

选型与风险

能访问什么访问网络修改第三方账户数据

适合谁

  • 希望用自然语言查看和整理 MyFitnessPal 饮食、运动与体重记录的个人用户
  • 在 macOS 上使用 Claude Desktop、愿意用浏览器 Cookie 认证的用户
  • 想自动化记录(例如根据睡眠窗口推断断食)或批量修正记录的人
  • 接受数据抓取方案、明白接口可能随时失效的技术用户

不适合谁

  • 需要官方支持或稳定公开 API 承诺的生产环境
  • 不愿在本机保存会话 Cookie 或账号凭据的用户
  • 使用 Python 3.13+ 或无法安装 lxml 的环境
  • 非 Claude Desktop 的 MCP 客户端(文档仅提供 Claude Desktop 配置示例)
  • 需要读取断食历史的人——MFP 没有断食读取接口

所需权限

  • 读取并修改你的 MyFitnessPal 账号数据(日记、目标、测量、饮水、断食)
  • 访问 ~/.mfp_mcp/cookies.json(权限 0600,等同密码,含完整账号访问权)
  • 在 macOS 上读取浏览器 Safe Storage 密钥链条目以解密 Cookie 数据库
  • 读取浏览器 Cookie(Chromium 系列或 Firefox)或 b64 中的 MFP 账号凭据
  • 可选:从环境变量或操作系统密钥链读取 MFP_SECRET_KEY 以解密凭据

风险与副作用

  • 服务器可以修改你的日记、目标、测量值与饮水量,误用会造成数据变更
  • 会话 Cookie 等同完整账号访问权,保存在本机 ~/.mfp_mcp/cookies.json,泄露即等于泄露账号
  • 明文凭据配置会把 MyFitnessPal 密码以明文存放在磁盘上,任何以你的用户身份运行的程序都能读取
  • 读写依赖 MFP 未公开的内部接口,官方可随时改动使其失效(作者称已发生过一次)
  • 页面抓取与内部 API 使用可能违反 MyFitnessPal 的服务条款
  • 若把 MFP_SECRET_KEY 与加密后的凭据放在同一个配置文件里,加密保护基本无效

安装接入

准备工作

运行环境:Python 3.10+ · Node.js 18+ · Docker

MFP_USERNAME 可选密钥 MyFitnessPal 登录邮箱,可选(旧版凭据认证,现大多失效),可存明文或 Fernet 加密。
MFP_PASSWORD 可选密钥 MyFitnessPal 登录密码,可选(旧版凭据认证),建议 Fernet 加密存储。
MFP_SECRET_KEY 可选密钥 用于解密加密凭据的 Fernet 密钥,应存于 shell 环境变量或 OS 钥匙串(服务名 mfp-mcp),不要放进配置文件。
  1. 确认 Python 版本为 3.10–3.12(3.13+ 不支持,因为 lxml 没有对应 wheel)。
  2. 克隆仓库并进入目录:git clone https://github.com/YOUR_USERNAME/myfitnesspal-mcp-python.git && cd myfitnesspal-mcp-python。
  3. 创建虚拟环境:python3 -m venv venv,然后激活(macOS/Linux:source venv/bin/activate;Windows:.\venv\Scripts\activate)。
  4. 升级 pip:pip install --upgrade pip。
  5. 以可编辑模式安装:pip install -e .。
  6. 验证可启动:python -m mfp_mcp.server(通过 stdio 通信,Ctrl+C 退出)。
  7. 编辑 Claude Desktop 配置文件(macOS:~/Library/Application Support/Claude/claude_desktop_config.json;Windows:%APPDATA%\Claude\claude_desktop_config.json),加入 mcpServers 配置,command 使用虚拟环境 Python 的绝对路径,args 为 ["-m", "mfp_mcp.server"]。
  8. 完全退出并重启 Claude Desktop,看到锤子图标即表示工具已加载。
  9. 认证建议:在任意 Chromium 浏览器(macOS 推荐)或 Firefox 中登录 myfitnesspal.com;也可在 env 中配置 MFP_USERNAME / MFP_PASSWORD(旧版表单登录在 NextAuth 后端已基本失效)。
claude_desktop_config.json
{
  "mcpServers": {
    "myfitnesspal": {
      "command": "/Users/yourname/myfitnesspal-mcp-python/venv/bin/python",
      "args": ["-m", "mfp_mcp.server"]
    }
  }
}

以 Claude Desktop 为例。其他客户端的配置文件位置或字段可能不同(如 VS Code 使用 servers 字段),可用下方配置生成器转换。

.vscode/mcp.json
{
  "servers": {
    "myfitnesspal": {
      "command": "/Users/yourname/myfitnesspal-mcp-python/venv/bin/python",
      "args": [
        "-m",
        "mfp_mcp.server"
      ]
    }
  }
}

写入项目的 .vscode/mcp.json(VS Code 使用 servers 字段)。

Terminal
claude mcp add myfitnesspal -- /Users/yourname/myfitnesspal-mcp-python/venv/bin/python -m mfp_mcp.server

在终端运行;先把 <…> 占位符换成你自己的值。

验证是否装好

在 Claude Desktop 中重启后出现锤子图标,然后询问"显示我今天在 MyFitnessPal 的饮食日记",若能返回日记数据即说明连接成功。

常见排障

  1. 提示“python: command not found”或版本错误:用 python3 --version 检查,需要 3.10–3.12;macOS 可 brew install [email protected] 后创建虚拟环境
  2. pip install -e . 报 setup.py not found:先执行 pip install --upgrade pip
  3. 认证失败:在 Chromium 浏览器登录 myfitnesspal.com,或调用 refresh_browser_cookies(browser 可设为 arc、chrome、edge、brave、firefox 或 auto)
  4. macOS 首次运行弹出密钥链授权对话框:点“始终允许”;若后台运行容易错过,先把 Claude Desktop 切到前台重试
  5. 报 No module named 'mfp_mcp':确认使用虚拟环境中的 Python,并重新执行 pip install -e .,配置里使用绝对路径
  6. Claude Desktop 中看不到工具:检查 JSON 语法、使用绝对路径、彻底重启 Claude Desktop,并查看日志目录
  7. 有认证但返回空数据:确认该日期确有记录,日期格式为 YYYY-MM-DD
  8. 食物写入突然失效:MFP 内部接口变更(历史上 /food/diary/{user}/add 已改为返回 404),属于最可能的原因

试试这样问

连接成功后,可以直接对 AI 助手这样说:

  • 看看我今天吃了什么
  • 帮我记一份午餐:6盎司烤鸡胸肉
  • 把我的体重记录为232.5磅
  • 显示我过去一周的热量摄入情况

工具能力 20

mfp_get_diary 只读
获取指定日期的饮食日记条目
mfp_search_food 只读
搜索 MyFitnessPal 食物数据库
mfp_get_food_details 只读
获取某个食物的详细营养信息
mfp_add_food_to_diary 写入
把某个食物添加到指定日期和餐次的日记中
mfp_remove_food_from_diary 破坏性
从日记中删除一条已记录条目
mfp_create_custom_food 写入
创建一份带完整营养面板的私人自定义食物
mfp_list_own_foods 只读
列出你自己的自定义食物(私人食物不会出现在搜索中)
mfp_delete_custom_food 破坏性
删除你自己的某个自定义食物
展开其余 12 个工具
mfp_get_measurements 只读
获取体重/身体测量历史
mfp_set_measurement 写入
记录新的体重或身体测量值
mfp_get_exercises 只读
获取已记录的运动(有氧与力量训练)
mfp_get_goals 只读
获取每日营养目标
mfp_set_goals 写入
更新每日营养目标
mfp_get_water 只读
获取某日饮水量
mfp_set_water 写入
记录某日饮水量
mfp_log_fast 写入
记录一次已完成的间歇性断食窗口(开始与结束时间)
mfp_update_fast 写入
更新已有断食记录的开始/结束时间
mfp_delete_fast 破坏性
按 id 删除一条断食记录
mfp_get_report 只读
获取某日期范围内的营养报告
refresh_browser_cookies 写入
从浏览器中提取并保存会话 Cookie

使用场景

查看今天或指定日期的饮食日记与昨天吃了什么
让 AI 搜索食物并估算/查询营养信息
把食物添加到早餐、午餐、晚餐或零食
查看体重历史与本月体重趋势,并记录新体重
对比每日营养目标与实际摄入,检查蛋白质是否达标
查看今日或昨日的运动记录
生成一周或某月的营养报告
更新每日热量、蛋白质、碳水与脂肪目标
查询和记录每日饮水量
记录、修改或删除间歇性断食窗口
创建私人自定义食物以便重复记录

支持客户端

Claude Desktop

依据项目文档列出,未经本站实测。

详细介绍

这是一个基于 Model Context Protocol 的本地 MCP 服务器,让 Claude 等 AI 助手可以访问和修改你的 MyFitnessPal 数据,包括饮食日记、运动记录、体重等身体测量、营养目标、饮水量和间歇性断食记录。MyFitnessPal 没有公开 API:读取通过 python-myfitnesspal 抓取网页实现,饮食写入走 MFP 内部的 v2 JSON 接口(与其网页客户端相同,使用你的会话令牌认证),自定义食物则使用另一组基于 Cookie 认证的网页接口。服务器通过 stdio 在本机运行,数据只在你的电脑与 myfitnesspal.com 之间传输。

同类可选方案

BioMCP 75 · B

统一的命令行语法,接入约30个可信生物医学数据源。

★ 659 · 工具数 11 与当前对比 →

源版本 4d71a5607b0f 数据同步于 2026-10-19 查看 FMRS 评分方法