What this server can tell you is exactly what you have been recording, and the two catalog calls are how you find that out before writing a query. The value is in the shaping done before the data is handed over — sleep comes back reconstructed into cycles rather than as raw stages, and a metric can arrive resampled so a model is never asked to average samples itself. It reads and does not write: there is no call here for recording an annotation or correcting a sample.
A read layer over Context by Fulcra, the personal data store that collects your health, location and self-recorded data. It exposes catalogs of what you have been recording plus time-bounded reads of workouts, sleep, location and metrics. A public instance is hosted at https://mcp.fulcradynamics.com/mcp; this package is for running it yourself.
- A catalog step before any query: get_metrics_catalog lists the metrics that get_metric_time_series and get_metric_samples accept, and annotations_catalog returns the annotation IDs and types to pass to get_annotations.
- Metric data raw or resampled: get_metric_samples returns the underlying samples and includes any sample whose own range overlaps the window, so one straddling the start of your range still comes back, while get_metric_time_series returns a regular series at a sample rate you choose.
- Sleep as cycles rather than as stages: get_sleep_cycles groups raw sleep samples into cycles by finding gaps in the data, with the gap threshold and the stages considered under your control.
- Location as a point or as a track: get_location_at_time resolves a single moment and searches back up to a window you set when no sample sits exactly there, and get_location_time_series returns the track across a range.
- Workouts and self-recorded annotations over a period: get_workouts returns workout detail between a start and end time, and get_annotations returns the annotations you recorded, by type.
- Timestamps that carry their zone, with get_user_info returning your own time zone and calendar IDs to resolve them against.
A Context by Fulcra account holding the data, authorised over OAuth. Point an OAuth-capable client at the public instance and install nothing, or run it locally with uvx — the local server handles the OAuth callback itself and keeps the exchanged tokens rather than passing them to the client.
One command — uvx fulcra-context-mcp@latest
