MyFitnessPal MCP服务器
A. 模型上下文协议(MCP) 该服务器使克劳德等人工智能助手能够与您的MyFitnessPal数据进行交互,包括食物日记、运动、身体测量、营养目标和饮水量。
特性
| 工具 | 类型 | 描述 |
|---|---|---|
mfp_get_diary | 阅读 | 获取任何日期的食物日记条目 |
mfp_search_food | 阅读 | 搜索MyFitnessPal食品数据库 |
mfp_get_food_details | 阅读 | 获取食品的详细营养信息 |
mfp_add_food_to_diary | 写 | 在日记中添加一个食物项目,以记录特定的用餐和日期 |
mfp_get_measurements | 阅读 | 获取体重/身体测量历史记录 |
mfp_set_measurement | 写入 | 记录新的体重或身体测量值 |
mfp_get_exercises | 阅读 | 记录锻炼(有氧运动和力量训练) |
mfp_get_goals | 阅读 | 获取每日营养目标 |
mfp_set_goals | 撰写 | 更新每日营养目标 |
mfp_get_water | 阅读 | 约会时喝水 |
mfp_set_water | 写 | 记录一个日期的饮水量 |
mfp_get_report | 阅读 | 获取某一日期范围内的营养报告 |
refresh_browser_cookies | 实用程序 | 从浏览器中提取并保存会话Cookie |
先决条件
- Python 3.10+ (检查
python3 --version) - 点21.3+ (用于pyproject.toml支持;升级为
pip install --upgrade pip) - MyFitnessPal帐户
- 以下之一用于身份验证:
- 您的MFP用户名/电子邮件和密码(推荐),或 - 具有活动MyFitnessPal登录会话的Chrome或Firefox
认证选项
此MCP支持多种身份验证方法:
| 方法 | 设置 | 持久性 |
|---|---|---|
| 配置中的凭据 | 添加 MFP_USERNAME 和 MFP_PASSWORD 到Claude Desktop配置 | 自动(会话缓存30天) |
| 浏览器Cookie | 在Chrome/Firefox中登录myfitnesspal.com | 直到浏览器会话到期 |
安装
选项1:从源代码安装(推荐)
# Clone the repository
git clone https://github.com/YOUR_USERNAME/myfitnesspal-mcp-python.git
cd myfitnesspal-mcp-python
# Create virtual environment (use python3.10+ on macOS/Linux)
python3 -m venv venv
# On macOS, you may need to specify version: python3.12 -m venv venv
# Activate virtual environment
source venv/bin/activate # macOS/Linux
# On Windows: .\venv\Scripts\activate
# Upgrade pip (required for pyproject.toml support)
pip install --upgrade pip
# Install the package in editable mode
pip install -e .选项2:使用pip安装(发布时)
pip install mfp-mcp备注:选项2要求将包发布到PyPI。现在,使用选项1。
验证安装
安装后,验证服务器是否可以启动:
# With venv activated
python -m mfp_mcp.server您应该看到服务器正在等待输入(它通过stdio进行通信)。按 Ctrl+C 停止。
要测试身份验证(可选):
MFP_USERNAME="your_email" MFP_PASSWORD="your_password" python -c "
from mfp_mcp.server import get_mfp_client
client = get_mfp_client()
print('Authentication successful!')
"Claude桌面配置
步骤1:找到您的配置文件
| 操作系统 | 配置文件位置 |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| 视窗 | %APPDATA%\Claude\claude_desktop_config.json |
步骤2:添加MCP服务器配置
如果文件不存在,请创建它。添加或合并以下配置:
选项A:带凭据(推荐-无需浏览器)
macOS示例:
{
"mcpServers": {
"myfitnesspal": {
"command": "/Users/yourname/myfitnesspal-mcp-python/venv/bin/python",
"args": ["-m", "mfp_mcp.server"],
"env": {
"MFP_USERNAME": "your_email@example.com",
"MFP_PASSWORD": "your_password"
}
}
}
}Windows示例:
{
"mcpServers": {
"myfitnesspal": {
"command": "C:\\Users\\YourName\\myfitnesspal-mcp-python\\venv\\Scripts\\python.exe",
"args": ["-m", "mfp_mcp.server"],
"env": {
"MFP_USERNAME": "your_email@example.com",
"MFP_PASSWORD": "your_password"
}
}
}
}选项B:无凭据(浏览器Cookie回退)
macOS示例:
{
"mcpServers": {
"myfitnesspal": {
"command": "/Users/yourname/myfitnesspal-mcp-python/venv/bin/python",
"args": ["-m", "mfp_mcp.server"]
}
}
}⚠️ 重要:使用 完全绝对路径 在您的虚拟环境中创建Python可执行文件。替换yourname/YourName使用您的实际用户名。
步骤3:重新启动克劳德桌面
保存配置文件后, 完全退出并重新启动Claude Desktop 以使更改生效。
步骤4:验证连接
在Claude Desktop中,您应该看到一个锤子图标(🔨) 表明MCP工具可用。试着问:
“显示我今天的MyFitnessPal日记”
身份验证方法
MCP服务器支持三种身份验证方法,按以下顺序尝试:
1.环境变量(推荐)
集 MFP_USERNAME 和 MFP_PASSWORD 在您的Claude Desktop配置中 env 部分。这是最可靠的方法,不需要浏览器。
"env": {
"MFP_USERNAME": "your_email@example.com",
"MFP_PASSWORD": "your_password"
}2.存储会话Cookie
成功验证后,会话Cookie将保存到 ~/.mfp_mcp/cookies.json。这些将持续30天,因此您不需要经常重新进行身份验证。
3.浏览器Cookie(回退)
如果没有提供凭据并且不存在存储的Cookie,服务器将回退到从Chrome或Firefox读取Cookie。您必须在浏览器中登录myfitnesspal.com。
凭证安全说明
Claude Desktop配置中的MyFitnessPal凭据存储在您的计算机上。配置文件只能由您的用户帐户读取。但是,如果您担心存储凭据:
- 请改用选项B(浏览器Cookie)
- 或者使用专门的MyFitnessPal帐户访问API
- 会话Cookie存储在
~/.mfp_mcp/cookies.json具有受限权限
用法示例
配置后,您可以通过Claude与MyFitnessPal数据交互:
食物日志
"Show me what I ate today"
"Get my food diary for 2026-01-05"
"What meals did I log yesterday?"跟踪重量进度
"Show my weight history for the past 30 days"
"Log my weight as 232.5 pounds"
"What's my weight trend this month?"搜索食品
"Search MyFitnessPal for chicken breast"
"Find nutrition info for Greek yogurt"
"Look up calories in a banana"检查目标与实际目标
"Compare my nutrition goals to what I actually ate today"
"Am I on track with my protein intake?"
"How many calories do I have left today?"锻炼日志
"What exercises did I log today?"
"Show my workout from yesterday"营养报告
"Show my calorie intake over the past week"
"What's my average protein intake this week?"
"Generate a nutrition report for January"项目结构
myfitnesspal-mcp-python/
├── Dockerfile # Container deployment
├── pyproject.toml # Package configuration
├── README.md # This file
└── src/
└── mfp_mcp/
├── __init__.py # Package initialization
└── server.py # MCP server implementation发展
设置开发环境
# Clone and enter directory
git clone https://github.com/YOUR_USERNAME/myfitnesspal-mcp-python.git
cd myfitnesspal-mcp-python
# Create virtual environment (Python 3.10+ required)
python3 -m venv venv
source venv/bin/activate
# Upgrade pip and install with dev dependencies
pip install --upgrade pip
pip install -e ".[dev]"运行测试
pytest代码格式化
black src/
isort src/
ruff check src/类型检查
mypy src/Docker部署
⚠️ 备注:Docker部署需要挂载浏览器的cookie数据库进行身份验证。
# Build the image
docker build -t mfp-mcp .
# Run with Chrome cookies mounted (Linux example)
docker run -it --rm \
-v ~/.config/google-chrome:/root/.config/google-chrome:ro \
mfp-mcp故障排除
“python:找不到命令”或python版本错误
问题:Python不在PATH中,或者需要指定版本。
解决方案:
- 在macOS/Linux上,使用
python3而不是python - 检查您的版本:
python3 --version(必须为3.10+) - 如果需要,请通过Homebrew安装Python 3.12:
brew install python@3.12 - 然后使用以下命令创建venv:
python3.12 -m venv venv
“pip install-e.”失败,并显示“未找到setup.py”
问题:您的pip版本太旧,无法支持pyproject.toml构建。
解决方案:首先升级pip:
pip install --upgrade pip
pip install -e .“无法通过MyFitnessPal进行身份验证”
问题:服务器无法使用您的凭据进行身份验证或读取浏览器Cookie。
解决方案:
- 如果使用凭据:在配置中仔细检查您的MFP_用户名和MFP_密码
- 如果使用浏览器Cookie:确保您已在Chrome或Firefox中登录myfitnesspal.com
- 尝试注销并重新登录MyFitnessPal
- 清除浏览器Cookie并重新登录
- 开 macOS,赠款 全磁盘访问 到克劳德桌面:
- 系统设置→ 隐私和安全→ 全磁盘访问 - 添加Claude.app
“没有名为'mfp_mcp'的模块”
问题:未安装包或Python环境错误。
解决方案:
- 确保您在虚拟环境中使用了正确的Python
- 重新安装软件包:
pip install -e . - 验证Claude Desktop配置中的路径是否指向venv Python:
/path/to/project/venv/bin/python # macOS/Linux
C:\path\to\project\venv\Scripts\python.exe # Windows工具未出现在Claude Desktop中
问题:MCP服务器未连接。
解决方案:
- 检查配置文件语法(必须是有效的JSON-使用JSON验证器)
- 使用 绝对路径 在配置中(否
~或相对路径) - 完全重新启动Claude Desktop(在macOS上按Cmd+Q,然后重新启动)
- 检查克劳德桌面日志:
- macOS: ~/Library/Logs/Claude/ - 窗户: %APPDATA%\Claude\logs\
空响应或无数据
问题:身份验证有效,但未返回数据。
解决方案:
- 验证您是否在MyFitnessPal中记录了所请求日期的数据
- 检查日期格式(YYYY-MM-DD)
- 尝试一个最近的日期,你知道你有条目
终端提示符中的双括号,如“(venv))”
问题:VS代码/游标Python扩展错误,带有venv提示符。
解决方案:
- 更新VS代码/游标中的Python扩展
- 或者手动修复venv激活脚本-更改第70行
venv/bin/activate:
# Change from:
PS1="("'(venv) '") ${PS1:-}"
# To:
PS1="(venv) ${PS1:-}"api参考
mfp_get_diary
获取特定日期的食物日记。
date(可选):YYYY-MM-DD格式,默认为今天response_format:“markdown”或“json”
mfp_search_food
搜索MyFitnessPal食品数据库。
query(必填):搜索词limit(可选):最大结果(默认10,最大50)response_format:“markdown”或“json”
mfp_get_food_details
为食物获取详细的营养。
mfp_id(必填):搜索结果中的MyFitnessPal食品IDresponse_format:“markdown”或“json”
食品日记
在日记中添加一个特定膳食和日期的食物项目。
mfp_id(必填):搜索结果中的MyFitnessPal食品ID(使用mfp_search_food第一)meal(可选):餐名-“早餐”、“午餐”、“晚餐”或“零食”(默认:“早餐”)date(可选):YYYY-MM-DD格式(默认:今天)quantity(可选):份数(默认值:1.0)unit(可选):单位/份量描述(例如,“1杯”、“100克”)
工作流程示例:
- 使用
mfp_search_food找到一种食物并得到它mfp_id - 使用
mfp_add_food_to_diary随着mfp_id将其添加到您的日记中
mfp_get_测量
获取身体测量历史记录。
measurement(可选):“体重”、“体脂”、“腰围”等。start_date(可选):YYYY-MM-DD(默认30天前)end_date(可选):YYYY-MM-DD(今天默认)response_format:“markdown”或“json”
mfp_set_测量
记录今天的身体测量值。
measurement(可选):类型(默认“重量”)value(必填):数值
mfp_get_练习
获取日期的锻炼日志。
date(可选):YYYY-MM-DD(今天默认)response_format:“markdown”或“json”
mfp_get_goals
制定每日营养目标。
date(可选):YYYY-MM-DD(今天默认)response_format:“markdown”或“json”
mfp_set_goals
更新营养目标。
calories(可选):每日卡路里目标protein(可选):每日蛋白质(克)carbohydrates(可选):每日碳水化合物(克)fat(可选):每日脂肪(克)
mfp_get_水
约会时喝水。
date(可选):YYYY-MM-DD(今天默认)
mfp_set_水
记录一次约会的饮水量。
cups(必填):杯数(例如,2.5杯等于2.5杯)。注:MyFitnessPal使用杯子作为单位(1杯=~237毫升)date(可选):YYYY-MM-DD格式(默认:今天)
mfp_get_report
获取一个日期范围内的营养报告。
report_name(可选):“净卡路里”、“蛋白质”、“脂肪”、“碳水化合物”start_date(可选):YYYY-MM-DD(默认为7天前)end_date(可选):YYYY-MM-DD(今天默认)response_format:“markdown”或“json”
安全与隐私
- 凭证:如果使用用户名/密码身份验证,凭据将存储在您的Claude Desktop配置文件中,该文件只能由您的用户帐户读取。会话Cookie缓存在
~/.mfp_mcp/cookies.json30天。 - 浏览器Cookie:作为后备方案,服务器可以读取您的浏览器Cookie以通过MyFitnessPal进行身份验证。
- 仅限本地:服务器通过stdio传输在您的计算机上本地运行。数据不会发送到任何第三方服务器。
- 无外部传输:您的MyFitnessPal数据仅在您的计算机和MyFitnessPal.com服务器之间传输。
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
致谢
- python myfitnesspal -MyFitnessPal访问的底层库
- MCP Python SDK -模型上下文协议框架
- Anthropic -Claude和MCP规范
