J
Jezue/fitatu_library
Unofficial Python API client for Fitatu — built for AI agents and automation
SECURITY.md ✓
View on GitHub ↗Link checked 2026-11-12 · HTTP 200 · opens the vendor's own site
Install & config
Install command from the repository
pip install fitatu-api
Parsed from the README we fetched on 2026-10-26; we have not executed it.
This is the install method the repository states, not an MCP client config, so no JSON is generated.
Key names differ by client: Clients & CLI
- Star count
- 25 ★ · Jezue/fitatu_library · read from the GitHub search API · (checked 2026-11-13 20:00:50)
- Source
- collected from the punkpeye/awesome-mcp-servers list · type: MCP server
- Harvest history
- first seen 2026-10-23 · last seen 2026-11-14 · seen 26× · listed by 33 sources
- Score
- score 3,300 · 25 ★ · 33 sources · mcp
- Install
pip install fitatu-api
FAQ (answers come from our records)
How do I install it?
The repository provides this install command:
pip install fitatu-api. It comes from the repository itself; we cannot guarantee it runs as-is in your client.Who is it for?
We filed it under these tags: MCP 服务. The tags come from the entry itself, not a taxonomy we imposed.
Who maintains it?
repository
Jezue/fitatu_library;first catalogued 2026-10-23;last seen 2026-11-14。There is no official certification or quality rating here — we record sources and dates only.# fitatu-api
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
An unofficial Python client for the API of Fitatu, the calorie
counter, built to be driven by AI agents and scripts. It reads and writes the food diary,
activities, body measurements and water, reads and sets goals, and reads summaries and the food
catalog.
FitatuTools turns the diary into tools a language model can call. The session handling
follows python-garminconnect: log in once,
keep one session file, let the client refresh it.
> Unofficial. This project is not affiliated with or endorsed by Fitatu Sp. z o.o. The API
> was reverse-engineered from the Fitatu apps and can change without notice. Automated access
> may break Fitatu's Terms of Service; check them, and use the library only with your own
> account and at your own risk. The MIT licence covers this code, not the Fitatu service, its
> API or its data.
## Install
Python 3.11 or newer; the only dependency is requests (and tzdata on Windows).
bash
pip install fitatu-api # the library and the fitatu-api command
pip install "fitatu-api[mcp]" # plus fitatu-mcp, the MCP server
pip install "git+https://github.com/Jezue/fitatulibrary" # unreleased changes from main
To work on the library or run its tests offline, clone it instead: git clone
https://github.com/Jezue/fitatulibrary && cd fitatulibrary && pip install -e ".[dev]".
## Quick start
bash
fitatu-api login # asks for e-mail and password, writes ~/.fitatu/session.json
Signed up with Apple or Facebook? Then the account has no password: copy the session from the
web app with fitatu-api import-session instead, as described under
Authentication & session file.
python
from datetime import date
from fitatuapi import FitatuApiClient
with FitatuApiClient.fromsession() as client: # closes the HTTP connections at the end
userid = client.auth.fitatuuserid
today = date.today()
day = client.planner.getday(userid, today)
for mealkey, meal in day["dietPlan"].items():
for row in meal["items"]:
print(mealkey, row["name"], row["energy"], row["planDayDietItemId"])
egg = client.searchfood("jajko kurze", limit=1)[0] # search rows carry the id as foodId
added = client.planner.addproducttodaymeal(
userid, today, mealtype="breakfast", productid=egg["foodId"],
measureid=egg["measure"]["measureId"], measurequantity=2, # 2 of the hit's measure
print("added row", added["rowid"])
How writes, row ids and removals work: docs/PLANNER.md.
To copy a catering diet's menu into the diary (safe to run again), use cateringsync.py from
the repository: Importing a catering menu.
## For AI agents
FitatuTools exposes 47 tools (read the day, search food, log food, weight, water,
workouts, private recipes and products, ...) with JSON Schema inputs and read-only / destructive / idempotent annotations.
call() never raises: it returns {"ok": true, "data": ...} or {"ok": false, "error":
{"errortype", "message", "retryable", "hint", ...}}, so the model can read what went wrong.
SYSTEMPROMPT is the recommended system prompt: the rules the model needs on top of the tool
descriptions (read before writing, users' own meal names, data.ok, confirmations). The model
asks gettoday for the date, in the account's time zone.
python
import json
import anthropic
from fitatuapi import FitatuTools
counter, built to be driven by AI agents and scripts. It reads and writes the food diary,
activities, body measurements and water, reads and sets goals, and reads summaries and the food
catalog.
FitatuTools turns the diary into tools a language model can call. The session handling
follows python-garminconnect: log in once,
keep one session file, let the client refresh it.
> Unofficial. This project is not affiliated with or endorsed by Fitatu Sp. z o.o. The API
> was reverse-engineered from the Fitatu apps and can change without notice. Automated access
> may break Fitatu's Terms of Service; check them, and use the library only with your own
> account and at your own risk. The MIT licence covers this code, not the Fitatu service, its
> API or its data.
## Install
Python 3.11 or newer; the only dependency is requests (and tzdata on Windows).
bash
pip install fitatu-api # the library and the fitatu-api command
pip install "fitatu-api[mcp]" # plus fitatu-mcp, the MCP server
pip install "git+https://github.com/Jezue/fitatulibrary" # unreleased changes from main
To work on the library or run its tests offline, clone it instead: git clone
https://github.com/Jezue/fitatulibrary && cd fitatulibrary && pip install -e ".[dev]".
## Quick start
bash
fitatu-api login # asks for e-mail and password, writes ~/.fitatu/session.json
Signed up with Apple or Facebook? Then the account has no password: copy the session from the
web app with fitatu-api import-session instead, as described under
Authentication & session file.
python
from datetime import date
from fitatuapi import FitatuApiClient
with FitatuApiClient.fromsession() as client: # closes the HTTP connections at the end
userid = client.auth.fitatuuserid
today = date.today()
day = client.planner.getday(userid, today)
for mealkey, meal in day["dietPlan"].items():
for row in meal["items"]:
print(mealkey, row["name"], row["energy"], row["planDayDietItemId"])
egg = client.searchfood("jajko kurze", limit=1)[0] # search rows carry the id as foodId
added = client.planner.addproducttodaymeal(
userid, today, mealtype="breakfast", productid=egg["foodId"],
measureid=egg["measure"]["measureId"], measurequantity=2, # 2 of the hit's measure
print("added row", added["rowid"])
How writes, row ids and removals work: docs/PLANNER.md.
To copy a catering diet's menu into the diary (safe to run again), use cateringsync.py from
the repository: Importing a catering menu.
## For AI agents
FitatuTools exposes 47 tools (read the day, search food, log food, weight, water,
workouts, private recipes and products, ...) with JSON Schema inputs and read-only / destructive / idempotent annotations.
call() never raises: it returns {"ok": true, "data": ...} or {"ok": false, "error":
{"errortype", "message", "retryable", "hint", ...}}, so the model can read what went wrong.
SYSTEMPROMPT is the recommended system prompt: the rules the model needs on top of the tool
descriptions (read before writing, users' own meal names, data.ok, confirmations). The model
asks gettoday for the date, in the account's time zone.
python
import json
import anthropic
from fitatuapi import FitatuTools
Listed badge (optional)
Copy this line into the README if you want the listing mark. Optional, and it does not affect being listed.
[](https://anclum.com/en/s/jezue-fitatu-library/)
- Source
- awesome · https://github.com/Jezue/fitatu_library
- Browse by field
- MCP servers
- Traction
- 25 ★
- Listed by
- 33 independent sources
- added
- today
- Security policy
- the repository has
SECURITY.mdat its root (we checked that the file exists, not what it says)
More like this
Filed under
Every tag opens the full list for that filter. Counts are the live catalogue figures.