Fitnotes Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Fitnotes Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An MCP server for analyzing your FitNotes (Android & iOS) workout data. Connect with an LLM to get context-aware insights, uncover training patterns, track progress, and receive personalized recommendations based on your own fitness history.
There are multiple ways to export your FitNotes data, such as exporting to CSV or using the "Android DB" option. Based on my experience, the "Android DB" export is better because it provides your workout data as a standard SQLite database with a decent schema out of the box. This makes it easy to explore and analyze and therefore the MCP server is designed to work directly with this database export.
# Navigate to the project directory
cd /path/to/fitnotes_mcp
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -e .Export your FitNotes data (Android DB export) and place the .fitnotes file in the project directory. The server will use the FITNOTES_DB_PATH environment variable to locate your database file.
You can use any LLM that supports MCP. We'll use Claude Desktop. Add the following to Claude desktop config.
Check this to know the location for the OS you are using.
{
"mcpServers": {
"fitnotes-server": {
"command": "/path/to/your/venv/bin/python",
"args": ["/path/to/mcp_fitnotes/run_server.py"],
"cwd": "/path/to/mcp_fitnotes",
"env": {
"PYTHONPATH": "/path/to/mcp_fitnotes/src",
"FITNOTES_DB_PATH": "/path/to/your/fitnotes.fitnotes"
}
}
}
}Important: Replace /path/to/your/venv/bin/python with your actual virtual environment Python path, /path/to/mcp_fitnotes/ with your actual project directory, and /path/to/your/fitnotes.fitnotes with the actual path to your FitNotes database file.
Open Claude Desktop and start asking about your workouts:
As you can see, the LLM does have a tool to execute queries but all database access is strictly read-only, with robust query validation to allow only safe SELECT statements. SQL injection protection is there and resource limits are enforced via query timeouts and result size caps.
"How am I doing with my workouts lately?" Uses get_workout_summary to show recent activity, PRs, and muscle group balance
"Analyze my squat progress" Uses analyze_exercise_progress to show weight progression, volume trends, and recent PRs
"What exercises did I do yesterday?" Uses execute_select_query with a custom date filter
"Am I training my back enough?" Uses get_muscle_group_analysis to compare back training with other muscle groups
"What exercises do I have available?" Uses execute_select_query to get a list of all exercises from the database
"Show me all my bicep exercises" Uses execute_select_query with custom filtering to find exercises by muscle group
Here's a real example of the kind of analysis you can get:
Show my chest training progress of the last 3 months. Also give me insights and improvement areas.
Analysis Example 1
Analysis Example 2
Analysis Example 3
Analysis Example 4
Analysis Example 5
Server won't start? Check that FITNOTES_DB_PATH environment variable points to your .fitnotes file and virtual environment is activated.
Database file not found? Verify the FITNOTES_DB_PATH variable points to the correct .fitnotes file path.
Claude can't connect? Verify MCP configuration paths in claude_desktop_config.json and restart Claude Desktop.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.