Skip to main content
Glama
README.md
# apeiron-mcp

An MCP server exposing client health data. Tool surface is intentionally
consolidated by *data shape* (time-series vitals, periodic assessments,
unstructured text, derived aggregates) rather than by raw domain, to keep
LLM tool-selection unambiguous.

## Tools

| # | Tool | Purpose |
|---|------|---------|
| 1 | `get_sleep_data` | Sleep stages, duration, efficiency, HRV, score. |
| 2 | `get_exercise_data` | Workouts: type, duration, calories, HR zones, RPE. |
| 3 | `get_nutrition_data` | Meals, macros, calories, hydration, supplements. |
| 4 | `get_cardio_metrics` | Cardio + aerobic (resting HR, HRV, VO2max, BP, aerobic capacity). |
| 5 | `get_fitness_assessment` | Bone density, body comp, balance, movement, muscle strength. |
| 6 | `get_cognitive_data` | Cognitive test batteries and trends. |
| 7 | `get_healthspan_domain_summary` | Cross-domain rolled-up scores. |
| 8 | `get_lifestyle_summary` | Sleep/activity/nutrition adherence rollup. |
| 9 | `get_trends` | Generic time-series trend for any (domain, metric). |
| 10 | `get_notes` | Clinician/client/system free-text notes. |
| 11 | `get_chat_history` | Paginated coaching conversation logs. |

All tools return the envelope:

```json
{
  "client_id": "...",
  "domain": "...",
  "period": {"start": "...", "end": "..."},
  "data": [],
  "unit_system": "metric",
  "last_synced_at": "..."
}
```

## Install & run

```bash
pip install -e .
apeiron-mcp            # runs the server over stdio
```

## Register with Claude Desktop

Add to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "apeiron": {
      "command": "apeiron-mcp"
    }
  }
}
```

## Wiring to a real backend

The current implementation returns stub payloads. Replace the bodies of the
functions in `src/apeiron_mcp/server.py` with calls into your health data
backend (HTTP client, DB, etc.).

TDQS

B3/5.0

Scored across 11 tools

Disambiguation4/5

Most tools target distinct data domains (cognitive, sleep, exercise, nutrition, cardio, fitness assessment). Potential confusion exists between the two summary tools and between domain-specific get_*_data and get_trends, but descriptions clarify raw versus derived data.

Naming Consistency5/5

All 11 tools use consistent snake_case with the get_ verb prefix followed by a descriptive noun phrase. The pattern is predictable and readable throughout, with only minor length variations.

Tool Count5/5

11 tools is well-scoped for a read-only health data aggregation server. Each tool maps to a distinct data source or summary type, with no obviously redundant tools.

Completeness4/5

The surface covers core health domains (cognitive, sleep, exercise, nutrition, cardio, fitness assessments) plus summaries, trends, notes, and chat. Minor gaps include no client listing or metadata tool, but for a read-only aggregation API the coverage is strong.

Maintenance

ActivityMaintained
ResponsivenessNo issues