loading…
Search for a command to run...
loading…
Integrates simulated health data and task management to provide energy-aware scheduling based on calculated readiness scores. It allows users to query health su
Integrates simulated health data and task management to provide energy-aware scheduling based on calculated readiness scores. It allows users to query health summaries, manage tasks, and generate optimized daily schedules through a local SQLite database.
A local MCP agent that queries personal health data and provides energy-aware task scheduling.
This project uses simulated data. Health data is seeded from data/seed_db.py into a SQLite database. There is no Apple Health integration — real health data is not imported or synced.
Run the Plan-and-Execute agent loop locally:
uv run python mcp_server/agent.py [YYYY-MM-DD]
data/health.db and data/todo.json.The MCP server is spawned by Cursor when needed — you do not start it manually in a separate terminal.
.cursor/mcp.json):{
"mcpServers": {
"wellness-planner": {
"command": "uv",
"args": ["run", "--directory", "/path/to/wellness_planner", "python", "mcp_server/server.py"]
}
}
}
/path/to/wellness_planner with your actual project path.| Command | Purpose |
|---|---|
uv run python main.py |
Placeholder entry point |
uv run python data/seed_db.py |
Seed data/health.db with simulated data |
When the server is connected, these tools are available:
get_health_summary — Aggregated sleep, activity, and heart rate for a datecalculate_readiness_score — 1–10 readiness score for task timingquery_raw_logs — Run read-only SQL against the health DBget_tasks — Load tasks from todo.jsonpropose_schedule — Energy-aware schedule based on readiness and tasksget_data_dictionary — Schema introspection: column names, types, and sample valuesrun_analysis — Execute a pandas/sqlite analysis script locally; returns stdoutgenerate_chart — Produce a self-contained Observable Plot HTML chartget_insights — Retrieve previously saved findings from the Fact Storesave_insight — Persist a discovered insight so it isn't re-computed next sessionThere are two layers to test: the skills directly, and the MCP tools through Cursor chat.
Phase 1 — Sandbox execution:
uv run python -c "
from skills.sandbox import run_python_analysis
r = run_python_analysis('''
df = pd.read_sql('SELECT date, total_hours FROM sleep_logs ORDER BY date DESC LIMIT 7', __import__('sqlite3').connect(DB_PATH))
print(df.to_string(index=False))
''')
print(r['output'])
"
Phase 2 — Schema discovery:
uv run python -c "
from skills.schema import get_data_dictionary
import json
print(json.dumps(get_data_dictionary(), indent=2))
"
Phase 3 — Chart generation:
uv run python -c "
import sqlite3
from skills.visualization import generate_chart
rows = sqlite3.connect('data/health.db').execute('SELECT date, total_hours FROM sleep_logs ORDER BY date').fetchall()
r = generate_chart([{'date': r[0], 'total_hours': r[1]} for r in rows], 'Sleep Trend', 'date', 'total_hours')
print(r)
"
Then open the url value in a browser to see the chart.
Phase 4 — Fact Store:
uv run python -c "
from skills.memory import save_insight, get_insights, clear_insights
save_insight('test_key', 'test value', 'manual test')
print(get_insights())
clear_insights()
"
Ask the agent questions in chat and watch the MCP tool calls fire in sequence:
get_insights → get_data_dictionary → run_analysis → save_insightrun_analysis → generate_chart → returns a file pathget_insights and return stored findings without re-running anythinguv run python mcp_server/agent.py 2026-02-18
Tests the non-MCP path (summarizer + readiness + scheduling) and confirms nothing broke during the Phase 1–4 additions.
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"wellness-planner": {
"command": "npx",
"args": []
}
}
}