fitatu-wrapper
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., "@fitatu-wrappershow today's nutrition summary"
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.
Fitatu Wrapper
CLI and MCP wrapper for Fitatu.
Scope
This repository currently targets v1 of a product-only wrapper.
Included:
programmatic login
session refresh
product search
product details
day read
daily nutrition summary
add product
delete entry
Not included in v1:
recipes
water
Own / Favorites / Fridge
editing existing entries
Related MCP server: Yazio MCP
Install
python3 -m pip install -e .
cp .env.example .envRun
fitatu --helpStart the MCP server over stdio with:
fitatu-mcpThe CLI entrypoint is fitatu.
Implemented commands:
fitatu login --email ... --password ...fitatu whoamifitatu logoutfitatu search-food --date YYYY-MM-DD --meal breakfast --query bananafitatu get-product --product-id 105392008fitatu read-day --date YYYY-MM-DDfitatu read-day-summary --date YYYY-MM-DDfitatu read-days --from-date YYYY-MM-DD --to-date YYYY-MM-DDfitatu read-day-summaries --from-date YYYY-MM-DD --to-date YYYY-MM-DDfitatu add-product --date YYYY-MM-DD --meal breakfast --product-id ... --measure-id ... --quantity ...fitatu delete-entry --date YYYY-MM-DD --entry-id ...
All CLI output is JSON.
Read-oriented commands also support --out PATH for writing snapshots directly to disk.
The MCP entrypoint is fitatu-mcp.
Implemented tools:
fitatu_loginfitatu_whoamifitatu_logoutfitatu_search_foodfitatu_get_productfitatu_read_dayfitatu_read_day_summaryfitatu_add_productfitatu_delete_entry
The server uses FastMCP over stdio.
Automation Examples
Range exports for a dashboard:
fitatu read-days --from-date 2026-03-01 --to-date 2026-03-07 --out data/fitatu-days.json
fitatu read-day-summaries --from-date 2026-03-01 --to-date 2026-03-31 --out data/fitatu-summaries.jsonExample cronjobs:
# macOS / BSD `date`
5 6 * * * cd /absolute/path/to/fitatu-wrapper && /absolute/path/to/.venv/bin/fitatu read-day --date $(date +\%F) --out data/today.json
10 6 * * * cd /absolute/path/to/fitatu-wrapper && /absolute/path/to/.venv/bin/fitatu read-day-summaries --from-date $(date -v-6d +\%F) --to-date $(date +\%F) --out data/weekly-summaries.jsonLinux / GNU date variant:
10 6 * * * cd /absolute/path/to/fitatu-wrapper && /absolute/path/to/.venv/bin/fitatu read-day-summaries --from-date $(date -d '6 days ago' +\%F) --to-date $(date +\%F) --out data/weekly-summaries.jsonFor dashboard ingestion, prefer the CLI over MCP and persist JSON snapshots locally.
Configuration
Copy .env.example to .env for local development.
The runtime loads .env automatically.
Important rules:
never commit a real
.envnever put real credentials or tokens into
.env.exampletreat
.env.exampleas documentation, not as a secrets file
Supported environment variables:
FITATU_API_BASE_URLFITATU_SESSION_PATHFITATU_USERNAMEFITATU_PASSWORDFITATU_API_KEYFITATU_API_SECRETFITATU_LOGIN_API_CLUSTERFITATU_APP_LOCATION_COUNTRYFITATU_APP_UUIDFITATU_APP_VERSIONFITATU_APP_LOCALEFITATU_APP_SEARCHLOCALEFITATU_APP_STORAGELOCALEFITATU_APP_TIMEZONEFITATU_APP_OS
Zero-Bootstrap Login
The default path is now browserless and zero-bootstrap:
fitatu login --email ... --password ...can work with only credentialsthe client fetches the public Fitatu login page and web bundle
it extracts the public web-app config needed for the first login request
after login, the session file stores the user tokens and user-scoped headers for normal reuse
This means:
browser automation is not required for normal CLI or MCP use
manual
FITATU_API_*/FITATU_APP_*values are not required for first loginthose header env vars are now advanced debug or override inputs, not mandatory setup
The repository does not include real values for any of these fields. Populate them from your own local setup only.
Live Smoke
The repo includes opt-in live smoke tests for zero-bootstrap browserless operation.
By default they are skipped. To run them:
FITATU_RUN_LIVE=1 python3 -m pytest -m live tests/test_live_smoke.pyRequired live-smoke inputs:
FITATU_USERNAMEFITATU_PASSWORDFITATU_LIVE_DATEoptionally
FITATU_LIVE_MEALandFITATU_LIVE_QUERY
Optional write smoke inputs:
FITATU_LIVE_PRODUCT_IDFITATU_LIVE_MEASURE_IDFITATU_LIVE_QUANTITY
The live smoke tests unset all manual FITATU_API_* and FITATU_APP_* env vars before building the client config. They then perform programmatic login and run the v1 read and write flows. That proves the browserless path works without manual bootstrap configuration.
Development
The project uses:
Python 3.12+
typerfor the CLIpydanticfor public modelsmcpfor the MCP serverpytestfor testsrufffor linting
Checks:
ruff check .
python3 -m pytestIf you are changing CLI or MCP behavior, update this README in the same change.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for managing Yazio user & nutrition data (unofficial)1519755MIT
- Alicense-qualityBmaintenanceEnables querying Yazio food logs including meals, daily summaries, and nutrition totals through MCP tools.MIT
- Flicense-qualityBmaintenanceSyncs and retrieves daily nutrition data (meals and macros) from Fitatu via MCP tools, with SQLite caching and HTTP Streamable transport.1
- Alicense-qualityAmaintenanceUnofficial MCP server that exposes Fitatu account operations as tools for inspecting and updating your meal plan.2MIT
Related MCP Connectors
Nutrition MCP — wraps Open Food Facts API (free, no auth)
Wger MCP — wraps wger Workout Manager REST API (free, no auth for read)
Personal nutrition tracking — log meals, track macros, review history, import from another app.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/Kymylyy/fitatu-wrapper'
If you have feedback or need assistance with the MCP directory API, please join our Discord server