
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 分