
Cronometer Api Mcp
io.github.rwestergren由 GitHub 帳號 rwestergren 發布v0.2.6更新於 Oct 25, 2026
MCP server for Cronometer nutrition tracking — food logs, diary, macros, fasting
概覽
一個本機 MCP 伺服器,讓助理連接 Cronometer 帳戶,讀取飲食日記與營養資料、搜尋食物並管理日記項目。
- 可以做什麼
- 讀取某日或最近數日的飲食日記、每日巨量與微量營養素總量及營養評分,支援「昨天」「N 天前」等相對日期。搜尋 Cronometer 食物資料庫,取得完整營養檔案與份量資訊。新增或刪除日記項目、複製某日紀錄、將某日標記為完成或未完成。建立、編輯和停用自訂食物,並依食物 ID 或自由文字食材清單產生食譜。讀取巨量目標、斷食歷史與統計,以及體重、體脂等生理量測資料序列。
- 適用情境
- 適合在 Cronometer 記錄飲食、希望助理彙整攝取狀況、查看巨量或微量營養素、查詢食物,或不必開啟應用程式就能記錄與調整日記項目的使用者。
- 執行需求
- 透過 stdio 在本機執行,通常以 uvx 從 PyPI 套件啟動,因此需要 Python 工具(uv)。需要 Cronometer 帳戶電子郵件(CRONOMETER_USERNAME)與密碼(CRONOMETER_PASSWORD);啟用雙因素驗證的帳戶還需在 CRONOMETER_TOTP_SECRET 提供 base32 金鑰。可選 CRONOMETER_ACCOUNT_TZ 覆寫帳戶時區。需要連線至 Cronometer 行動版 API 的網路存取。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Cronometer Api Mcp,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
cronometer-api-mcp
[License: MIT] [CI] [Build Docker image] [PyPI]
Hosted version for Claude.ai, ChatGPT, and Grok coming soon. Join the waitlist →
An MCP (Model Context Protocol) server for Cronometer nutrition tracking, built on the reverse-engineered mobile REST API.
Unlike cronometer-mcp, which takes a comprehensive GWT-RPC approach against Cronometer's web backend, this server talks to the same JSON REST API used by the Cronometer Android app -- with clean payloads and stable, versioned endpoints.
Features
- Food log -- diary entries with food names, amounts, meal groups
- Nutrition data -- daily macro/micro totals and nutrition scores with per-nutrient confidence
- Food search -- search the Cronometer food database, get detailed nutrition info
- Diary management -- add/remove entries, copy days, mark days complete
- Custom foods -- create foods with custom nutrition data
- Macro targets -- read weekly schedule and saved templates
- Fasting -- view history and aggregate statistics
- Biometrics -- weight, body fat, heart rate, and other tracked metrics over a date range
Quick Start
1. Install uv
2. Set credentials
Optional: two-factor authentication
If the account has two-factor authentication enabled, /api/v2/login
answers TOTP_CODE_REQUIRED unless the request carries the current 6-digit
code. Give the server the base32 key that Cronometer showed when 2FA was set
up (the same key you scanned into your authenticator app) and it derives the
code itself at every login (RFC 6238, SHA-1, 30 s period):
Spaces and lowercase are fine. Leave it unset for accounts without 2FA.
Optional: override the account timezone
Diary entries are stamped in your Cronometer account's timezone, which the server reports at login. If that zone is wrong (for example, an older build had reset it) you can force a specific IANA zone without changing your account settings:
When set, this takes precedence over both the value reported at login and any cached session, so it also overrides a stale cached timezone.
3. Configure your MCP client
uvx downloads and runs the server on demand -- no separate install step.
OpenCode (opencode.json)
Claude Desktop (claude_desktop_config.json)
Available Tools
Food Log & Nutrition
Food Search & Details
Diary Management
Targets & Tracking
All date parameters use YYYY-MM-DD format and default to today when omitted.
Relative dates and recent days
get_food_log, get_daily_nutrition, and get_nutrition_scores also accept
"today", "yesterday", and "N days ago" as their date. These are resolved
at call time using your Cronometer account timezone, so Claude can pass relative
inputs without relying on dates from earlier in a long conversation.
get_food_log and get_daily_nutrition accept days (1–31, default 1), counting
back from the inclusive end date:
For “my calories the last few days,” use get_daily_nutrition(days=3).
Single-day responses retain their existing shape. Multi-day responses contain
start_date, end_date, and a days list of daily results, oldest first.
Returned dates are always concrete YYYY-MM-DD values.
Transport
stdio only. For remote/hosted use, the stdio server is wrapped by
supergateway (see Dockerfile),
which owns the HTTP listener and exposes MCP streamable-HTTP at /mcp. The
server has no built-in authentication — any remote deployment must sit
behind an authenticating gateway or reverse proxy.
Development
For local development, copy .env.example to .env and fill in your credentials:
The CLI auto-loads .env on startup (dev convenience only). Real environment variables always win over .env, so production deployments and MCP client env blocks are unaffected.
How It Works
This server communicates with mobile.cronometer.com -- the same REST API used by the Cronometer Android/Flutter app. The API was reverse-engineered through:
- Static analysis of
libapp.so(Dart AOT snapshot) from the APK to discover endpoint names - Traffic interception via Frida + mitmproxy to capture exact request/response formats
- Trial-and-error against the live API to confirm payload shapes
The API uses two protocols:
- v2 (
POST /api/v2/*) -- JSON-body auth, used for most operations (food search, diary read/write, nutrition, fasting, macros, biometrics) - v3 (
DELETE /api/v3/user/{id}/*) -- Header-based auth (x-crono-session), used for diary entry deletion
Recipe import is the one asynchronous operation: import_recipe returns a job id, and poll_async_result is polled until the server reports 100% progress and attaches the parsed ingredients.
Python API
You can use the client directly:
License
MIT
來源:README.md,提交 d76372f
工具
0版本歷史
4- v0.2.6最新Oct 13, 2026
- v0.2.5Oct 8, 2026
- v0.2.4Sep 24, 2026
- v0.2.3Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分