关于 Cronometer
Cronometer MCP 将 MCP 客户端连接到 Cronometer 账户,用于查看营养数据和管理日记记录。它区分未报告的营养素与零值,并要求写入操作获批;项目使用可能变化的非公开接口。
主要功能
- 01读取日记条目、目标和剩余量
- 02按覆盖率统计营养素,不将缺失视为零
- 03查看食物、生物指标、禁食和运动
- 04经批准添加、编辑和删除记录
- 05导出并分析较长日期范围的数据
适用场景
- 01查看已记录饮食和每日目标余量
- 02检查每周微量营养素及其覆盖缺口
- 03经批准记录餐食或更新日记
MCP 相关
向 MCP 客户端提供 Cronometer 日记、营养、导出和账户管理工具。写入操作需要批准,部分破坏性操作还需明确确认。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @ekelly95/cronometer-mcpCRONOMETER_USERNAMECronometer account email. Optional if `npx @ekelly95/cronometer-mcp setup` saved it.CRONOMETER_PASSWORD密钥Cronometer password. Optional if setup saved it to the OS keyring.CRONOMETER_LIVE_ENABLEDSet to 1 to accept the risks of unofficial access when using environment credentials.CRONOMETER_TOTP_SECRET密钥Base32 authenticator key, for accounts with two-factor sign-in.CRONOMETER_TIMEZONEDiary timezone, e.g. America/New_York. Defaults to the saved setup, else this computer's.CRONOMETER_READ_ONLYSet to 1 to offer no tool that can change the account.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
46收录的工具列表 · 更新于 1 周前
此工具无需参数。
详细介绍
Cronometer MCP
适用于你的 Cronometer 账户的 MCP 服务。询问 Claude(或任何 MCP 客户端)你吃了什么、今天还剩下什么,以及本周的微量营养素状况如何;还可以让它记录、编辑或删除日记条目,每次都需要你批准。
- 完整日记,含 ID。 食物、运动、备注和生物特征数据,均包含编辑和删除工具所需的 ID;还包括当天的目标、剩余量和消耗的能量。
- 如实呈现营养数据。 按食物逐项计算总量。食物未报告的营养素会计为缺失,而不是零——因此,“61 mg 镁”会显示为“至少 61 mg;12 种食物中只有 4 种报告了镁”,而 Cronometer 自己的总量会掩盖这一点。
- 安全写入。 每个会更改账户的工具都需要你批准;删除操作需要明确确认;超时的写入绝不会重试;只读模式则会彻底移除写入功能。
- 一条命令即可完成设置,密码会保存在操作系统的凭据存储中。也可作为 Claude Desktop 扩展运行,或作为安全的远程连接器供 claude.ai 和 Claude 手机应用使用。
重要
Cronometer 没有公开 API。本工具会以你的身份登录,并使用与 Cronometer 自有应用和网站相同的私有接口。这是非官方工具:Cronometer 更改接口时,本工具可能随时失效;Cronometer 也可能限制被检测到自动操作的账户。本工具与 Cronometer 无关联,也未获其认可。请参阅风险。
快速开始
需要 Node.js 20 或更高版本。
npx @ekelly95/cronometer-mcp setup
设置流程会说明风险,并要求你输入 ENABLE,然后询问你的 Cronometer 邮箱、密码、账户启用了双重验证时使用的身份验证器密钥,以及日记时区。它会先验证登录,再保存任何内容;密码会保存到 Keychain(macOS)、Secret Service 密钥环(Linux)或 DPAPI(Windows)中,并会询问是否将服务添加到 Claude Code、Claude Desktop 和 Codex。
重启客户端,然后询问:
- 我昨天吃了什么?离我的目标还有多远?
- 我今天还差多少蛋白质?
- 早餐帮我记录两个大号鸡蛋。
- 本周哪些微量营养素偏低?其中哪些无法确定,因为食物没有报告这些数据?
- 显示我过去 7 天的营养素雷达图。(生成图表;请参阅
/nutrient_radar)
随时运行 npx @ekelly95/cronometer-mcp doctor 检查设置。
其他运行方式
Claude Desktop 扩展。 从最新版本下载 cronometer-mcp.mcpb 并打开。Claude Desktop 会询问你的邮箱和密码,并将它们保存在操作系统的凭据存储中。
在客户端配置中提供凭据(适用于没有密钥环的客户端或容器):
{
"mcpServers": {
"cronometer": {
"command": "npx",
"args": ["-y", "@ekelly95/cronometer-mcp"],
"env": {
"CRONOMETER_USERNAME": "[email protected]",
"CRONOMETER_PASSWORD": "…",
"CRONOMETER_LIVE_ENABLED": "1",
"CRONOMETER_TIMEZONE": "America/New_York"
}
}
}
}
claude.ai 和手机应用。 cronometer-mcp remote-setup 会配置一个 Streamable HTTP 端点,使用专属的单用户 OAuth 登录,以用户服务的形式运行,并通过 Tailscale Funnel 等隧道发布。请参阅 docs/REMOTE.md。
| 变量 | 作用 |
|---|---|
CRONOMETER_READ_ONLY=1 | 不提供任何可更改账户的工具 |
CRONOMETER_TOTP_SECRET | 用于双重验证账户的身份验证器密钥(环境变量模式) |
CRONOMETER_TIMEZONE | 日记时区;默认为已保存的设置,否则使用计算机的时区 |
CRONOMETER_DATA_DIR | 设置、会话缓存和导出文件的存放位置 |
工具
46 个工具:24 个读取工具,22 个写入工具。日期可使用 YYYY-MM-DD、today、yesterday
或 N days ago,并按日记时区解析。
日记与营养
| 工具 | |
|---|---|
get_diary | 一天或最多 14 天:每条记录及其 ID、目标、摄入量、剩余量、消耗能量 |
get_daily_summary | 各营养素总量及其数据覆盖率,以及你的 Cronometer 目标 |
get_nutrition_scores | Cronometer 的类别评分及其对各营养素的置信度 |
nutrient_radar | 31 种维生素、矿物质和氨基酸与成人参考摄入量的对比,用于生成图表 |
食物、目标、身体数据
| 工具 | |
|---|---|
search_foods · get_food_details · lookup_barcode | 查找食物、计量单位和营养素 |
get_macro_targets · list_macro_templates | 某日期的目标、每周计划、已保存的模板 |
get_fasting_history · get_fasting_stats | 禁食记录和禁食统计 |
list_biometric_metrics · get_biometrics | 随时间变化的体重、体脂、血压…… |
search_activities · get_repeated_items | 运动活动 ID;自动重复添加的食物 |
较长时间范围和下载的导出文件
| 工具 | |
|---|---|
export_food_log · export_exercises · export_biometrics · export_notes · export_raw | Cronometer 的 CSV 导出,适用于最长一年的时间范围 |
list_exports · analyze_export | 对你下载的导出文件进行覆盖率分析,可按月查看 |
写入 — 每项操作都需要批准;⚠ 标记的操作还需要 confirm: true
| 工具 | |
|---|---|
add_food_entry · update_food_entry · ⚠ remove_diary_entries · ⚠ copy_day · mark_day_complete | 食物日记(删除操作适用于任何类型的条目) |
add_note · update_note · add_biometric · add_exercise | 备注、测量数据、运动 |
add_custom_food · update_custom_food · ⚠ retire_custom_food · add_recipe · import_recipe | 自定义食物和食谱,也可从自由文本创建 |
set_macro_targets · create_macro_template · ⚠ delete_macro_template · set_macro_schedule_day | 目标和每周计划 |
⚠ delete_fast · ⚠ cancel_active_fast · add_repeat_item · ⚠ delete_repeat_item | 禁食和重复食物 |
尚未通过实时账户验证的写入工具会在描述中注明这一点,并会指示模型读取结果进行核对。docs/PROTOCOL.md 列出了各工具调用的内容及已验证的项目。
缺失不等于零
Cronometer 会根据食物来源报告的内容保存该食物的营养素数据。某品牌产品的标签可能只列出八种营养素,而经过实验室分析的完整食物则可能列出九十种。Cronometer 汇总一天的数据时,会将食物未报告的营养素按零计,因此总量看起来完整,实际却并非如此。
get_daily_summary 会将这些情况区分开来。以下是一个虚构的日子,记录了 12 种食物:
| 营养素 | 有报告的食物 | 结果 |
|---|---|---|
| 能量 | 12 种中的 12 种 | 2,410 kcal — 实际总量 |
| 蛋白质 | 12 种中的 12 种 | 172 g |
| 维生素 D | 12 种中的 9 种 | 数据不足 — 至少 520 IU |
| 镁 | 12 种中的 4 种 | 数据不足 — 至少 61 mg |
只有当每种食物都报告了某项营养素(或达到你通过 coverage_threshold 选择的占比)时,该营养素才会显示为具体数值;否则会显示一个下限,说明其含义。没有记录任何内容的日子会单独列出,不会以零值计入平均值。雷达图也遵循相同规则:数据不完整的辐条会以虚线标示“至少”值,而无人报告的营养素则完全显示为无数据。这些信息不能用于诊断;它只报告记录的内容。
如何保障账户安全
- 每次写入都需批准。 写入工具带有 MCP 的破坏性/只读提示,以及
anthropic/requiresUserInteraction,因此 Claude Code 每次都会询问,无论处于何种 权限模式。删除和其他不可逆工具还要求confirm: true。 - 不会重复写入。 写入超时后会报告“结果未知——请检查 Cronometer 应用”,绝不重试。 只有 Cronometer 明确拒绝请求(401/403)时才会重新发送写入,这表示请求并未生效。
- 依据 ID,而非猜测。 编辑和删除操作使用
get_diary返回的 ID;如果 ID 不属于当天, 服务会拒绝操作。 - 不可信数据始终作为数据处理。 食物名称和备注会放在内容无法闭合的 JSON 编码围栏中返回,服务也会告知模型将其视为数据。
- 限制网络和存储范围。 仅通过 HTTPS 访问
cronometer.com和mobile.cronometer.com,并限制数据大小和请求时长。密码存储在操作系统凭据存储中;会话缓存以私有文件形式存放在私有目录中,权限为 600;所有错误和日志行都会对机密信息进行脱敏。 - 尽量减少对 Cronometer 的请求。 调用按顺序逐一执行,且两次调用之间设有最短间隔;会话会缓存,因此服务很少需要重新登录。
故障排除
| 症状 | 解决方法 |
|---|---|
| “Cronometer 尚未设置” | 在终端中运行 npx @ekelly95/cronometer-mcp setup |
| “双重身份验证” | 重新运行设置,并粘贴身份验证器的 base32 密钥 |
| “登录受到速率限制” | 等几分钟;正常使用时,会话缓存可避免此问题 |
| 未在密钥环中找到密码(Linux) | 确保 GNOME Keyring 或 KDE Wallet 正在运行且已解锁,并且已安装 secret-tool |
| 写入因不兼容而被拒绝 | Cronometer 更改了某些内容;请检查此软件包是否有更新版本 |
| 其他问题 | npx @ekelly95/cronometer-mcp doctor |
风险
- 非官方接口。 Cronometer 未发布 API。其 条款将使用限制为个人非商业用途,并允许在不事先通知的情况下终止访问。此工具仅供你用于自己的账户。
- 可能失效。 移动 API 需要应用版本号,可通过
CRONOMETER_APP_VERSION/CRONOMETER_APP_BUILD更新;Web 协议的构建哈希会自动发现。两者仍可能以只能通过新版本修复的方式发生变化。 - 导出受 Cronometer 的速率限制;
export_*工具用于较长时间范围,而get_diary无需使用这些工具即可覆盖最多 14 天的数据。 - 不构成医疗建议。 参考摄入量是群体数据,并非个人目标。
工作原理
该服务几乎所有操作都通过 Cronometer 的移动 API(Android 应用的 JSON 接口)进行;仅在 CSV 导出、宏量营养素模板、快速编辑和重复食物方面使用 Web 应用的 GWT-RPC 协议。docs/PROTOCOL.md 介绍了详细信息; docs/DATA_MODEL.md 描述了 CSV 导出的架构。
该项目基于两个采用 MIT 许可证的项目: Randy Westergren 编写的 cronometer-api-mcp,它建立了移动 API;以及 Paul Hoskins 编写的 cronometer-mcp,它建立了 Web 协议。请参阅 THIRD_PARTY_NOTICES.md。
开发
npm ci
npm run verify # typecheck + the full offline test suite
npm start # run the stdio server from source (after npm run build)
测试离线运行并使用合成测试数据;整个测试套件都不包含 Cronometer 凭据。发布前会在临时日记日期上手动检查实际行为 (docs/RELEASING.md)。更改记录在 CHANGELOG.md 中。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。