fitatu-wrapper

fitatu-wrapper

Enables programmatic access to Fitatu nutrition tracking via MCP tools for login, food search, product lookup, daily nutrition read, and adding entries.

Category
Visit Server

README

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

Install

python3 -m pip install -e .
cp .env.example .env

Run

fitatu --help

Start the MCP server over stdio with:

fitatu-mcp

The CLI entrypoint is fitatu.

Implemented commands:

  • fitatu login --email ... --password ...
  • fitatu whoami
  • fitatu logout
  • fitatu search-food --date YYYY-MM-DD --meal breakfast --query banana
  • fitatu get-product --product-id 105392008
  • fitatu read-day --date YYYY-MM-DD
  • fitatu read-day-summary --date YYYY-MM-DD
  • fitatu read-days --from-date YYYY-MM-DD --to-date YYYY-MM-DD
  • fitatu read-day-summaries --from-date YYYY-MM-DD --to-date YYYY-MM-DD
  • fitatu 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_login
  • fitatu_whoami
  • fitatu_logout
  • fitatu_search_food
  • fitatu_get_product
  • fitatu_read_day
  • fitatu_read_day_summary
  • fitatu_add_product
  • fitatu_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.json

Example 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.json

Linux / 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.json

For 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 .env
  • never put real credentials or tokens into .env.example
  • treat .env.example as documentation, not as a secrets file

Supported environment variables:

  • FITATU_API_BASE_URL
  • FITATU_SESSION_PATH
  • FITATU_USERNAME
  • FITATU_PASSWORD
  • FITATU_API_KEY
  • FITATU_API_SECRET
  • FITATU_LOGIN_API_CLUSTER
  • FITATU_APP_LOCATION_COUNTRY
  • FITATU_APP_UUID
  • FITATU_APP_VERSION
  • FITATU_APP_LOCALE
  • FITATU_APP_SEARCHLOCALE
  • FITATU_APP_STORAGELOCALE
  • FITATU_APP_TIMEZONE
  • FITATU_APP_OS

Zero-Bootstrap Login

The default path is now browserless and zero-bootstrap:

  • fitatu login --email ... --password ... can work with only credentials
  • the 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 login
  • those 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.py

Required live-smoke inputs:

  • FITATU_USERNAME
  • FITATU_PASSWORD
  • FITATU_LIVE_DATE
  • optionally FITATU_LIVE_MEAL and FITATU_LIVE_QUERY

Optional write smoke inputs:

  • FITATU_LIVE_PRODUCT_ID
  • FITATU_LIVE_MEASURE_ID
  • FITATU_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+
  • typer for the CLI
  • pydantic for public models
  • mcp for the MCP server
  • pytest for tests
  • ruff for linting

Checks:

ruff check .
python3 -m pytest

If you are changing CLI or MCP behavior, update this README in the same change.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured