Skip to main content
Glama

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_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

Install Server
A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

Resources

Looking for Admin?

Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.

Latest Blog Posts

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/JohnZolton/MCP-logger'

If you have feedback or need assistance with the MCP directory API, please join our Discord server