Zepp Life MCP
The Zepp Life MCP server provides tools to cache, synchronize, and query health and fitness data from Zepp Life (Xiaomi/Huami wearables) using cloud sessions or local export files.
Capabilities:
Check connection status and sync health.
Sync selected data types (daily activity, sleep, heart rate, workouts, body measurements) to a local SQLite cache with optional date ranges and force full sync.
Retrieve user profile info, optionally including connected devices.
Get daily activity summaries for specific dates or ranges.
Query time series metrics (steps, distance, active kcal, weight, sleep minutes) with aggregations (sum, avg, min, max, latest) and granularity (day/week/month).
Query sleep sessions with details (light, deep, REM, awake, wake count) and optional nap and sleep stage breakdowns.
Query workouts filtered by activity type, minimum distance, and/or minimum duration.
Query heart rate samples, filterable by type (resting, active, passive, workout).
Query body measurements (weight, BMI, body fat, muscle mass, water percentage) with option for latest only.
Get data coverage showing available date ranges and days with data for each type.
Automatically manage SQLite database schema upgrades and create backups for destructive migrations.
Provides tools to access and sync health data from Zepp Life (Xiaomi ecosystem), including steps, sleep, heart rate, workouts, and body measurements, either via local export files or cloud session.
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 Life MCPShow my workouts from the last 30 days"
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 Life MCP
MCP server for Zepp Life data.
This project provides local caching, sync, and MCP tools for Zepp Life data from either exported files or the Zepp cloud session flow.
Supported sources
export_filefor local Zepp exportscloud_sessionforapptoken-based cloud access
Related MCP server: Mi Fitness MCP CN
Current data coverage
The current implementation supports:
daily steps, distance, and active calories
sleep sessions with light, deep, REM, awake time, and wake count
passive and resting heart rate (
slp.rhr)workouts with readable sport names for known Zepp sport codes
weight and body-composition measurements
Cloud coverage can vary by account, region, and upstream endpoint stability. Export mode is the safest option when you need predictable full-history access.
Cloud connections are lazy: server startup and tools/list do not wait for Zepp login. The first data tool establishes one shared connection. If user_id is omitted, the adapter attempts to discover the numeric UID from the last 30 days of band summary data and stores it in the system keyring.
Install
python -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'Setup
Cloud session
You need an apptoken.
Typical flow:
Open
https://user.huami.com/privacy2/index.htmlSign in to the Zepp Life account
Open browser DevTools
Find the
apptokencookie
Then configure the server:
zepp-life-mcp setup --mode cloud_session --token "<apptoken>" --region eu
zepp-life-mcp doctor--user-id remains supported and can be supplied explicitly if automatic discovery is unavailable.
Export file mode
zepp-life-mcp setup --mode export_file --export-path ~/Downloads/ZeppExport
zepp-life-mcp doctorUse
zepp-life-mcp sync --start-date 2022-01-01 --end-date 2022-12-31
zepp-life-mcp serveMCP client config
Example Claude Desktop config:
{
"mcpServers": {
"zepp-life": {
"command": "zepp-life-mcp",
"args": ["serve"]
}
}
}MCP tools
All tool responses keep the backward-compatible JSON envelope with status: "ok" or status: "error". Failed calls also use MCP isError: true.
Tool | Purpose |
| Report configuration, lazy connection state, and sync health |
| Sync selected data types with optional |
| Return the connected user ID/timezone and accept the compatible |
| Query one date or a date range of daily activity |
| Query |
| Query sleep sessions by sleep start date with optional naps/stages |
| Query workouts with activity, duration, and distance filters |
| Query resting/active/passive/workout heart-rate samples |
| Query weight/body metrics with optional latest-only output |
| Report first/last dates and days with data by type |
Sync and storage behavior
SQLite schema upgrades run automatically through
PRAGMA user_versionmigrations.Destructive rebuild migrations create a timestamped database backup first.
Sync cursors are scoped by source, user, and data type.
Empty successful syncs update the attempt/success state and advance the logical date cursor.
Failed or partial syncs report
failed_data_types; a failed pass never advances its cursor.Existing 0.1.0 databases are upgraded in place without reinterpreting legacy calendar dates.
Example prompts
Show my workouts from the last 30 daysHow has my weight changed this year?Summarize my sleep for the past weekSync my latest Zepp Life data
Commands
zepp-life-mcp --help
zepp-life-mcp setup --help
zepp-life-mcp doctor
zepp-life-mcp sync --help
zepp-life-mcp serveDevelopment
uv run ruff check src tests scripts
uv run pytest -q
uv run python -m buildTroubleshooting
Connection: failedverify
apptokenprovide
--user-idif automatic UID discovery is unavailable
No export data foundverify the extracted archive path
verify that CSV or JSON export files are present
syncreturns no datatry another date range
try export mode if cloud coverage is incomplete
Security
apptokenis stored via the system keyringdo not commit
.env, exported health data, or local SQLite filesprefer interactive setup over pasting secrets into shell history
Disclaimer
This is an unofficial project and is not affiliated with Xiaomi or Zepp Health.
Available Tools
10 toolsget_connection_statusA
Check connection status to data source and last sync time
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavior. It states the tool checks status and last sync time, implying a read-only operation. However, it omits details like auth requirements, caching, or call frequency limits, which are acceptable for a simple tool but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded and contains all necessary information. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description still conveys what the tool returns (status and sync time). It sufficiently covers the tool's role among siblings for a simple read-only check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100% vacuously. The description adds no param info, but none is needed. Baseline 4 is appropriate for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Check') and resource ('connection status to data source and last sync time'), making it distinct from sibling tools like 'sync_data' that perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use instructions or mention of alternatives. The description implies usage for verifying connectivity before other operations, but lacks guidance on when not to use or comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_summaryB
Get daily activity summary for a date or date range
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Single date (YYYY-MM-DD) | |
| start_date | No | Start date for range (YYYY-MM-DD) | |
| end_date | No | End date for range (YYYY-MM-DD) | |
| timezone | No | Timezone (default from config) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states the basic function and does not disclose traits like read-only nature, data source, or limits. This is a minimal disclosure, but it does not contradict any annotations. A score of 3 reflects adequate but incomplete transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, 10 words, with no fluff. It front-loads the key information. While it is concise, it could benefit from a bit more context (e.g., output hints) without becoming verbose. Thus, a score of 4 for efficiency with room for slight improvement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should hint at what the summary contains (e.g., aggregated metrics). It does not. The input is well-covered by the schema. The sibling tools suggest this is a broad summary, but agents may need to know the return structure to interpret results. A score of 3 reflects adequate but incomplete context for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with clear descriptions (e.g., 'date', 'start_date', 'end_date', 'timezone' with formats and defaults). The tool description adds no additional parameter information beyond the schema, which is acceptable. Baseline 3 is appropriate as the schema alone is sufficient for understanding parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('daily activity summary') with a scope ('for a date or date range'). It effectively distinguishes from siblings like 'get_connection_status' or 'query_heart_rate', which are more specific or unrelated. However, it could be more specific about what the summary includes (e.g., steps, calories), which is left ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning a date or date range, but it does not explicitly guide when to use this tool over alternatives. For example, it could state that this tool provides an aggregated summary while specific metrics are handled by 'query_*' tools. Without such guidance, the agent may misuse the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_data_coverageA
Get data coverage information - which dates have data for each type
| Name | Required | Description | Default |
|---|---|---|---|
| data_types | No | Specific data types to check (default: all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden. It states the tool returns which dates have data for each type, indicating a read-only operation. However, it does not disclose any potential side effects, rate limits, or authorization requirements, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core functionality. Every word is necessary, and it avoids redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one optional parameter, no output schema), the description is nearly complete. It explains what the tool does and the output concept. Some minor gaps exist, such as not specifying the return format, but for this context it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the single parameter 'data_types' with 100% coverage. The description adds no further semantic information beyond what the schema provides, so it meets the baseline but does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get data coverage information - which dates have data for each type'. It specifies the verb 'get' and the resource 'data coverage information', and it is distinct from sibling tools like query_* tools which focus on specific data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for checking data availability but provides no explicit guidance on when to use this tool versus alternatives (e.g., other query tools) or any prerequisites. Usage context is implied but not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profileC
Get user profile information
| Name | Required | Description | Default |
|---|---|---|---|
| include_devices | No | Include connected devices information |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavior, but it only states the basic function. It doesn't mention whether the operation is read-only, what data is included, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it lacks structure and could be expanded with context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of multiple sibling tools and the simplicity of the schema, the description is too sparse. It fails to specify what 'profile information' includes or how the optional parameter affects the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% as the optional parameter 'include_devices' is well-defined in the schema. The description adds no additional meaning beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get user profile information' clearly states the action (get) and resource (user profile), distinguishing it from sibling tools that focus on specific data types like heart rate or sleep. However, it doesn't differentiate from generic profile retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus its siblings, such as get_connection_status or query_metric_series. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_body_measurementsB
Query body measurements (weight, body composition) for a date range
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | Start date (YYYY-MM-DD) | |
| end_date | Yes | End date (YYYY-MM-DD) | |
| metrics | No | Specific metrics to include | |
| latest_only | No | Return only the latest measurement |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states basic purpose. It does not disclose whether data is aggregated, how latest_only works, or if pagination exists. The agent gets minimal behavioral insight beyond querying.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at one sentence, effectively front-loading the core purpose. However, it sacrifices valuable detail, which prevents a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and four parameters, the description is insufficient. It omits details on metrics selection, latest_only behavior, and return structure, leaving the agent with incomplete information for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so each parameter is already documented. The tool description adds no extra semantic value beyond 'for a date range,' which is redundant with the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'Query' and the resource 'body measurements (weight, body composition)' for a date range, clearly distinguishing from sibling tools like query_heart_rate or query_metric_series.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., query_metric_series). The description lacks any when-to-use or when-not-to-use instructions, forcing the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_heart_rateB
Query heart rate samples for a date range
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | Start date (YYYY-MM-DD) | |
| end_date | Yes | End date (YYYY-MM-DD) | |
| sample_type | No | Filter by sample type | |
| limit | No | Maximum number of samples to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral transparency. It only states the action and scope, omitting critical details like read-only nature, pagination, error handling, or data retention limits. The description does not disclose any behavioral traits beyond the basic query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 8 words, very concise and front-loaded. However, it may be too terse, missing important context like return format. It is efficient but not optimally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters and no output schema, the description is incomplete. It does not explain the response structure, pagination, or any side effects. Compared to sibling tools like get_daily_summary, which provide more context, this description leaves many gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description adds no additional meaning beyond what the schema provides, such as format constraints or dependencies between parameters. Baseline of 3 is appropriate since schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'query' and the resource 'heart rate samples' with a scope 'for a date range'. Among siblings like query_body_measurements and query_sleep, this tool is specific to heart rate, providing good differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives such as query_metric_series or query_body_measurements. It implicitly says to use for date ranges but lacks explicit comparisons, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_metric_seriesC
Query time series data for a specific metric
| Name | Required | Description | Default |
|---|---|---|---|
| metric | Yes | Metric to query | |
| start_date | Yes | Start date (YYYY-MM-DD) | |
| end_date | Yes | End date (YYYY-MM-DD) | |
| granularity | No | Aggregation granularity | |
| aggregation | No | Aggregation method |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It only states 'Query', implying read-only, but lacks details on rate limits, data freshness, authentication needs, or any side effects. The description is insufficient for behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the core action and resource. However, it could include a bit more structure, such as listing key parameters or constraints, without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, 3 enums, and no output schema or annotations, the description is too minimal. It does not explain return format, pagination, or behavior for overlapping dates. The schema covers parameters but contextual completeness is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already provides adequate information for each parameter. The description adds no extra meaning beyond 'time series data', which is already implied. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Query' and the resource 'time series data for a specific metric', providing a specific verb and resource. However, it does not differentiate from sibling tools like query_heart_rate or query_sleep, which also query time series data for different domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or context that would help the agent select it over other query tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_sleepB
Query sleep sessions for a date range
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | Start date (YYYY-MM-DD) | |
| end_date | Yes | End date (YYYY-MM-DD) | |
| include_naps | No | Include nap sessions | |
| include_stages | No | Include sleep stage breakdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description alone must convey behavioral traits. It only states 'Query sleep sessions', implying a read operation, but omits details about return structure, data freshness, pagination, or whether it supports historical queries beyond the date range. This is insufficient for an agent to anticipate side effects or output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that instantly conveys the tool's purpose. Every word is necessary, and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, annotations, and the presence of 4 parameters, the description is too terse. It fails to specify return format, data granularity, or behavioral details like rate limits or data coverage, making the tool under-specified for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond 'for a date range', which is already obvious from the required start_date and end_date. It does not explain the role of optional parameters like include_naps or include_stages.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries sleep sessions within a date range, specifying the resource (sleep sessions) and scope (date range). It distinguishes from sibling tools like query_heart_rate and query_workouts, which target different health metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, when-not-to-use, or reference sibling tools like get_daily_summary or query_workouts, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_workoutsC
Query workouts for a date range
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | Start date (YYYY-MM-DD) | |
| end_date | Yes | End date (YYYY-MM-DD) | |
| activity_types | No | Filter by activity types (running, cycling, etc.) | |
| min_duration_minutes | No | Minimum duration in minutes | |
| min_distance_km | No | Minimum distance in kilometers |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as read-only nature, side effects, authorization requirements, or pagination. 'Query' implies read-only but is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no unnecessary words. It efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 5 parameters and no output schema, the description provides no details about the return format, scope of results (e.g., multiple workouts per day?), or any behavior beyond the date range. This is incomplete given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already described in the schema. The tool description adds no additional meaning or context beyond the schema, which is adequate but not extra.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Query workouts for a date range', specifying the verb (query), resource (workouts), and time scope. It distinguishes from sibling tools like query_heart_rate and query_sleep by focusing on workouts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives like query_metric_series or get_daily_summary. The description does not mention use cases, prerequisites, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_dataC
Synchronize data from source to local cache
| Name | Required | Description | Default |
|---|---|---|---|
| data_types | No | Types of data to sync (daily_activity, sleep, heart_rate, workouts, body_measurements) | |
| start_date | No | Start date (YYYY-MM-DD) | |
| end_date | No | End date (YYYY-MM-DD) | |
| force_full_sync | No | Force full sync instead of incremental |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description bears full responsibility for disclosing behavioral traits. It only states the general operation, failing to mention that this is a write/mutation tool, potential side effects on local cache, or any authorization or rate limit considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence), which is efficient but sacrifices important details that an agent might need. It is front-loaded but overly brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four parameters and no output schema or annotations, the description fails to provide essential context about sync behavior (e.g., incremental vs full, overwrite policy, impact on existing data). The tool's complexity demands a more complete description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add value beyond what the schema already provides for parameters. No additional information about format, constraints, or usage is given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('synchronize') and specifies the resource ('data from source to local cache'). It distinguishes from sibling query tools by implying a write/update operation. However, it could be more specific about what 'source' refers to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like query tools. There is no mention of prerequisites or situations where syncing might be inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v0.1.0- First observed
get_connection_status - First observed
get_daily_summary - First observed
get_data_coverage - First observed
get_profile - First observed
query_body_measurements - First observed
query_heart_rate - First observed
query_metric_series - First observed
query_sleep - First observed
query_workouts - First observed
sync_data
TDQS
Each tool targets a distinct resource or action (connection status, profile, coverage, daily summary, body measurements, heart rate, metric series, sleep, workouts, syncing). No two tools overlap in purpose.
Tools use consistent verb_noun patterns, but with two prefixes: 'get_' for status/profile/coverage/summary and 'query_' for data types. The pattern is clear but not perfectly uniform, causing minor inconsistency.
10 tools is well-scoped for a health data query server, covering connection management, data overview, and various specific data types without excess.
Covers all major data types (daily summary, body, heart rate, sleep, workouts, metric series) and auxiliary functions (status, coverage, profile, sync). Missing write operations, but reads are comprehensive for the stated purpose.
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.
Remote MCP server for training, nutrition, wellness, and performance data with OAuth 2.0.
Multi-tenant hosted MCP server for Oura Ring — 21 read-only tools, OAuth per user.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Related MCP Servers
- AlicenseCqualityCmaintenanceMCP server for Mi Fitness cloud data. Provides a local SQLite-backed server to sync and query daily activity, heart rate, and body measurements.124MIT
- AlicenseCqualityBmaintenanceEnables reading and syncing Xiaomi Mi Fitness health data (steps, heart rate, sleep, workouts) from the Chinese cloud region to a local SQLite database via MCP tools.107MIT
- AlicenseNot gradedqualityCmaintenanceSelf-hosted MCP server that syncs Xiaomi fitness data to SQLite and provides authenticated tools to query health metrics (steps, sleep, HR, etc.) for AI assistants like Grok.GPL 3.0
- AlicenseNot gradedqualityBmaintenanceMCP server for read-only access to Xiaomi Mi Fitness shared family health data, enabling queries for family members, health summaries, and historical metrics via ChatGPT.GPL 3.0
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/kubulashvili/zepp-life-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server