Claude reports invalid JSON
Check commas, braces, brackets, and double quotes. Confirm that you merged the new member inside the existing top-level object rather than pasting a second root object.
Claude Desktop on macOS can start Health Bridge for AI as a read-only, client-neutral local stdio MCP server when Claude Desktop, the receiver, and its private database are on the same Mac. Health Bridge does not configure Claude Desktop; you manually merge the generated command and arguments into Claude's configuration.
Local MCP does not make Claude a local model. The MCP process and private database run on your Mac, but selected tool inputs and results may be sent to your Claude service under your account and data controls. Review those controls before giving Claude access to private health context.
This guide covers Claude Desktop on macOS with the Health Bridge receiver and database on the same Mac. Native Windows receiver setup is not part of this recipe. Claude web, mobile apps, remote connectors, Desktop Extensions, and cross-host MCP transport are outside this same-host stdio setup.
Foreground and background delivery are best-effort and may be delayed by iOS and network conditions. Finish receiver routing, pairing, permissions, and an initial upload before using Claude to inspect synced data.
Use the install guide to install the receiver, choose a phone-reachable private route, pair the iPhone companion, and verify an upload. Do this before changing Claude Desktop.
Run core setup without a client registrar and request its secret-redacted JSON result. The client-neutral result contains access_descriptors[0]; its command value is an absolute executable path and its args array describes the local stdio launch:
health-bridge setup \
--receiver-url "$HEALTH_BRIDGE_RECEIVER_URL" \
--json
Do not invent a Claude registration option. The setup flow has no built-in Claude registrar and does not modify Claude's files. Keep the secret-redacted setup JSON available for the next step.
From access_descriptors[0], copy the exact absolute executable path from the descriptor's command field and every string from its args array. The generated args identify mcp start --db followed by the absolute private database path. Preserve the exact command and args from the setup descriptor; do not shorten either path, replace it with a relative path, or copy a path from another machine.
In Claude Desktop, open Settings, choose Developer, and select Edit Config. On macOS the file is ~/Library/Application Support/Claude/.
If the file already has a top-level mcpServers object, merge the health-bridge object under it and do not overwrite existing servers. Replace the placeholders below with the exact descriptor values. The example is a complete valid file for a user who has no other configured servers:
{
"mcpServers": {
"health-bridge": {
"command": "/absolute/path/to/health-bridge",
"args": [
"mcp",
"start",
"--db",
"/absolute/path/to/private/health-bridge.db"
]
}
}
}
Manual configuration boundary: Health Bridge does not configure Claude Desktop. Keep every existing entry under mcpServers, add only the health-bridge member, preserve valid JSON, and save the file yourself.
After saving, completely quit and restart Claude Desktop. Opening a new window is not enough because the desktop app loads the local server configuration when it starts.
Use the chat input's Connectors control to inspect the connected server and tools. If it is not available there, open Developer settings and check the connection status and server logs. The logs should show whether Claude parsed the file and whether it could launch the descriptor command.
The receiver source pinned for reproducibility exposes exactly nine tools:
get_bridge_status — inspect receiver and sync status.get_bridge_context_markdown — request source-grounded bridge context.list_supported_timeseries_types — list time-series categories the receiver understands.list_synced_metrics — list metrics that reached this receiver.get_timeseries — query bounded time-series observations.get_workouts — query synced workout records.get_sleep_summary — request a bounded sleep summary.get_daily_summary — request a bounded daily summary.explain_sources — inspect provenance and source limitations.These MCP tools are read-only. Health Bridge does not modify Apple Health data, write HealthKit records, or give Claude a write path into the receiver database.
Start with a bounded, non-medical prompt such as: “Which metric categories have reached this receiver, and what source or sync limitations should I know before interpreting them?”
Missing means unknown, not zero. A denied category, a source gap, a sync delay, and no recorded observation can look the same from the available data. Health Bridge does not provide diagnosis, medical advice, or clinical interpretation.
Check commas, braces, brackets, and double quotes. Confirm that you merged the new member inside the existing top-level object rather than pasting a second root object.
Compare the saved command and args character-for-character with the setup descriptor. Confirm both paths are absolute and that your macOS account can execute the receiver and read the private database.
Finish pairing, authorize Apple Health access, and confirm the physical iPhone can reach the receiver. An empty receiver before the first upload is expected.
Completely quit the app, start it again, then inspect Connectors and the Developer connection status and logs. A new chat alone does not reload local server configuration.
For receiver routing, pairing, upload, or database checks, use the support guide.
To disconnect the server, remove the health-bridge entry from mcpServers, leave the other server entries intact, save valid JSON, and completely restart Claude Desktop. This does not delete the receiver database or Apple Health data, revoke HealthKit permission, or remove receiver backups.
This page documents the Claude Desktop JSON file only. Claude Code has a separate official stdio MCP configuration path; consult its documentation rather than placing Desktop JSON into a Claude Code project.
Install, pair, and verify the receiver before editing Claude Desktop's configuration.