MCP server for Cronometer nutrition tracking via the mobile REST API
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
claude mcp add cronometer-api-mcp -- uvx cronometer-api-mcp{
"mcpServers": {
"cronometer-api-mcp": {
"command": "uvx",
"args": ["cronometer-api-mcp"],
"env": {
"CRONOMETER_USERNAME": "<cronometer_username>",
"CRONOMETER_PASSWORD": "<cronometer_password>",
"MCP_BASE_URL": "<mcp_base_url>"
}
}
}
}CRONOMETER_USERNAMECRONOMETER_PASSWORDMCP_BASE_URLResumen de MCP Servers
# cronometer-api-mcp
<!-- mcp-name: io.github.rwestergren/cronometer-api-mcp -->
[](https://opensource.org/licenses/MIT)
[](https://github.com/rwestergren/cronometer-api-mcp/actions/workflows/ci.yml)
[](https://github.com/rwestergren/cronometer-api-mcp/actions/workflows/docker.yml)
[](https://pypi.org/project/cronometer-api-mcp/)
> **Hosted version for Claude.ai, ChatGPT, and Grok coming soon.** [**Join the waitlist →**](https://tally.so/r/A7WVge?ref=cronometer-api-mcp)
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server for [Cronometer](https://cronometer.com/) nutrition tracking, built on the reverse-engineered mobile REST API.
Unlike [cronometer-mcp](https://github.com/cphoskins/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
## Quick Start
### 1. Install [uv](https://docs.astral.sh/uv/)
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
### 2. Set credentials
```bash
export CRONOMETER_USERNAME="your@email.com"
export CRONOMETER_PASSWORD="your-password"
```
### 3. Configure your MCP client
`uvx` downloads and runs the server on demand -- no separate install step.
#### OpenCode (`opencode.json`)
```json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"cronometer": {
"type": "local",
"command": ["uvx", "cronometer-api-mcp"],
"environment": {
"CRONOMETER_USERNAME": "{env:CRONOMETER_USERNAME}",
"CRONOMETER_PASSWORD": "{env:CRONOMETER_PASSWORD}"
},
"enabled": true
}
}
}
```
#### Claude Desktop (`claude_desktop_config.json`)
```json
{
"mcpServers": {
"cronometer": {
"command": "uvx",
"args": ["cronometer-api-mcp"],
"env": {
"CRONOMETER_USERNAME": "your@email.com",
"CRONOMETER_PASSWORD": "your-password"
}
}
}
}
```
## Available Tools
### Food Log & Nutrition
| Tool | Description |
|------|-------------|
| `get_food_log` | Diary entries for a date with food names, amounts, and meal groups, plus an energy_summary (target/consumed/remaining kcal) and a nutrition_summary of consumed totals for every tracked nutrient |
| `get_daily_nutrition` | Consumed macro and micronutrient totals for every nutrient tracked in Cronometer |
| `get_nutrition_scores` | Category scores (Vitamins, Minerals, etc.) with per-nutrient consumed amounts and confidence levels |
### Food Search & Details
| Tool | Description |
|------|-------------|
| `search_foods` | Search the Cronometer food database by name |
| `get_food_details` | Full nutrition profile and serving sizes for a food |
### Diary Management
| Tool | Description |
|------|-------------|
| `add_food_entry` | Log a food serving to the diary |
| `remove_food_entry` | Remove one or more diary entries |
| `add_custom_food` | Create a custom food with specified nutrition |
| `copy_day` | Copy all entries from the previous day |
| `mark_day_complete` | Mark a diary day as complete or incomplete |
### Targets & Tracking
| Tool | Description |
|------|-------------|
| `get_macro_targets` | Weekly macro schedule and saved target templates |
| `get_fasting_history` | Fasting history within a date range |
| `get_fasting_stats` | Aggregate fasting statistics |
All date parameters use `YYYY-MM-DD` format and default to today when omitted.
## Remote Deployment
The server supports remote deployment with OAuth 2.1 authorization (PKCE) for use with Claude.ai and other remote MCP clients.
### Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `CRONOMETER_USERNAME` | Yes | Cronometer account email |
| `CRONOMETER_PASSWORD` | Yes | Cronometer account password |
| `MCP_TRANSPORT` | No | Transport mode: `stdio` (default), `sse`, or `streamable-http` |
| `MCP_AUTH_TOKEN` | No | Bearer token for remote auth (enables OAuth flow) |
| `MCP_OAUTH_CLIENT_ID` | No | OAuth client ID for remote clients |
| `MCP_OAUTH_CLIENT_SECRET` | No | OAuth client secret for remote clients |
| `MCP_BASE_URL` | No | Public base URL for OAuth metadata endpoints |
| `PORT` | No | Listen port for remote transports (default 8000) |
### Dokku / Heroku Deployment
The project includes a `Procfile` and `.python-version` for direct deployment with the Heroku Python buildpack:
```bash
# Create app
dokku apps:create cronometer-api-mcp
# Set environment
dokku config:set cronometer-api-mcp \
MCP_TRANSPORT=streamable-http \
MCP_AUTH_TOKEN=$(openssl rand -hex 32) \
MCP_OAUTH_CLIENT_ID=my-client \
MCP_OAUTH_CLIENT_SECRET=$(openssl rand -hex 32) \
MCP_BASE_URL=https://your-domain.com \
CRONOMETER_USERNAME=your@email.com \
CRONOMETER_PASSWORD=your-password
# Deploy
git push dokku main
```
### Claude.ai Remote Connection
When deployed remotely with OAuth configured, connect from Claude.ai using:
- **Server URL**: `https://your-domain.com/mcp`
- **OAuth Client ID**: Value of `MCP_OAUTH_CLIENT_ID`
- **OAuth Client Secret**: Value of `MCP_OAUTH_CLIENT_SECRET`
Claude.ai will open a browser tab for authorization. Click **Authorize** to complete the connection.
## Development
For local development, copy `.env.example` to `.env` and fill in your credentials:
```bash
cp .env.example .env
# edit .env
uv run cronometer-api-mcp
```
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:
1. Static analysis of `libapp.so` (Dart AOT snapshot) from the APK to discover endpoint names
2. Traffic interception via Frida + mitmproxy to capture exact request/response formats
3. 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)
- **v3 (`DELETE /api/v3/user/{id}/*`)** -- Header-based auth (`x-crono-session`), used for diary entry deletion
## Python API
You can use the client directly:
```python
from cronometer_api_mcp.client import CronometerClient
from datetime import date
client = CronometerClient()
# Search for foods
results = client.search_food("chicken breast")
# Get food details
food = client.get_food(results[0]["id"])
# Log a serving
client.add_serving(
food_id=food["id"],
measure_id=food["defaultMeasureId"],
grams=200,
)
# Get today's diary
diary = client.get_diary()
# Get nutrition scores
scores = client.get_nutrition_scores()
```
## License
MIT
Lo que la gente pregunta sobre cronometer-api-mcp
¿Qué es rwestergren/cronometer-api-mcp?
+
rwestergren/cronometer-api-mcp es mcp servers para el ecosistema de Claude AI. MCP server for Cronometer nutrition tracking via the mobile REST API Tiene 17 estrellas en GitHub y se actualizó por última vez 2d ago.
¿Cómo se instala cronometer-api-mcp?
+
Puedes instalar cronometer-api-mcp clonando el repositorio (https://github.com/rwestergren/cronometer-api-mcp) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar rwestergren/cronometer-api-mcp?
+
Nuestro agente de seguridad ha analizado rwestergren/cronometer-api-mcp y le ha asignado un Trust Score de 79/100 (tier: Trusted). Revisa el desglose completo de comprobaciones superadas y flags en esta página.
¿Quién mantiene rwestergren/cronometer-api-mcp?
+
rwestergren/cronometer-api-mcp es mantenido por rwestergren. La última actividad registrada en GitHub es de 2d ago, con 1 issues abiertos.
¿Hay alternativas a cronometer-api-mcp?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega cronometer-api-mcp en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/rwestergren-cronometer-api-mcp)<a href="https://claudewave.com/repo/rwestergren-cronometer-api-mcp"><img src="https://claudewave.com/api/badge/rwestergren-cronometer-api-mcp" alt="Featured on ClaudeWave: rwestergren/cronometer-api-mcp" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!
⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。