mcpField
C
Cronometer

Cronometer

本地服务
github.com/ekelly95健康医疗01 周前更新

关于 Cronometer

Cronometer MCP 将 MCP 客户端连接到 Cronometer 账户,用于查看营养数据和管理日记记录。它区分未报告的营养素与零值,并要求写入操作获批;项目使用可能变化的非公开接口。

主要功能

  1. 01读取日记条目、目标和剩余量
  2. 02按覆盖率统计营养素,不将缺失视为零
  3. 03查看食物、生物指标、禁食和运动
  4. 04经批准添加、编辑和删除记录
  5. 05导出并分析较长日期范围的数据

适用场景

  1. 01查看已记录饮食和每日目标余量
  2. 02检查每周微量营养素及其覆盖缺口
  3. 03经批准记录餐食或更新日记

MCP 相关

向 MCP 客户端提供 Cronometer 日记、营养、导出和账户管理工具。写入操作需要批准,部分破坏性操作还需明确确认。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ekelly95-cronometer": {
"command": "npx",
"args": [
"-y",
"@ekelly95/cronometer-mcp"
],
"env": {
"CRONOMETER_USERNAME": "<CRONOMETER_USERNAME>",
"CRONOMETER_PASSWORD": "<CRONOMETER_PASSWORD>",
"CRONOMETER_LIVE_ENABLED": "<CRONOMETER_LIVE_ENABLED>",
"CRONOMETER_TOTP_SECRET": "<CRONOMETER_TOTP_SECRET>",
"CRONOMETER_TIMEZONE": "<CRONOMETER_TIMEZONE>",
"CRONOMETER_READ_ONLY": "<CRONOMETER_READ_ONLY>"
}
}
}
}
启动命令npx -y @ekelly95/cronometer-mcp
需要配置的环境变量
CRONOMETER_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@ekelly95/cronometer-mcp1.0.2

工具

46

收录的工具列表 · 更新于 1 周前

此工具无需参数。

详细介绍

Cronometer MCP

verify npm license: MIT

适用于你的 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_scoresCronometer 的类别评分及其对各营养素的置信度
nutrient_radar31 种维生素、矿物质和氨基酸与成人参考摄入量的对比,用于生成图表

食物、目标、身体数据

工具
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_rawCronometer 的 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
维生素 D12 种中的 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 中。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。