Skip to main content
Glama

get_workout_info

Retrieve detailed workout information for a specific date, including exercises, sets, reps, and weights from JEFit workout data.

Instructions

Get detailed workout information for a specific date.

Args: date: Date in YYYY-MM-DD format

Returns: Markdown-formatted workout details including exercises, sets, reps, and weights

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateYes

Implementation Reference

  • Handler function for the 'get_workout_info' tool. It validates the date input, fetches raw workout data using the helper function, enriches it with exercise details from a preloaded database, formats the output as structured Markdown, and returns it as a ToolResult. The @mcp.tool decorator handles registration.
    @mcp.tool def get_workout_info(date: str) -> ToolResult: """ Get detailed workout information for a specific date. Args: date: Date in YYYY-MM-DD format Returns: Markdown-formatted workout details including exercises, sets, reps, and weights """ # Validate date format try: datetime.strptime(date, "%Y-%m-%d") except ValueError as e: raise ValueError(f"Invalid date format. Use YYYY-MM-DD format: {e}") # Get workout data from API workout_data = get_workout_for_date(date) # Build markdown output output_lines = [] output_lines.append(f"# Workout for {date}\n") if 'data' not in workout_data or not workout_data['data']: output_lines.append("No workout found for this date.") markdown_text = "\n".join(output_lines) return ToolResult(content=[TextContent(type="text", text=markdown_text)]) for session in workout_data['data']: session_date = datetime.fromtimestamp(session['date']).strftime('%Y-%m-%d %H:%M:%S') duration_minutes = session['total_time'] // 60 duration_seconds = session['total_time'] % 60 total_weight = session['total_weight'] output_lines.append(f"**Started:** {session_date}") output_lines.append(f"**Duration:** {duration_minutes}m {duration_seconds}s") output_lines.append(f"**Weight Lifted:** {total_weight} lbs\n") output_lines.append("## Exercises\n") for i, log in enumerate(session['logs'], 1): exercise_id = log['exercise_id'] exercise = EXERCISE_DB.get(exercise_id, {}) name = exercise.get('name', f'Unknown Exercise ({exercise_id})') muscle_groups = ', '.join(exercise.get('body_parts', ['Unknown'])) equipment = ', '.join(exercise.get('equipment', ['Unknown'])) output_lines.append(f"### {i}. {name}") output_lines.append(f"- **Muscle Groups:** {muscle_groups}") output_lines.append(f"- **Equipment:** {equipment}") output_lines.append("") # Add sets information for j, s in enumerate(log['log_sets'], 1): weight = s.get('weight', 0) reps = s.get('reps', 0) output_lines.append(f" - Set {j}: {weight} lbs × {reps} reps") output_lines.append("") # Blank line between exercises markdown_text = "\n".join(output_lines) return ToolResult(content=[TextContent(type="text", text=markdown_text)])
  • Core helper function that makes the API request to JEFit to retrieve raw workout session data for a specific date. Converts date to Unix timestamp and uses authenticated headers.
    def get_workout_for_date(date_str): """Get workout logs for a specific date""" date_unix = int(time.mktime(time.strptime(date_str, "%Y-%m-%d"))) # Get Access Token and User ID access_token = get_access_token() user_id = get_user_id(access_token) url = f"https://www.jefit.com/api/v2/users/{user_id}/sessions?startDate={date_unix}" headers = { 'content-type': 'application/json', 'Cookie': f'jefitAccessToken={access_token}' } response = requests.get(url, headers=headers) return response.json()
  • Helper function that loads or fetches and caches the JEFit exercise database (names, muscle groups, equipment) used to enrich workout logs with human-readable exercise information.
    def load_exercise_db(): """Load exercise database from JSON cache, creating it if necessary""" db_path = Path('data/exercises_db.json') # Create data directory if it doesn't exist db_path.parent.mkdir(exist_ok=True) # If database doesn't exist, fetch and create it if not db_path.exists(): print("Exercise database not found. Fetching from JEFit...") try: exercises = fetch_exercise_database() if not exercises: print("⚠️ No exercises found. Check your authentication.") return {} # Save to JSON with open(db_path, 'w') as f: json.dump(exercises, f, indent=2) print(f"✓ Created exercise database with {len(exercises)} exercises") return exercises except Exception as e: print(f"⚠️ Failed to fetch exercise database: {e}") return {} # Load existing database try: with open(db_path, 'r') as f: return json.load(f) except Exception as e: print(f"⚠️ Error loading exercise database: {e}") return {}

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/ai-mcp-garage/jefit-mcp'

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