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

-
security - not tested
F
license - not found
-
quality - not tested

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