MCP Hub
Back to servers

MCP Logger

A local fitness tracking server that provides comprehensive tools for logging and querying workouts, nutrition, and body composition metrics using a SQLite database. It supports granular exercise sets tracking, daily nutrition snapshots with meal-level detail, and body weight/skinfold history.

Tools
15
Updated
Jan 8, 2026
Validated
Jan 9, 2026

MCP Logger

A Python/uv + FastMCP server for logging workouts, nutrition, and body metrics. Single-user local SQLite database with stdio MCP interface.

  • this was entirely vibe coded

Features

  • Workouts: Flexible workout -> exercises[] -> sets[] structure with tags, notes, RPE/RIR, distances, unilateral sides, etc.
  • Nutrition: Cronometer/MyFitnessPal-style logging with meals and OpenNutrition-backed food snapshots.
  • Body Metrics: Weight and customizable skinfold tracking.
  • Search: Cross-domain search across all data.

Tools

Workout Tools

  • log_workout - Log a complete workout with exercises and sets
  • get_workouts - Query workouts with filters (date range, type, tag)
  • get_last_workout - Get most recent workout by type or tag
  • get_exercise_history - Get history for a specific exercise

Nutrition Tools

  • upsert_nutrition_day - Create/update a nutrition day
  • upsert_meal - Create/update a meal within a day
  • add_or_update_meal_item - Add/update food item (use with OpenNutrition MCP)
  • get_nutrition_day - Get complete day with meals, items, and totals
  • get_nutrition_days_summary - Get summaries for a date range
  • delete_meal_item, delete_meal, delete_nutrition_day - Delete operations

Body Metrics Tools

  • log_body_metrics - Log weight and skinfolds
  • get_body_metrics - Get body metrics with skinfolds

Search

  • search_logs - Search across workouts, nutrition, and body data

Installation & Running

# Install dependencies
uv pip install -e .

# Run the MCP server (stdio interface)
uv run python -m src.main

MCP Config Example

Add to your MCP configuration:

{
  "mcpServers": {
    "logger": {
      "command": "uv",
      "args": ["run", "python", "-m", "src.main"],
      "cwd": "/path/to/mcp-logger"
    }
  }
}

Nutrition Workflow with OpenNutrition MCP

  1. AI uses OpenNutrition MCP to search for foods (search-food-by-name, get-food-by-id)
  2. AI computes macros for the desired serving size
  3. AI calls add_or_update_meal_item with food_id and calculated macros

Workout Planning

The AI can call get_last_workout or get_exercise_history to retrieve past sessions, then generate suggested workouts. Progression logic lives in the client AI, not this server.

Database

Data is stored in mcp_logger.db (SQLite) in the project root.

Example Usage

Log a Workout with Exercises

{
  "date_time": "2026-01-06T18:30:00",
  "workout_type": "Strength",
  "tags": ["olympic", "speed"],
  "notes": "Great session",
  "exercises": [
    {
      "name": "Power Clean",
      "category": "Olympic Lift",
      "notes": "From blocks",
      "sets": [
        { "reps": 3, "weight_lbs": 185 },
        { "reps": 2, "weight_lbs": 195 },
        { "reps": 1, "weight_lbs": 205 }
      ]
    },
    {
      "name": "Sprint Starts",
      "category": "Sprint",
      "notes": "3 point stance",
      "sets": [{ "reps": 6, "distance_yards": 20 }]
    },
    {
      "name": "Single Leg Box Jumps",
      "category": "Plyometric",
      "notes": "5 sets of 2 each leg",
      "sets": [{ "reps": 10, "side": "both" }]
    }
  ]
}

Set Fields

Each set can include:

  • reps: Number of repetitions (int or float)
  • weight_kg / weight_lbs: Weight in kg or lbs
  • distance_m / distance_yards: Distance for running/rowing
  • duration_s: Duration in seconds
  • side: "left", "right", or "both" (for unilateral exercises)
  • rpe: Rate of Perceived Exertion (1-10)
  • rir: Reps In Reserve (0-5)
  • is_warmup: Boolean for warmup sets
  • set_index: Manual set ordering (defaults to order inserted)

Log Body Metrics

{
  "date": "2026-01-06",
  "body_weight_kg": 85.5,
  "skinfolds": {
    "chest": 12,
    "abdomen": 18,
    "thigh": 15,
    "tricep": 10,
    "subscapular": 14,
    "suprailiac": 16,
    "midaxillary": 11
  },
  "notes": "Morning measurement"
}

MCP-logger

Reviews

No reviews yet

Sign in to write a review