色度计mcp
一 MCP(模型上下文协议) 提供访问权限的服务器 计时器 营养数据。从Claude、Cursor或任何兼容MCP的客户端获取详细的食物日志、每日宏观/微观摘要、管理日记条目、禁食、生物识别和重复食物。
需要Cronometer Gold帐户 (或任何支持网络登录的付费层)。
特性
- 食物日志 --具有完整宏观和微量营养素分解的单个食物条目
- 日常营养 --每日卡路里、蛋白质、碳水化合物、脂肪和纤维总量
- 微量营养素 --详细的维生素/矿物质分解和周期平均值
- 日记管理 --添加/删除食物条目,复制整个日期,标记完成日期
- 经常性食物 --创建、列出和删除在选定日期自动登录的重复项目
- 宏观目标 --读/写每日目标,创建模板,设置每周时间表
- 禁食 --查看历史记录和统计数据,取消或删除斋戒
- 生物识别 --记录并去除体重、血糖、心率、体脂
- 原始CSV导出 --服务、每日总结、练习、生物识别或笔记
- 同步到磁盘 --下载JSON导出并生成markdown食物日志
快速开始
1.安装
pip install cronometer-mcp或者从源代码安装:
git clone https://github.com/cphoskins/cronometer-mcp.git
cd cronometer-mcp
pip install -e .2.设置凭据
export CRONOMETER_USERNAME="your@email.com"
export CRONOMETER_PASSWORD="your-password"或者将它们添加到 .env 项目根目录中的文件(如果您的MCP客户端支持的话)。
3.配置您的MCP客户端
克劳德代码(.mcp.json)
{
"mcpServers": {
"cronometer": {
"command": "cronometer-mcp",
"env": {
"CRONOMETER_USERNAME": "your@email.com",
"CRONOMETER_PASSWORD": "your-password"
}
}
}
}克劳德桌面(claude_desktop_config.json)
{
"mcpServers": {
"cronometer": {
"command": "cronometer-mcp",
"env": {
"CRONOMETER_USERNAME": "your@email.com",
"CRONOMETER_PASSWORD": "your-password"
}
}
}
}如果从源代码安装 pip install -e .,你也可以使用完整的Python路径:
{
"command": "/path/to/venv/bin/python",
"args": ["-m", "cronometer_mcp.server"]
}可用工具
食物日志与营养
| 工具 | 说明 |
|---|---|
get_food_log | 单个食品条目,带有日期范围的宏+微 |
get_daily_nutrition | 每日宏观总量(卡路里、蛋白质、碳水化合物、脂肪、纤维) |
get_micronutrients | 详细的维生素/矿物质分解和周期平均值 |
export_raw_csv | 任何数据类型(服务、锻炼、生物识别等)的原始CSV导出 |
食品搜索和日记管理
| 工具 | 说明 |
|---|---|
search_foods | 搜索Cronometer食品数据库 |
get_food_details | 获取食物的完整营养信息和服务措施ID |
add_food_entry | 在日记中添加食物条目 |
remove_food_entry | 从日记中删除食物条目 |
copy_day | 将所有日记条目从一个日期复制到另一个日期 |
set_day_complete | 将日记日标记为完整或不完整 |
重复性食物(重复项目)
| 工具 | 说明 |
|---|---|
get_repeated_items | 列出所有重复出现的食物条目 |
add_repeat_item | 添加在选定日期自动记录的重复食物条目 |
delete_repeat_item | 删除重复出现的食物条目 |
宏目标和模板
| 工具 | 说明 |
|---|---|
get_macro_targets | 获取每日宏观目标(或完整的每周时间表 target_date="all") |
set_macro_targets | 更新每日宏观目标(支持部分更新) |
list_macro_templates | 列出所有已保存的宏目标模板 |
create_macro_template | 创建新的已保存宏目标模板 |
set_weekly_macro_schedule | 将模板指定为一周中的几天作为重复默认值 |
禁食
| 工具 | 说明 |
|---|---|
get_fasting_history | 查看日期范围内的所有斋戒或斋戒 |
get_fasting_stats | 总禁食统计数据(总小时数、最长时间、平均值) |
cancel_active_fast | 快速取消正在进行的计划,同时保留定期计划 |
delete_fast | 删除快速条目 |
生物识别
| 工具 | 说明 |
|---|---|
get_recent_biometrics | 获取最近记录的生物特征条目 |
add_biometric | 记录体重(磅)、血糖(mg/dL)、心率(bpm)或体脂(%) |
remove_biometric | 删除生物特征条目 |
同步
| 工具 | 说明 |
|---|---|
sync_cronometer | 下载JSON导出+将food-log.md生成到磁盘 |
刀具参数
使用所有日期参数 YYYY-MM-DD 格式。当省略日期时,大多数工具默认为今天或过去7天。
关键参数模式:
diary_group--其中之一"Breakfast","Lunch","Dinner","Snacks"不区分大小写days_of_week—"all","weekdays","weekends",或逗号分隔的日期数字(0=阳光穿过6星期六measure_id--通行证0使用通用的基于克的测量方法(适用于所有食物来源)target_date--通行证"all"上get_macro_targets获取完整的每周日程安排
同步输出
这 sync_cronometer 工具将文件保存到 ~/.local/share/cronometer-mcp/ 默认情况下。用覆盖 CRONOMETER_DATA_DIR 环境变量:
export CRONOMETER_DATA_DIR="/path/to/your/project/data/cronometer"输出文件:
exports/servings_{start}_{end}.jsonexports/daily_summary_{start}_{end}.jsonexports/servings_latest.jsonexports/daily_summary_latest.jsonfood-log.md
运作原理
Croometer没有针对个人用户的公共API。此服务器使用与Cronometer Web应用程序内部使用的GWT-RPC(Google Web Toolkit远程过程调用)协议相同的协议:
- 获取登录页面以获取反CSRF令牌
- 用于身份验证的POST凭据
- 调用GWT-RPC
authenticate获取用户ID - 调用GWT-RPC
generateAuthorizationToken适用于短期出口代币 - 使用令牌下载CSV导出
- 直接调用GWT-RPC方法进行日记编辑、禁食、生物识别、宏观目标和重复项目
会话Cookie将持久化到 ~/.local/share/cronometer-mcp/.session_cookies 以便后续调用重用会话而无需重新认证(Cronometer具有严格的登录速率限制)。
GWT魔术价值观
GWT协议使用排列哈希和标头值,这些值被烘焙到每个Cronometer web部署中。这些值在客户端中是硬编码的 当Cronometer推送新版本时可能会中断.
当前值(截至2026年2月):
- 置换:
7B121DC5483BF272B1BC1916DA9FA963 - 头球
2D6A926E3729946302DC68073CB0D550
如果身份验证开始失败并出现GWT错误,则这些值可能需要更新。您可以通过以下方式找到当前值:
- 在浏览器中打开Cronometer
- 转到开发人员工具→ 网络选项卡
- 寻找请求
cronometer.com/cronometer/app - 检查
x-gwt-permutation报头和有效载荷结构
您可以通过以下方式覆盖它们 CronometerClient 构造函数:
from cronometer_mcp import CronometerClient
client = CronometerClient(
gwt_permutation="NEW_PERMUTATION_HASH",
gwt_header="NEW_HEADER_VALUE",
)Python API
你也可以直接在Python中使用客户端:
from datetime import date, timedelta
from cronometer_mcp import CronometerClient
client = CronometerClient() # reads from env vars
# Get today's food log
foods = client.get_food_log()
# Get last 7 days of daily summaries
start = date.today() - timedelta(days=7)
summaries = client.get_daily_summary(start)
# Raw CSV export
csv_text = client.export_raw("exercises", start, date.today())
# Copy a day's diary entries
client.copy_day(date(2026, 3, 1), date(2026, 3, 8))
# Add a recurring food entry (every weekday)
client.add_repeat_item(
food_source_id=12345,
measure_id=0, # universal gram-based measure
quantity=200,
food_name="Oatmeal",
diary_group=1, # Breakfast
days_of_week=[1, 2, 3, 4, 5],
)
# Log a biometric
client.add_biometric("weight", 218.5, date.today())许可证
麻省理工学院
