Cronometer MCP server
Cronometer MCP server
Lesen und schreiben Sie Ihr Cronometer-Ernährungstagebuch von Claude.ai und Claude Code aus. Es spricht mit mobile.cronometer.com, derselben API, die auch die Cronometer-Android-App verwendet, und setzt einen OAuth-2.1-Login davor, sodass Sie es als benutzerdefinierten Connector zu Claude.ai hinzufügen können. Claude Code kann stattdessen ein einfaches Token verwenden. Sie benötigen kein Gold-Abonnement, und es gibt keine Begrenzung von zehn Exporten pro Tag wie beim CSV-Export.
Warum nicht die anderen Optionen
Die Terra API sendet Ihre Cronometer-Daten an einen Webhook, kann aber nur lesen, und Ihr Ernährungstagebuch läuft über die Server von jemand anderem.
gocronometerund ähnliche Export-Tools können nur lesen und sind ratenbegrenzt.Tools, die die Cronometer-Website auslesen, können schreiben, sind aber auf Codes angewiesen, die sich bei jedem Cronometer-Update ändern, und sie benötigen Gold.
Related MCP server: cronometer-api-mcp
Werkzeuge
Lesen
Tool | Was Sie erhalten |
| Alles im Tagebuch für einen Tag. Jedes Lebensmittel enthält seinen Namen, seine Herkunft, die Portionsgröße, die Anzahl der Portionen und was dieses Lebensmittel zu Ihren Nährstoffen beigetragen hat. Sie erhalten außerdem Kalorien (Ziel, verbraucht, übrig) und Summen für jeden Nährstoff, den Sie verfolgen |
| Nährstoffsummen für einen Tag |
| Die Ernährungswerte von Cronometer |
| Durchsuchen Sie die Lebensmitteldatenbank |
| Alle Nährstoffe und Portionsgrößen für ein Lebensmittel |
| Die Nährstoffziele, die neben Ihren Tagessummen angezeigt werden |
| Ihre Protein-, Kohlenhydrat- und Fettziele |
| Was Sie messen können und welche Einheiten jeweils akzeptiert werden |
| Eine Messung im Zeitverlauf |
| Fastenperioden zwischen zwei Daten |
| Fasten-Summen und -Durchschnitte |
| Jeder Nährstoff, den Sie bei einem benutzerdefinierten Lebensmittel festlegen können, mit Einheiten |
Schreiben
Tool | Was es tut |
| Ein Lebensmittel zu einer Mahlzeit hinzufügen |
| Ändern, wie viel Sie gegessen haben oder wann |
| Lebensmitteleinträge löschen |
| Erstellen Sie Ihr eigenes Lebensmittel mit bis zu allen 94 Nährstoffen |
| Ein benutzerdefiniertes Lebensmittel ausmustern oder zurückholen |
| Eine Notiz zu einem Tag hinzufügen |
| Eine Notiz neu schreiben |
| Eine Messung wie Gewicht oder Körperfett aufzeichnen |
| Eine fehlerhafte Messung korrigieren |
| Eine Übung hinzufügen |
| Ändern, wie lange eine Übung gedauert hat oder wie viele Kalorien sie verbrannt hat |
| Eine Fastenperiode aufzeichnen, abgeschlossen oder noch laufend |
| Zeiten oder Ziel einer Fastenperiode ändern, einschließlich Beenden einer noch laufenden Fastenperiode |
| Eine Fastenperiode löschen |
| Das Tagebuch eines Tages auf einen anderen Tag kopieren |
| Einen Tag als erledigt markieren oder als nicht erledigt |
Benutzerdefinierte Lebensmittel
add_custom_food akzeptiert ein Dict von Nährstoffname zu Menge, sodass Sie in einem einzigen Aufruf alles von einem Nährstoff bis zum gesamten Katalog übergeben können:
{
"name": "Vaasan Ruispalat",
"serving_name": "1 slice",
"serving_grams": 33,
"nutrients": {
"energy": 79, "protein": 3.1, "carbs": 12.5, "fiber": 3.4,
"fat": 0.8, "saturated": 0.2, "salt_g": 0.36,
"iron": 0.9, "magnesium": 26, "b1_thiamine": 0.09, "folate": 11
}
}Die Mengen gelten für eine ganze Portion, jeweils in der eigenen Einheit des Nährstoffs. Rufen Sie list_nutrients für die akzeptierten Namen auf; diese stammen aus dem Katalog Ihres Kontos und nicht aus einer hier fest verdrahteten Tabelle.
Ein Nährstoff, den Sie weglassen, bleibt in Cronometer leer. Wenn Sie stattdessen 0 übergeben, wird angegeben, dass das Lebensmittel nichts davon enthält. Die App behandelt beides unterschiedlich, also übergeben Sie nur, was Sie tatsächlich wissen. Ein nicht erkannter Name ist ein Fehler und wird nicht stillschweigend verworfen, denn ein Lebensmittel, das stillschweigend einen Nährstoff verloren hat, sieht immer noch vollständig aus.
Zwei Annehmlichkeiten, die das Lebensmitteletikett hat, der Katalog jedoch nicht: energy_kj wird in Kalorien umgerechnet und salt_g in Natrium. Übergeben Sie entweder das eine oder das andere, nicht beides.
Wie es zusammenspielt
Claude.ai / Claude Code
| HTTPS
Cloudflare Tunnel, or any proxy that gives you HTTPS
|
nginx 127.0.0.1:8431
|
auth-server.js :8432 handles the login and the tokens
|
cronometer-mcp :8430 the server itself, local only
|
mobile.cronometer.comDer Server selbst hat kein eigenes Login und weigert sich, auf etwas anderem als dem lokalen Rechner zu lauschen. Alles, was ihn erreicht, hat das Login also bereits passiert. Dieses Login akzeptiert entweder ein OAuth-Token, das Claude.ai für Sie einrichtet, oder ein festes Token, das für Claude Code schneller ist.
Installation
git clone https://github.com/rollecode/cronometer-mcp.git
cd cronometer-mcp
./install.shDer Installer richtet Python und Node ein, fragt nach Ihrem Cronometer-Login und einem Passwort für die Login-Seite des Connectors, erstellt ein Token und schreibt die Dienstdateien und die nginx-Site mit Ihrem eigenen Hostnamen und Benutzernamen.
Sie benötigen Node 18 oder neuer, Python 3.12 oder neuer und uv.
Den Server online zu bringen, bleibt Ihnen überlassen, denn genau hier unterscheiden sich die Setups am stärksten, und eine falsche Annahme würde Ihr Ernährungstagebuch ins öffentliche Internet stellen. Richten Sie einen Tunnel oder einen Proxy auf 127.0.0.1:8431. Mit Cloudflare Tunnel:
ingress:
- hostname: cronometer-mcp.example.com
service: http://localhost:8431Es muss HTTPS sein. OAuth funktioniert nicht über einfaches HTTP.
Selbsthosting von Hand
Wenn Sie lieber jeden Schritt sehen möchten, statt den Installer auszuführen, hier ist alles. Das Endergebnis sind zwei Dienste auf Ihrem eigenen Rechner, die über HTTPS erreichbar sind.
1. Code und Abhängigkeiten beschaffen
git clone https://github.com/rollecode/cronometer-mcp.git
cd cronometer-mcp
npm install --omit=dev
uv venv && uv pip install -e .2. Ihren Cronometer-Login speichern
./set-credentials.shEr fragt nach Ihrer E-Mail, Ihrem Passwort und Ihrer Zeitzone und schreibt sie in ~/.config/cronometer-mcp/env mit Modus 0600. Das Passwort wird nie angezeigt und gelangt nie in Ihre Shell-Historie. Falls Sie es lieber von Hand machen:
mkdir -p ~/.config/cronometer-mcp && chmod 700 ~/.config/cronometer-mcp
cat > ~/.config/cronometer-mcp/env <<'EOF'
CRONOMETER_USERNAME=you@example.com
CRONOMETER_PASSWORD=your-password
CRONOMETER_ACCOUNT_TZ=Europe/Helsinki
EOF
chmod 600 ~/.config/cronometer-mcp/envPrüfen Sie, ob es funktioniert, bevor Sie fortfahren. Dies meldet sich an und gibt Ihr Tagebuch aus:
set -a && . ~/.config/cronometer-mcp/env && set +a
.venv/bin/python -c "from cronometer_mcp import CronometerClient; c=CronometerClient(); print(c.get_diary()['summary'])"3. Connector-Passwort und Token festlegen
Das Passwort ist das, was Sie auf der Anmeldeseite eingeben, wenn Sie den Connector in Claude.ai hinzufügen. Nur sein scrypt-Hash wird gespeichert.
CONFIG_DIR=~/.config/cronometer-mcp node set-password.js 'your-password-here'Das Token ist die Abkürzung für Claude Code, das einen Header sendet und den Browser vollständig überspringt.
openssl rand -hex 32 > ~/.config/cronometer-mcp/token
chmod 600 ~/.config/cronometer-mcp/token4. Die zwei Dienste installieren
systemd/ enthält beide Unit-Dateien. Ersetzen Sie YOUR_USER durch Ihren Benutzernamen und cronometer-mcp.example.com durch Ihren Hostnamen, dann:
mkdir -p ~/.cache/cronometer-mcp
sudo cp systemd/cronometer-mcp.service systemd/cronometer-mcp-auth.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now cronometer-mcp cronometer-mcp-auth
systemctl status cronometer-mcp cronometer-mcp-authcronometer-mcp ist der Server selbst auf :8430, nur von dem Rechner aus erreichbar, auf dem er läuft. cronometer-mcp-auth ist die Login-Ebene auf :8432 und das Einzige, was mit :8430 spricht.
Eine Falle, die eine Erwähnung verdient, weil das Symptom verwirrend ist: Fügen Sie IPAddressDeny=any nicht zu cronometer-mcp.service hinzu. Es ist eine sinnvolle Härtungszeile für einen Server, der nur lokale Dateien liest, aber dieser muss mobile.cronometer.com erreichen. Mit dieser Einstellung hängt jeder Tool-Aufruf, bis er eine Zeitüberschreitung hat, während systemd den Dienst weiterhin als aktiv meldet. Es wird auch nichts dadurch gewonnen, da der Server sich ohnehin weigert, über den lokalen Rechner hinaus zu lauschen.
5. nginx davorstellen
sudo cp nginx/cronometer-mcp.conf /etc/nginx/sites-enabled/cronometer-mcp
sudo nginx -t && sudo systemctl reload nginxEr lauscht auf 127.0.0.1:8431 und leitet alles an die Login-Ebene weiter. Das lange Lese-Timeout und proxy_buffering off sind wichtig: Der MCP hält die Verbindung offen und sendet nach und nach, und Buffering würde ihn zum Stillstand bringen.
6. Eine HTTPS-Adresse vergeben
Ein Cloudflare Tunnel vermeidet das Öffnen eines Router-Ports. Jeder HTTPS-Reverse-Proxy funktioniert genauso gut.
ingress:
- hostname: cronometer-mcp.example.com
service: http://localhost:8431cloudflared tunnel route dns YOUR_TUNNEL cronometer-mcp.example.com
sudo systemctl restart cloudflared7. Von außen prüfen
curl https://cronometer-mcp.example.com/.well-known/oauth-authorization-server
curl -o /dev/null -w '%{http_code}\n' -X POST https://cronometer-mcp.example.com/mcpDie erste gibt die Login-Details zurück. Die zweite muss 401 zurückgeben: Alles andere bedeutet, dass die Login-Ebene umgangen wird und Ihr Tagebuch exponiert ist.
Verbinden Sie dann einen Client wie unter Verbinden beschrieben.
Aktualisieren
git pull
uv pip install -e . && npm install --omit=dev
sudo systemctl restart cronometer-mcp cronometer-mcp-authNachdem Sie ein Tool hinzugefügt oder umbenannt haben, klicken Sie am Connector in Claude.ai auf Reconnect.
Dadurch wird die Tool-Liste in einem bereits geöffneten Gespräch aktualisiert, und
Ihre Anmeldung übersteht dies, da die Tokens in oauth.db auf der Festplatte und nicht
im Speicher liegen.
Wenn etwas nicht stimmt
journalctl -u cronometer-mcp -n 50 --no-pager
journalctl -u cronometer-mcp-auth -n 50 --no-pagerWas Sie sehen | Was es normalerweise ist |
Tool-Aufrufe hängen, Dienst meldet aktiv |
|
| Token stimmt nicht überein, vergleichen Sie den Header mit |
Anmeldeseite lehnt das Passwort ab | Noch kein Hash gespeichert, führen Sie Schritt 3 aus |
Anmeldung schlägt fehl und fragt nach einem 2FA-Code | |
| Die Anmeldeschicht ist nicht verfügbar, |
Verbinden
Claude.ai. Gehen Sie zu Einstellungen, Connectors, Benutzerdefinierten Connector hinzufügen, und geben Sie https://your-host/mcp an. Lassen Sie Client-ID und Geheimnis leer. Melden Sie sich mit dem Passwort an, das der Installer festgelegt hat. Dies einmal zu tun, deckt Web, Desktop und Mobil ab, da Connectors zu Ihrem Konto gehören und nicht zu einem Gerät.
Claude Code, über den Browser:
claude mcp add --transport http cronometer https://your-host/mcp --scope userFühren Sie dann /mcp aus, um sich anzumelden.
Claude Code, mit einem Token, ohne Browser:
claude mcp add --transport http cronometer https://your-host/mcp \
--header "Authorization: Bearer $(cat ~/.config/cronometer-mcp/token)" \
--scope userVerwendung ganz ohne Server
Wenn Claude auf demselben Rechner läuft, überspringen Sie den Webserver und die Anmeldung vollständig und lassen Sie es das MCP direkt starten:
claude mcp add cronometer -- /path/to/cronometer-mcp/.venv/bin/cronometer-mcpEs liest Ihre Anmeldedaten aus ~/.config/cronometer-mcp/env oder aus einer .env-Datei.
Einstellungen
Variable | Zweck |
| Ihre Cronometer-E-Mail |
| Ihr Cronometer-Passwort |
| Die Zeitzone, in der Ihre Tagebuch-Tage gezählt werden |
| Ihr Zwei-Faktor-Geheimnis, nur wenn Sie Zwei-Faktor-Authentifizierung aktiviert haben. Benötigt das |
| Die öffentliche Adresse des Servers |
| Anmeldeserver-Port, standardmäßig 8432 |
| Wo der MCP-Server ist, standardmäßig |
| Wo Passwort, Token und Datenbank aufbewahrt werden |
| Wie lange ein Aufruf ruhig bleiben darf, bevor er abgebrochen wird, standardmäßig 120000 |
| MCP-Server-Port, standardmäßig 8430 |
| Öffentliche Adresse, mit der das Symbol gegenüber Clients beworben wird |
Alle geheimen Daten liegen in ~/.config/cronometer-mcp/, nur für Sie lesbar: env enthält Ihren Cronometer-Login, password-hash das Passwort für die Anmeldeseite des Connectors, token das feste Token und oauth.db die Apps und Tokens, die der Anmeldeserver ausgegeben hat. Tokens werden verschlüsselt gespeichert, daher gibt eine gestohlene Kopie der Datenbank niemandem einen funktionierenden Schlüssel.
Ihre Cronometer-Sitzung wird in ~/.cache/cronometer-mcp/session.json gespeichert, sodass ein Neustart des Servers nicht dazu führt, dass er sich wieder und wieder anmeldet und Cronometers Limit erreicht.
Wenn Sie Zwei-Faktor-Authentifizierung verwenden
Ein Server, der allein weiterläuft, kann keinen Code eingeben, also benötigt er stattdessen das Geheimnis hinter dem Code:
uv pip install -e '.[totp]'Setzen Sie dann CRONOMETER_TOTP_SECRET auf das Geheimnis aus Ihrer Authenticator-App. Ohne dieses Geheimnis schlägt die Anmeldung bei einem Konto mit aktivierter Zwei-Faktor-Authentifizierung fehl und genau das wird Ihnen mitgeteilt.
Am Code arbeiten
uv venv && uv pip install -e . && uv pip install pytest ruff
.venv/bin/python -m pytest tests -q
.venv/bin/python -m ruff check src/ tests/Danksagungen
Der Cronometer-Client entstand als Kopie von rwestergren/cronometer-api-mcp. Die Anmeldeschicht stammt von rollecode/obsidian-remote-mcp.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceEnables AI assistants to read and write MyFitnessPal data, including food diary, exercises, body measurements, nutrition goals, and water intake.MIT
- AlicenseAqualityBmaintenanceEnables nutrition tracking with Cronometer, including food logging, food search, diary management, and nutrition data retrieval via natural language.13MIT
- Alicense-qualityAmaintenanceConnect MyFitnessPal to Claude or any MCP client. Log meals, search food database with macros, track trends, and export nutrition history against your real MyFitnessPal diary.6MIT
- Alicense-qualityCmaintenanceEnables Claude.ai to read your MacroFactor nutrition data and log food back into MacroFactor.MIT
Related MCP Connectors
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rollecode/cronometer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server