Zepp Cloud MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Zepp Cloud MCPWhat were my steps and sleep score for yesterday?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Zepp Cloud MCP
Read-only MCP server for Amazfit / Zepp fitness data, designed for Cloudflare Workers.
It talks directly to the unofficial Zepp/Huami cloud API, normalizes the useful health and workout streams, and exposes a bounded MCP interface for ChatGPT or other MCP clients.
This project is unofficial and is not affiliated with Zepp Health, Huami, or Amazfit. The upstream API is private/undocumented and can change without notice.
Architecture
Amazfit watch
-> Zepp mobile app
-> Zepp Cloud
-> Cloudflare Worker
-> Streamable HTTP MCP (/mcp)
-> ChatGPT / MCP clientThere is no desktop ZeppBridge process and no persistent health-data database in Cloudflare.
Related MCP server: garmin-mcp
MCP tools
Tool | Purpose |
| Verify Worker -> Zepp authentication/reachability without returning measurements |
| Steps, distance, calories, resting HR and available daily metrics |
| Normalized sleep sessions and stages |
| Heart-rate summaries over a date range |
| HRV, readiness, stress, SpO2 and respiratory-rate data when available |
| Training load, VO2max and lactate-threshold data when available |
| Find workouts by date and optional normalized activity type |
| Get one workout's normalized summary and available detail streams |
| Explicit HR/pace/cadence/power/GCT/vertical/equivalent-pace/elevation series |
| GPS/elevation route with bounded downsampling |
| Generic normalized series for reviewed metrics |
| Sanitized raw payload for a reviewed allow-listed metric |
All tools are read-only. get_raw_metric does not accept arbitrary URLs, paths, headers, or query strings.
Security model
ZEPP_APP_TOKENis a Cloudflare Worker secret.MCP_SECRETis a separate Worker secret used asAuthorization: Bearer ...on/mcp.Zepp email/password are never stored.
Zepp tokens are never returned in MCP responses.
Upstream redirects are followed only when they stay on the configured HTTPS Zepp origin.
Public errors do not echo arbitrary upstream response text.
No D1, KV, R2, or permanent copy of fitness history is required.
Cloudflare Cache API is used only for short-lived response caching.
Date ranges are limited to 31 inclusive days per call.
Workout samples/routes are bounded and disclose when downsampling occurred.
Quick start
Requirements: Node.js 22+, npm, and a Cloudflare account.
npm installEdit the non-secret values in wrangler.jsonc:
{
"ZEPP_USER_ID": "YOUR_ZEPP_USER_ID",
"ZEPP_REGION_HOST": "https://api-mifit-us3.zepp.com",
"USER_TIMEZONE": "Asia/Jakarta"
}The user ID committed in this repository is deliberately a dummy value.
Set secrets:
npx wrangler secret put ZEPP_APP_TOKEN
npx wrangler secret put MCP_SECRETVerify locally:
npm run types
npm run typecheck
npm testOptional live Zepp credential probe (read-only):
MCP_SECRET=local-probe-secret \
ZEPP_APP_TOKEN='YOUR_TOKEN' \
ZEPP_USER_ID='YOUR_USER_ID' \
ZEPP_REGION_HOST='https://api-mifit-us3.zepp.com' \
USER_TIMEZONE='Asia/Jakarta' \
npm run test:liveThe live probe checks recent heart rate, band data, and the HRV event API, and prints only authentication/status and response shape information rather than your measurements.
Deploy:
npx wrangler deployYour MCP endpoint will be:
https://<worker>.workers.dev/mcpEvery MCP request must include:
Authorization: Bearer <MCP_SECRET>See docs/DEPLOY.md and docs/MCP_SETUP.md for the full setup.
Zepp token rotation
The app token is intentionally treated as an externally acquired credential. If zepp_status starts returning auth_expired, rotate only the Worker secret:
npx wrangler secret put ZEPP_APP_TOKENNo code change or Zepp password is required.
Supported / deliberately unsupported data
The server includes the reviewed ZeppBridge mappings for daily activity, sleep, HR, HRV/RMSSD, readiness, stress, SpO2, respiratory rate, PAI, training load, VO2max, lactate threshold and workout details where Zepp supplies them.
Weight and blood-pressure retrieval are deliberately not exposed. Missing data remains missing; it is not converted to zero or fabricated. Empty Zepp event responses are not automatically treated as proof that a capability is unsupported.
Workout detail follows the verified Zepp semantics used by ZeppBridge, including power, ground-contact time, vertical oscillation, vertical ratio, GPS/elevation and Zepp's equivalent pace. Equivalent pace is kept separate from ordinary pace rather than derived from speed.
Documentation
Development
npm run typecheck
npm test
npx wrangler deploy --dry-run --outdir distGitHub Actions runs install -> Worker type generation -> strict TypeScript -> tests -> Wrangler dry run on main and pull requests.
Credits
The Zepp endpoint mappings and a number of normalization/decoder semantics are informed by ZeppBridge. This project builds a Worker-native, direct-cloud MCP surface rather than using ZeppBridge's desktop SQLite MCP architecture.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Multi-tenant hosted MCP server for Oura Ring — 21 read-only tools, OAuth per user.
Private Apple Health metrics and workout detail for ChatGPT, Claude, and any MCP client.
Remote MCP server for training, nutrition, wellness, and performance data with OAuth 2.0.
Related MCP Servers
- AlicenseBqualityCmaintenanceExposes personal Garmin Connect data to MCP-capable clients like Claude and Gemini. Enables querying daily stats, heart rate, sleep, activities, and managing workouts.16MIT
- AlicenseNot gradedqualityBmaintenanceConnects MCP clients to Garmin Connect data, enabling queries about activities, sleep, heart rate, body battery, and training status.MIT
- FlicenseAqualityCmaintenanceProvides read-only access to your Garmin Connect health data, including sleep, HRV, body battery, stress, training readiness, and activities, through an MCP server.14
- AlicenseNot gradedqualityBmaintenanceExposes Garmin Connect data through MCP, enabling retrieval of activities, health metrics, training status, and workouts, with OAuth authentication and confirmed write operations.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/aryarfani/zepp-cloud-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server