프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Cronometer API MCP

제작자: rwestergren버전 0.2.6i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.rwestergren/cronometer-api-mcp

설치

개요

제작자가 쓴 설명(영어 원문)

MCP server for Cronometer nutrition tracking — food logs, diary, macros, fasting

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 클리닉 및 건강
  • 입력해야 할 값: CRONOMETER_USERNAME, CRONOMETER_PASSWORD, CRONOMETER_TOTP_SECRET

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: CRONOMETER_USERNAME, CRONOMETER_PASSWORD, CRONOMETER_TOTP_SECRET, CRONOMETER_ACCOUNT_TZ

비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.

필요한 것

  • PyPIPython의 uv 설치(uvx 명령어용)

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "cronometer-api": {
      "command": "uvx",
      "args": [
        "cronometer-api-mcp"
      ],
      "env": {
        "CRONOMETER_USERNAME": "your-value",
        "CRONOMETER_PASSWORD": "your-value",
        "CRONOMETER_TOTP_SECRET": "your-value",
        "CRONOMETER_ACCOUNT_TZ": "your-value"
      }
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add cronometer-api --env CRONOMETER_USERNAME=your-value --env CRONOMETER_PASSWORD=your-value --env CRONOMETER_TOTP_SECRET=your-value --env CRONOMETER_ACCOUNT_TZ=your-value -- uvx cronometer-api-mcp

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "cronometer-api": {
      "command": "uvx",
      "args": [
        "cronometer-api-mcp"
      ],
      "env": {
        "CRONOMETER_USERNAME": "your-value",
        "CRONOMETER_PASSWORD": "your-value",
        "CRONOMETER_TOTP_SECRET": "your-value",
        "CRONOMETER_ACCOUNT_TZ": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "cronometer-api": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "cronometer-api-mcp"
      ],
      "env": {
        "CRONOMETER_USERNAME": "your-value",
        "CRONOMETER_PASSWORD": "your-value",
        "CRONOMETER_TOTP_SECRET": "your-value",
        "CRONOMETER_ACCOUNT_TZ": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

직접 입력할 값

  • CRONOMETER_USERNAME 필수 env
    Your Cronometer account email
  • CRONOMETER_PASSWORD 비밀 필수 env
    Your Cronometer account password
  • CRONOMETER_TOTP_SECRET 비밀 env
    Base32 key for accounts with two-factor authentication
  • CRONOMETER_ACCOUNT_TZ env
    Optional IANA timezone override, for example America/Los_Angeles

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 rwestergren 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

클리닉 및 건강 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 858개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 858개 중 57%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 858개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Cronometer API MCP, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: CRONOMETER_USERNAME, CRONOMETER_PASSWORD, CRONOMETER_TOTP_SECRET

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.2.6)은 24일 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Mirobody, FHIR MCP Server, Google Health MCP

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Mirobody

제작자: thetahealth

Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.

내 컴퓨터에서 실행★ 1,408Apache-2.05일 전 업데이트
설치

FHIR MCP Server

제작자: wso2

MCP server providing seamless access to FHIR APIs for AI tools and healthcare applications

내 컴퓨터에서 실행★ 137Apache-2.08일 전 업데이트
설치

Google Health MCP

제작자: davidmosiah

Privacy-first unofficial Google Health API v4 MCP server for health, sleep, activity, HR agents

내 컴퓨터에서 실행★ 79MIT4개월 전 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

cronometer-api-mcp

Hosted version for Claude.ai, ChatGPT, and Grok coming soon. Join the waitlist →

An MCP (Model Context Protocol) server for Cronometer nutrition tracking, built on the reverse-engineered mobile REST API.

Unlike 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
  • Biometrics -- weight, body fat, heart rate, and other tracked metrics over a date range

Quick Start

1. Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
2. Set credentials
export CRONOMETER_USERNAME="your@email.com"

export CRONOMETER_PASSWORD="your-password"

Optional: two-factor authentication

If the account has two-factor authentication enabled, /api/v2/login answers TOTP_CODE_REQUIRED unless the request carries the current 6-digit code. Give the server the base32 key that Cronometer showed when 2FA was set up (the same key you scanned into your authenticator app) and it derives the code itself at every login (RFC 6238, SHA-1, 30 s period):

export CRONOMETER_TOTP_SECRET="ABCD EFGH IJKL MNOP QRST UVWX YZ23 4567"

Spaces and lowercase are fine. Leave it unset for accounts without 2FA.

Optional: override the account timezone

Diary entries are stamped in your Cronometer account's timezone, which the server reports at login. If that zone is wrong (for example, an older build had reset it) you can force a specific IANA zone without changing your account settings:

export CRONOMETER_ACCOUNT_TZ="America/Los_Angeles"

When set, this takes precedence over both the value reported at login and any cached session, so it also overrides a stale cached timezone.

3. Configure your MCP client

uvx downloads and runs the server on demand -- no separate install step.

OpenCode (opencode.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}", "CRONOMETER_TOTP_SECRET": "{env:CRONOMETER_TOTP_SECRET}", "CRONOMETER_ACCOUNT_TZ": "{env:CRONOMETER_ACCOUNT_TZ}" }, "enabled": true } } }

Claude Desktop (claude_desktop_config.json)
{

"mcpServers": { "cronometer": { "command": "uvx", "args": ["cronometer-api-mcp"], "env": { "CRONOMETER_USERNAME": "your@email.com", "CRONOMETER_PASSWORD": "your-password", "CRONOMETER_TOTP_SECRET": "your-base32-key", "CRONOMETER_ACCOUNT_TZ": "America/Los_Angeles" } } } }

Available Tools

Food Log & Nutrition
ToolDescription
get_food_logDiary entries for a date, each enriched with food name, source, serving measure/count, and that food's per-entry nutrient contribution, plus an energy_summary (target/consumed/remaining kcal) and a nutrition_summary of consumed totals for every tracked nutrient
get_daily_nutritionConsumed macro and micronutrient totals for every nutrient tracked in Cronometer
get_nutrition_scoresCategory scores (Vitamins, Minerals, etc.) with per-nutrient consumed amounts and confidence levels
Food Search & Details
ToolDescription
search_foodsSearch the Cronometer food database by name
get_food_detailsFull nutrition profile and serving sizes for a food
Diary Management
ToolDescription
add_food_entryLog a food serving to the diary
remove_food_entryRemove one or more diary entries
add_custom_foodCreate a custom food with specified nutrition and optional barcodes
update_custom_foodEdit a custom food in place: name, nutrition, serving size, or barcodes
delete_custom_foodRetire a custom food so it leaves search and the Custom Foods list (existing diary entries are kept)
add_recipeCreate a recipe from existing foods referenced by ID and gram weight
import_recipeCreate a recipe from a free-text ingredient list; Cronometer matches each line to a database food and converts the amount to grams
copy_dayCopy all entries from the previous day
mark_day_completeMark a diary day as complete or incomplete
Targets & Tracking
ToolDescription
get_macro_targetsWeekly macro schedule and saved target templates
get_fasting_historyFasting history within a date range
get_fasting_statsAggregate fasting statistics
list_biometricsList trackable biometric metrics and their units
get_biometricsBiometric time series (e.g. weight, body fat) within a date range

All date parameters use YYYY-MM-DD format and default to today when omitted.

Relative dates and recent days

get_food_log, get_daily_nutrition, and get_nutrition_scores also accept "today", "yesterday", and "N days ago" as their date. These are resolved at call time using your Cronometer account timezone, so Claude can pass relative inputs without relying on dates from earlier in a long conversation.

get_food_log and get_daily_nutrition accept days (1–31, default 1), counting back from the inclusive end date:

get_food_log(date="yesterday")

get_nutrition_scores(date="3 days ago") get_daily_nutrition(days=3) # Last 3 days, including today get_daily_nutrition(date="yesterday", days=3) # Previous 3 complete calendar days get_food_log(days=7) # Recent meals, including today

For “my calories the last few days,” use get_daily_nutrition(days=3). Single-day responses retain their existing shape. Multi-day responses contain start_date, end_date, and a days list of daily results, oldest first. Returned dates are always concrete YYYY-MM-DD values.

Transport

stdio only. For remote/hosted use, the stdio server is wrapped by supergateway (see Dockerfile), which owns the HTTP listener and exposes MCP streamable-HTTP at /mcp. The server has no built-in authentication — any remote deployment must sit behind an authenticating gateway or reverse proxy.

Development

For local development, copy .env.example to .env and fill in your credentials:

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, biometrics)
  • **v3 (DELETE /api/v3/user/{id}/*)** -- Header-based auth (x-crono-session), used for diary entry deletion

Recipe import is the one asynchronous operation: import_recipe returns a job id, and poll_async_result is polled until the server reports 100% progress and attaches the parsed ingredients.

Python API

You can use the client directly:

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(results0)

Log a serving

client.add_serving( food_id=food["id"], measure_id=food["defaultMeasureId"], grams=200, )

Get today's diary

diary = client.get_diary()

Import a recipe from a free-text ingredient list

recipe = client.import_recipe("one hot dog\nketchup\nbun") print(recipe["food_id"], recipe["ingredients"])

Parse without saving, to review the matches first

preview = client.import_recipe("2 tbsp olive oil\n200g chicken", save=False)

Get nutrition scores

scores = client.get_nutrition_scores()

License

MIT

PopNx에게 묻기