MyFitnessPal MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MyFitnessPal MCP Servershow my food diary for today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MyFitnessPal MCP Server
A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with your MyFitnessPal data, including food diary, exercises, body measurements, nutrition goals, and water intake.
Features
Tool | Type | Description |
| Read | Get food diary entries for any date |
| Read | Search the MyFitnessPal food database |
| Read | Get detailed nutrition info for a food item |
| Write | Add a food item to your diary for a specific meal and date |
| Read | Get weight/body measurement history |
| Write | Log a new weight or body measurement |
| Read | Get logged exercises (cardio & strength) |
| Read | Get daily nutrition goals |
| Write | Update daily nutrition goals |
| Read | Get water intake for a date |
| Write | Log water intake for a date |
| Read | Get nutrition reports over a date range |
| Utility | Extract and save session cookies from browser |
Related MCP server: MyFitnessPal MCP Server
Prerequisites
Python 3.10+ (check with
python3 --version)pip 21.3+ (for pyproject.toml support; upgrade with
pip install --upgrade pip)MyFitnessPal account
One of the following for authentication:
Your MFP username/email and password (recommended), OR
Chrome or Firefox with an active MyFitnessPal login session
Authentication Options
This MCP supports multiple authentication methods:
Method | Setup | Persistence |
Credentials in config | Add | Automatic (session cached 30 days) |
Browser cookies | Log into myfitnesspal.com in Chrome/Firefox | Until browser session expires |
Installation
Option 1: Install from Source (Recommended)
# 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 .Option 2: Install with pip (when published)
pip install mfp-mcpNote: Option 2 requires the package to be published to PyPI. For now, use Option 1.
Verify Installation
After installation, verify the server can start:
# With venv activated
python -m mfp_mcp.serverYou should see the server waiting for input (it communicates via stdio). Press Ctrl+C to stop.
To test authentication (optional):
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!')
"Configuration for Claude Desktop
Step 1: Locate Your Config File
OS | Config File Location |
macOS |
|
Windows |
|
Step 2: Add the MCP Server Configuration
If the file doesn't exist, create it. Add or merge the following configuration:
Option A: With Credentials (Recommended - No Browser Required)
macOS Example:
{
"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 Example:
{
"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"
}
}
}
}Option B: Without Credentials (Browser Cookie Fallback)
macOS Example:
{
"mcpServers": {
"myfitnesspal": {
"command": "/Users/yourname/myfitnesspal-mcp-python/venv/bin/python",
"args": ["-m", "mfp_mcp.server"]
}
}
}⚠️ Important: Use full absolute paths to the Python executable in your virtual environment. Replace
yourname/YourNamewith your actual username.
Step 3: Restart Claude Desktop
After saving the config file, completely quit and restart Claude Desktop for the changes to take effect.
Step 4: Verify Connection
In Claude Desktop, you should see a hammer icon (🔨) indicating MCP tools are available. Try asking:
"Show my MyFitnessPal diary for today"
Authentication Methods
The MCP server supports three authentication methods, tried in this order:
1. Environment Variables (Recommended)
Set MFP_USERNAME and MFP_PASSWORD in your Claude Desktop config's env section. This is the most reliable method and doesn't require a browser.
"env": {
"MFP_USERNAME": "your_email@example.com",
"MFP_PASSWORD": "your_password"
}2. Stored Session Cookies
After successful authentication, session cookies are saved to ~/.mfp_mcp/cookies.json. These persist for 30 days, so you won't need to re-authenticate frequently.
3. Browser Cookies (Fallback)
If no credentials are provided and no stored cookies exist, the server falls back to reading cookies from Chrome or Firefox. You must be logged into myfitnesspal.com in your browser.
Security Note on Credentials
Your MyFitnessPal credentials in the Claude Desktop config are stored locally on your machine. The config file is only readable by your user account. However, if you're concerned about storing credentials:
Use Option B (browser cookies) instead
Or use a dedicated MyFitnessPal account for API access
Session cookies are stored in
~/.mfp_mcp/cookies.jsonwith restricted permissions
Usage Examples
Once configured, you can interact with your MyFitnessPal data through Claude:
Food Diary
"Show me what I ate today"
"Get my food diary for 2026-01-05"
"What meals did I log yesterday?"Track Weight Progress
"Show my weight history for the past 30 days"
"Log my weight as 232.5 pounds"
"What's my weight trend this month?"Search Foods
"Search MyFitnessPal for chicken breast"
"Find nutrition info for Greek yogurt"
"Look up calories in a banana"Check Goals vs Actual
"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?"Exercise Log
"What exercises did I log today?"
"Show my workout from yesterday"Nutrition Reports
"Show my calorie intake over the past week"
"What's my average protein intake this week?"
"Generate a nutrition report for January"Project Structure
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 implementationDevelopment
Setup Development Environment
# 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]"Run Tests
pytestCode Formatting
black src/
isort src/
ruff check src/Type Checking
mypy src/Docker Deployment
⚠️ Note: Docker deployment requires mounting your browser's cookie database for authentication.
# 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-mcpTroubleshooting
"python: command not found" or wrong Python version
Problem: Python is not in PATH or you need to specify version.
Solutions:
On macOS/Linux, use
python3instead ofpythonCheck your version:
python3 --version(must be 3.10+)If needed, install Python 3.12 via Homebrew:
brew install python@3.12Then create venv with:
python3.12 -m venv venv
"pip install -e ." fails with "setup.py not found"
Problem: Your pip version is too old to support pyproject.toml builds.
Solution: Upgrade pip first:
pip install --upgrade pip
pip install -e ."Failed to authenticate with MyFitnessPal"
Problem: The server can't authenticate with your credentials or read browser cookies.
Solutions:
If using credentials: Double-check your MFP_USERNAME and MFP_PASSWORD in the config
If using browser cookies: Make sure you're logged into myfitnesspal.com in Chrome or Firefox
Try logging out and back in to MyFitnessPal
Clear browser cookies and log in fresh
On macOS, grant Full Disk Access to Claude Desktop:
System Settings → Privacy & Security → Full Disk Access
Add Claude.app
"No module named 'mfp_mcp'"
Problem: Package not installed or wrong Python environment.
Solutions:
Ensure you're using the correct Python from your virtual environment
Reinstall the package:
pip install -e .Verify the path in your Claude Desktop config points to the venv Python:
/path/to/project/venv/bin/python # macOS/Linux C:\path\to\project\venv\Scripts\python.exe # Windows
Tools not appearing in Claude Desktop
Problem: MCP server not connecting.
Solutions:
Check the config file syntax (must be valid JSON - use a JSON validator)
Use absolute paths in the configuration (no
~or relative paths)Restart Claude Desktop completely (Cmd+Q on macOS, then relaunch)
Check Claude Desktop logs:
macOS:
~/Library/Logs/Claude/Windows:
%APPDATA%\Claude\logs\
Empty responses or no data
Problem: Authentication works but no data returned.
Solutions:
Verify you have data logged in MyFitnessPal for the requested date
Check the date format (YYYY-MM-DD)
Try a recent date where you know you have entries
Double parentheses in terminal prompt like "((venv) )"
Problem: VS Code/Cursor Python extension bug with venv prompt.
Solutions:
Update the Python extension in VS Code/Cursor
Or manually fix the venv activate script - change line ~70 in
venv/bin/activate:# Change from: PS1="("'(venv) '") ${PS1:-}" # To: PS1="(venv) ${PS1:-}"
API Reference
mfp_get_diary
Get food diary for a specific date.
date(optional): YYYY-MM-DD format, defaults to todayresponse_format: "markdown" or "json"
mfp_search_food
Search the MyFitnessPal food database.
query(required): Search termlimit(optional): Max results (default 10, max 50)response_format: "markdown" or "json"
mfp_get_food_details
Get detailed nutrition for a food item.
mfp_id(required): MyFitnessPal food ID from search resultsresponse_format: "markdown" or "json"
mfp_add_food_to_diary
Add a food item to your diary for a specific meal and date.
mfp_id(required): MyFitnessPal food ID from search results (usemfp_search_foodfirst)meal(optional): Meal name - "Breakfast", "Lunch", "Dinner", or "Snacks" (default: "Breakfast")date(optional): YYYY-MM-DD format (default: today)quantity(optional): Number of servings (default: 1.0)unit(optional): Unit/serving size description (e.g., "1 cup", "100g")
Example workflow:
Use
mfp_search_foodto find a food item and get itsmfp_idUse
mfp_add_food_to_diarywith themfp_idto add it to your diary
mfp_get_measurements
Get body measurement history.
measurement(optional): "Weight", "Body Fat", "Waist", etc.start_date(optional): YYYY-MM-DD (default 30 days ago)end_date(optional): YYYY-MM-DD (default today)response_format: "markdown" or "json"
mfp_set_measurement
Log a body measurement for today.
measurement(optional): Type (default "Weight")value(required): Numeric value
mfp_get_exercises
Get exercise log for a date.
date(optional): YYYY-MM-DD (default today)response_format: "markdown" or "json"
mfp_get_goals
Get daily nutrition goals.
date(optional): YYYY-MM-DD (default today)response_format: "markdown" or "json"
mfp_set_goals
Update nutrition goals.
calories(optional): Daily calorie goalprotein(optional): Daily protein in gramscarbohydrates(optional): Daily carbs in gramsfat(optional): Daily fat in grams
mfp_get_water
Get water intake for a date.
date(optional): YYYY-MM-DD (default today)
mfp_set_water
Log water intake for a date.
cups(required): Number of cups of water (e.g., 2.5 for 2.5 cups). Note: MyFitnessPal uses cups as the unit (1 cup = ~237ml)date(optional): YYYY-MM-DD format (default: today)
mfp_get_report
Get nutrition report over a date range.
report_name(optional): "Net Calories", "Protein", "Fat", "Carbs"start_date(optional): YYYY-MM-DD (default 7 days ago)end_date(optional): YYYY-MM-DD (default today)response_format: "markdown" or "json"
Security & Privacy
Credentials: If using username/password authentication, credentials are stored in your Claude Desktop config file which is only readable by your user account. Session cookies are cached in
~/.mfp_mcp/cookies.jsonfor 30 days.Browser Cookies: As a fallback, the server can read your browser cookies to authenticate with MyFitnessPal.
Local Only: The server runs locally on your machine via stdio transport. No data is sent to any third-party servers.
No External Transmission: Your MyFitnessPal data is only transmitted between your computer and MyFitnessPal's servers (myfitnesspal.com).
License
MIT License - See LICENSE file for details.
Acknowledgments
python-myfitnesspal - The underlying library for MyFitnessPal access
MCP Python SDK - Model Context Protocol framework
Anthropic - Claude and the MCP specification
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rfariassalas-tech/myfitnesspal-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server