anatome
Log workouts and meals by telling your AI. 873 exercises, muscle diagrams, food lookup.
使うべきか
品質と安全性
検出事項(3)
- HIGH
- MEDIUMlog_body_metric 内
- LOWlookup_barcode 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"anatome": {
"url": "https://anatome.dev/mcp"
}
}
}リモートエンドポイント
https://anatome.dev/mcpstreamable-httpできること
ツール一覧
ツール(36)
🟢search_exercises(q, muscle, equipment, level, limit, ...)
Search 873 exercises by name with muscle/equipment/level filters. Rows are lean (name, ext_id, equipment, level, muscles) — enough to pick one; get_exercise returns instructions and media. Paginates: pass next_cursor back as `cursor`.
入力スキーマ
{
"type": "object",
"properties": {
"q": {
"type": "string"
},
"muscle": {
"type": "string"
},
"equipment": {
"type": "string"
},
"level": {
"type": "string"
},
"limit": {
"type": "number",
"default": 20
},
"cursor": {
"type": "string",
"description": "next_cursor from the previous response. Omit for the first page."
},
"fields": {
"type": "string",
"description": "Extra fields, comma-separated, or `all`."
}
},
"required": [
"q"
]
}出力スキーマ
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object"
}
},
"total_matched": {
"type": "number"
},
"next_cursor": {
"type": "string"
}
}
}🟢get_exercise(name, id, random)
Fetch one exercise by name, id, or random.
入力スキーマ
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"id": {
"type": "string"
},
"random": {
"type": "boolean"
}
}
}🟢resolve_exercise(exercise)
Resolve an exercise name into primary/secondary muscle layers for rendering.
入力スキーマ
{
"type": "object",
"properties": {
"exercise": {
"type": "string"
}
},
"required": [
"exercise"
]
}🟢list_muscles
List all 23 supported muscle slugs with anatomical names.
入力スキーマ
{
"type": "object",
"properties": {}
}⚪generate_muscle_image(gender, view, layers)
Render an SVG diagram of the human body with muscles highlighted in arbitrary colors. Returns SVG.
入力スキーマ
{
"type": "object",
"properties": {
"gender": {
"type": "string",
"enum": [
"male",
"female"
]
},
"view": {
"type": "string",
"enum": [
"front",
"back",
"dual"
]
},
"layers": {
"type": "array"
}
},
"required": [
"layers"
]
}出力スキーマ
{
"type": "object",
"properties": {
"svg": {
"type": "string"
},
"format": {
"type": "string"
},
"muscles_rendered": {
"type": "array"
}
}
}🟢list_routines(difficulty, goal, split_type, days_per_week, limit)
Browse the curated workout routine library (PPL, upper/lower, full-body, 5x5, etc.). Filter by difficulty, goal, split_type, days_per_week. Returns minimal list.
入力スキーマ
{
"type": "object",
"properties": {
"difficulty": {
"type": "string",
"enum": [
"beginner",
"intermediate",
"advanced"
]
},
"goal": {
"type": "string",
"enum": [
"strength",
"hypertrophy",
"general",
"endurance",
"weight_loss"
]
},
"split_type": {
"type": "string",
"enum": [
"full_body",
"upper_lower",
"push_pull_legs",
"push_pull",
"bro",
"custom"
]
},
"days_per_week": {
"type": "number"
},
"limit": {
"type": "number",
"default": 20
}
}
}🟢get_routine(slug)
Fetch a single curated routine by slug with all days + slots fully expanded (exercises, sets, reps ranges, rest, superset groupings). The 'give me a full program' tool.
入力スキーマ
{
"type": "object",
"properties": {
"slug": {
"type": "string"
}
},
"required": [
"slug"
]
}⚪instantiate_routine(idempotency_key, routine_id, start_date, cadence_days)
Schedule the signed-in user's routine into planned workouts from start_date. Coach assignment of another user is REST-only.
入力スキーマ
{
"type": "object",
"properties": {
"idempotency_key": {
"type": "string"
},
"routine_id": {
"type": "string"
},
"start_date": {
"type": "string",
"description": "YYYY-MM-DD"
},
"cadence_days": {
"type": "number",
"default": 1
}
},
"required": [
"routine_id",
"start_date"
]
}🟢search_foods(q, locale, page_size)
Search food products by name (Open Food Facts + USDA). Returns macros per 100g.
入力スキーマ
{
"type": "object",
"properties": {
"q": {
"type": "string"
},
"locale": {
"type": "string"
},
"page_size": {
"type": "number"
}
},
"required": [
"q"
]
}出力スキーマ
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object"
}
},
"count": {
"type": "number"
}
}
}🟢lookup_barcode(barcode)
Lookup a food product by EAN/UPC barcode.
入力スキーマ
{
"type": "object",
"properties": {
"barcode": {
"type": "string"
}
},
"required": [
"barcode"
]
}出力スキーマ
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"barcode": {
"type": "string"
},
"message": {
"type": "string"
}
}
}⚪log_workout(idempotency_key, date, title, primary_sport, sets)
Log a workout with exercise sets (strength or cardio unified). Requires an app user context.
入力スキーマ
{
"type": "object",
"properties": {
"idempotency_key": {
"type": "string"
},
"date": {
"type": "string"
},
"title": {
"type": "string"
},
"primary_sport": {
"type": "string"
},
"sets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"exercise_name": {
"type": "string"
},
"set_number": {
"type": "number"
},
"reps": {
"type": "number"
},
"weight": {
"type": "number"
},
"duration_seconds": {
"type": "number"
},
"distance_m": {
"type": "number"
},
"rpe": {
"type": "number"
},
"rest_seconds": {
"type": "number"
},
"notes": {
"type": "string"
},
"completed": {
"type": "boolean"
}
}
}
}
},
"required": [
"date"
]
}出力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"date": {
"type": "string"
},
"title": {
"type": "string"
}
}
}🟢get_workouts(limit, date_from, date_to)
List the current app user's workouts (most recent first).
入力スキーマ
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"default": 20
},
"date_from": {
"type": "string"
},
"date_to": {
"type": "string"
}
}
}出力スキーマ
{
"type": "object",
"properties": {
"items": {
"type": "array"
}
}
}⚪log_meal(idempotency_key, date, meal_type, name, calories, ...)
Log a meal (calories + macros + optional ingredients) for the current app user.
入力スキーマ
{
"type": "object",
"properties": {
"idempotency_key": {
"type": "string"
},
"date": {
"type": "string"
},
"meal_type": {
"type": "string"
},
"name": {
"type": "string"
},
"calories": {
"type": "number"
},
"protein": {
"type": "number"
},
"carbs": {
"type": "number"
},
"fats": {
"type": "number"
}
},
"required": [
"date",
"name",
"calories"
]
}出力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"date": {
"type": "string"
},
"name": {
"type": "string"
},
"calories": {
"type": "number"
},
"protein": {
"type": "number"
},
"carbs": {
"type": "number"
},
"fats": {
"type": "number"
}
}
}🟢get_meals(date_from, date_to)
List the current app user's meals for a date range.
入力スキーマ
{
"type": "object",
"properties": {
"date_from": {
"type": "string"
},
"date_to": {
"type": "string"
}
}
}出力スキーマ
{
"type": "object",
"properties": {
"items": {
"type": "array"
}
}
}⚪log_water(idempotency_key, date, amount_ml)
Log water intake (ml) for the current app user.
入力スキーマ
{
"type": "object",
"properties": {
"idempotency_key": {
"type": "string"
},
"date": {
"type": "string"
},
"amount_ml": {
"type": "number"
}
},
"required": [
"date",
"amount_ml"
]
}出力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"date": {
"type": "string"
},
"ml": {
"type": "number"
}
}
}⚪log_body_metric(idempotency_key, date, metric_type, value, unit, ...)
Log a body measurement. metric_type: weight (kg), height (cm), body_fat (%), muscle_mass (kg), waist/chest/bicep/forearm/hip/thigh/calf/neck/shoulder (cm), bmi, resting_hr (bpm). Logging weight enables bodyweight-inclusive volume analytics.
入力スキーマ
{
"type": "object",
"properties": {
"idempotency_key": {
"type": "string"
},
"date": {
"type": "string"
},
"metric_type": {
"type": "string"
},
"value": {
"type": "number"
},
"unit": {
"type": "string"
},
"notes": {
"type": "string"
}
},
"required": [
"date",
"metric_type",
"value",
"unit"
]
}出力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"date": {
"type": "string"
},
"metric_type": {
"type": "string"
},
"value": {
"type": "number"
}
}
}🟢get_body_metrics(metric_type, from, to, limit)
List the current app user's body metrics / measurements (weight, height, bicep, body fat, etc.), most recent first. Filter by metric_type (e.g. 'weight', 'bicep') and/or a date range. Requires an app user context.
入力スキーマ
{
"type": "object",
"properties": {
"metric_type": {
"type": "string"
},
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"limit": {
"type": "number",
"default": 100
}
}
}出力スキーマ
{
"type": "object",
"properties": {
"items": {
"type": "array"
}
}
}🟡upsert_profile(goal, height, weight, unit_system, language, ...)
Upsert the current app user's fitness profile. Set `timezone` first: every daily total, streak and adherence window is bucketed by it and defaults to UTC. `weight` doubles as the fallback bodyweight for bodyweight-inclusive volume when no dated weight metric exists.
入力スキーマ
{
"type": "object",
"properties": {
"goal": {
"type": "string"
},
"height": {
"type": "number",
"description": "cm"
},
"weight": {
"type": "number",
"description": "kg"
},
"unit_system": {
"type": "string",
"enum": [
"metric",
"imperial"
]
},
"language": {
"type": "string"
},
"timezone": {
"type": "string",
"description": "IANA zone name, e.g. 'Europe/Warsaw'."
},
"daily_calorie_goal": {
"type": "number"
},
"daily_protein_goal": {
"type": "number"
},
"daily_carbs_goal": {
"type": "number"
},
"daily_fats_goal": {
"type": "number"
},
"daily_water_goal_ml": {
"type": "number"
},
"daily_fiber_goal": {
"type": "number",
"description": "g/day to reach"
},
"daily_sugar_limit": {
"type": "number",
"description": "g/day to stay under"
},
"daily_sodium_limit": {
"type": "number",
"description": "mg/day to stay under"
},
"diet_type": {
"type": "string"
},
"meals_per_day": {
"type": "number"
},
"active_sports": {
"type": "array",
"items": {
"type": "string"
}
}
}
}🟢get_profile
Get the current app user's fitness profile (height, weight, macro + water goals, diet, active sports). Requires an app user context.
入力スキーマ
{
"type": "object",
"properties": {}
}⚪log_cardio(idempotency_key, date, sport, title, duration_seconds, ...)
Log a cardio activity (run/bike/swim/etc.) for the current app user. Supports duration, distance, HR, power, calories.
入力スキーマ
{
"type": "object",
"properties": {
"idempotency_key": {
"type": "string"
},
"date": {
"type": "string"
},
"sport": {
"type": "string"
},
"title": {
"type": "string"
},
"duration_seconds": {
"type": "number"
},
"distance_m": {
"type": "number"
},
"avg_hr": {
"type": "number"
},
"calories": {
"type": "number"
},
"notes": {
"type": "string"
}
},
"required": [
"date",
"sport"
]
}出力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"date": {
"type": "string"
},
"sport": {
"type": "string"
},
"duration_s": {
"type": "number"
},
"distance_m": {
"type": "number"
}
}
}🟢get_cardio_activities(limit, date_from, date_to)
List the current app user's cardio activities (most recent first).
入力スキーマ
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"default": 20
},
"date_from": {
"type": "string"
},
"date_to": {
"type": "string"
}
}
}出力スキーマ
{
"type": "object",
"properties": {
"items": {
"type": "array"
}
}
}🟢ai_parse_meal(text, locale)
Parse free-text meal description ('2 eggs and toast with butter') into structured items with grams + macros.
入力スキーマ
{
"type": "object",
"properties": {
"text": {
"type": "string"
},
"locale": {
"type": "string"
}
},
"required": [
"text"
]
}🟢ai_photo_macros(image_url, image_base64)
Analyze a meal image and estimate foods + macros. Pass exactly one of image_url or image_base64. Vision model, capped separately from the text AI budget (free tier 1/mo).
入力スキーマ
{
"type": "object",
"properties": {
"image_url": {
"type": "string",
"description": "Public URL of the image. Mutually exclusive with image_base64."
},
"image_base64": {
"type": "string",
"description": "Base64-encoded image bytes, no data: prefix. Mutually exclusive with image_url."
}
},
"oneOf": [
{
"required": [
"image_url"
]
},
{
"required": [
"image_base64"
]
}
]
}⚪ai_meal_plan(days, goal, diet_type, daily_calories, confirm, ...)
Draft a meal plan. Not medical advice. confirm:true required. Pass health constraints so the draft can honour them.
入力スキーマ
{
"type": "object",
"properties": {
"days": {
"type": "number"
},
"goal": {
"type": "string"
},
"diet_type": {
"type": "string"
},
"daily_calories": {
"type": "number"
},
"confirm": {
"type": "boolean"
},
"health": {
"type": "object",
"properties": {
"allergies": {
"type": "array",
"items": {
"type": "string"
}
},
"injuries": {
"type": "array",
"items": {
"type": "string"
}
},
"pregnancy": {
"type": "boolean"
},
"medications": {
"type": "array",
"items": {
"type": "string"
}
},
"conditions": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"required": [
"days",
"confirm"
]
}⚪ai_workout_plan(days_per_week, goal, experience, confirm, health)
Draft a workout plan. Not medical advice. confirm:true required. Pass health constraints so the draft can honour them.
入力スキーマ
{
"type": "object",
"properties": {
"days_per_week": {
"type": "number"
},
"goal": {
"type": "string"
},
"experience": {
"type": "string"
},
"confirm": {
"type": "boolean"
},
"health": {
"type": "object",
"properties": {
"allergies": {
"type": "array",
"items": {
"type": "string"
}
},
"injuries": {
"type": "array",
"items": {
"type": "string"
}
},
"pregnancy": {
"type": "boolean"
},
"medications": {
"type": "array",
"items": {
"type": "string"
}
},
"conditions": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"required": [
"days_per_week",
"confirm"
]
}🟢get_muscle_recovery(include_bodyweight)
Per-muscle 7-day recovery % (Fitbod parity) — the 'what should I train today?' input. Recommends fresh muscles. Pass include_bodyweight=true to add the user's bodyweight to bodyweight exercises so recovery reflects real load.
入力スキーマ
{
"type": "object",
"properties": {
"include_bodyweight": {
"type": "boolean",
"description": "If true, add the user's bodyweight to bodyweight exercises (requires a logged weight or profile.weight)."
}
}
}出力スキーマ
{
"type": "object",
"properties": {
"muscles": {
"type": "array"
},
"threshold_volume": {
"type": "number"
},
"window_days": {
"type": "number"
}
}
}🟢get_nutrition_daily(date_from, date_to)
Per-day calories, macros, fiber/sugar/sodium/alcohol, water, targets and adherence % over a date range (default: last 7 days). The 'how am I tracking today?' tool. Requires X-App-User-Id.
入力スキーマ
{
"type": "object",
"properties": {
"date_from": {
"type": "string",
"description": "YYYY-MM-DD"
},
"date_to": {
"type": "string",
"description": "YYYY-MM-DD (defaults to the user's today, in their timezone)"
}
}
}出力スキーマ
{
"type": "object",
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"days": {
"type": "array"
},
"targets": {},
"limits": {}
}
}🟢get_water(date, date_from, date_to)
List the current app user's water intake entries for a date range. Requires X-App-User-Id.
入力スキーマ
{
"type": "object",
"properties": {
"date": {
"type": "string"
},
"date_from": {
"type": "string"
},
"date_to": {
"type": "string"
}
}
}🟡update_meal(idempotency_key, meal_id, date, meal_type, name, ...)
Correct a previously logged meal — name, macros, nutrients, portion, date or meal_type. Pass only the fields you want to change. Requires X-App-User-Id.
入力スキーマ
{
"type": "object",
"properties": {
"idempotency_key": {
"type": "string"
},
"meal_id": {
"type": "string"
},
"date": {
"type": "string"
},
"meal_type": {
"type": "string"
},
"name": {
"type": "string"
},
"calories": {
"type": "number"
},
"protein": {
"type": "number"
},
"carbs": {
"type": "number"
},
"fats": {
"type": "number"
},
"fiber": {
"type": "number"
},
"sugar": {
"type": "number"
},
"saturated_fat": {
"type": "number"
},
"sodium": {
"type": "number",
"description": "mg"
},
"alcohol": {
"type": "number",
"description": "g of ethanol"
}
},
"required": [
"meal_id"
]
}出力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"date": {
"type": "string"
},
"name": {
"type": "string"
},
"calories": {
"type": "number"
},
"protein": {
"type": "number"
},
"carbs": {
"type": "number"
},
"fats": {
"type": "number"
}
}
}🔴delete_meal(meal_id)
Delete a logged meal by id (soft delete, 30-day recovery window). Requires X-App-User-Id.
入力スキーマ
{
"type": "object",
"properties": {
"meal_id": {
"type": "string"
}
},
"required": [
"meal_id"
]
}出力スキーマ
{
"type": "object",
"properties": {
"deleted": {
"type": "string"
}
}
}🔴update_sets(set_ids, exercise, weight, reps, rpe, ...)
Correct sets already logged, by set id (log_workout returns them). Relabel the exercise, fix weight/reps/rpe, mark completed, add notes, or delete. Selection and change are separate, so a subset can be relabelled. Adding a set is log_workout, not this.
入力スキーマ
{
"type": "object",
"properties": {
"set_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"exercise": {
"type": "string",
"description": "Catalog name, ext_id, or the user's own words for a custom movement."
},
"weight": {
"type": "number"
},
"reps": {
"type": "number"
},
"rpe": {
"type": "number"
},
"completed": {
"type": "boolean"
},
"notes": {
"type": "string"
},
"delete": {
"type": "boolean"
}
},
"required": [
"set_ids"
]
}出力スキーマ
{
"type": "object",
"properties": {
"updated": {
"type": "number"
},
"deleted": {
"type": "number"
},
"missing": {
"type": "array"
}
}
}🔴delete_workout(workout_id)
Delete a logged workout and its sets by id (soft delete, 30-day recovery window).
入力スキーマ
{
"type": "object",
"properties": {
"workout_id": {
"type": "string"
}
},
"required": [
"workout_id"
]
}出力スキーマ
{
"type": "object",
"properties": {
"deleted": {
"type": "string"
}
}
}🟢export_data(domains, confirm)
Export the signed-in user's data as JSON. Pass `domains` (e.g. meals,workouts) or confirm:true for a full copy. Identity comes from the token, never a caller-supplied user id.
入力スキーマ
{
"type": "object",
"properties": {
"domains": {
"type": "string",
"description": "Comma-separated subset, e.g. 'meals,workouts'."
},
"confirm": {
"type": "boolean",
"description": "Required true for a full dump when domains is omitted."
}
}
}🟢get_events(since, entities, limit)
What changed since a cursor, including DELETES, which a list read cannot show. Returns {seq, entity, id, action}. Pass the last seq back as `since` on the next call to receive only entries after it; omit `since` for a first sync. seq is a global counter: gaps in your feed are other accounts' events, not lost data. Judge completeness from has_more, not seq.
入力スキーマ
{
"type": "object",
"properties": {
"since": {
"type": "string",
"description": "Cursor from the previous call's last seq. Omit for a first sync."
},
"entities": {
"type": "string",
"description": "Optional comma-separated filter, e.g. 'workout,meal'."
},
"limit": {
"type": "number",
"default": 100
}
}
}🟢my_training_context(workout_limit, domains)
Returns a slice of the signed-in user's training picture. Default domains are workouts and today's nutrition. Pass `domains` to add checkin, notes or profile, or `domains=all`. Identity comes from the token, not a caller-supplied user id.
入力スキーマ
{
"type": "object",
"properties": {
"workout_limit": {
"type": "number",
"default": 10
},
"domains": {
"type": "string",
"description": "Comma-separated subset. Accepted: workouts, nutrition, checkin, notes, profile, or 'all'. Default: workouts,nutrition."
}
}
}出力スキーマ
{
"type": "object",
"properties": {
"date": {
"type": "string"
},
"domains": {},
"profile": {},
"recent_workouts": {},
"nutrition_today": {},
"latest_checkin": {},
"recent_notes": {}
}
}🟢get_progress(metric, exercise, from, to, bucket, ...)
Any progression metric for the current user — pick one in `metric`. training_load is acute:chronic (>1.5 ramping too fast, <0.8 detraining); muscle_recovery is per-muscle freshness; correlate takes metric_a vs metric_b. Only completed sets count.
入力スキーマ
{
"type": "object",
"properties": {
"metric": {
"type": "string",
"enum": [
"prs",
"volume",
"one_rep_max",
"streaks",
"adherence",
"training_load",
"weight_trend",
"body_delta",
"muscle_recovery",
"cardio_prs",
"goal_trajectory",
"nutrition_balance",
"correlate",
"compare_periods"
]
},
"exercise": {
"type": "string",
"description": "Required for prs; optional filter for volume, one_rep_max and compare_periods."
},
"from": {
"type": "string",
"description": "YYYY-MM-DD"
},
"to": {
"type": "string",
"description": "YYYY-MM-DD"
},
"bucket": {
"type": "string",
"enum": [
"day",
"week",
"month"
]
},
"group_by": {
"type": "string",
"enum": [
"exercise",
"muscle"
],
"description": "volume only"
},
"include_bodyweight": {
"type": "boolean",
"description": "Add the user's bodyweight to bodyweight exercises (pull-ups, dips). prs, volume and muscle_recovery."
},
"days": {
"type": "number",
"description": "training_load window"
},
"sport": {
"type": "string",
"description": "training_load and cardio_prs"
},
"method": {
"type": "string",
"description": "training_load: auto | power | hr | rpe"
},
"window": {
"type": "number",
"description": "weight_trend smoothing window"
},
"goal_id": {
"type": "string",
"description": "goal_trajectory"
},
"metric_a": {
"type": "string",
"description": "correlate"
},
"metric_b": {
"type": "string",
"description": "correlate"
}
},
"required": [
"metric"
]
}コミュニティ
エビデンス