Skip to main content
Glama

Zepp Life MCP

CI Release License

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_file for local Zepp exports

  • cloud_session for apptoken-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:

  1. Open https://user.huami.com/privacy2/index.html

  2. Sign in to the Zepp Life account

  3. Open browser DevTools

  4. Find the apptoken cookie

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 doctor

Use

zepp-life-mcp sync --start-date 2022-01-01 --end-date 2022-12-31
zepp-life-mcp serve

MCP 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

get_connection_status

Report configuration, lazy connection state, and sync health

sync_data

Sync selected data types with optional start_date, end_date, and force_full_sync

get_profile

Return the connected user ID/timezone and accept the compatible include_devices option

get_daily_summary

Query one date or a date range of daily activity

query_metric_series

Query steps, distance_m, active_kcal, weight_kg, or sleep_minutes by day/week/month with sum/avg/min/max/latest

query_sleep

Query sleep sessions by sleep start date with optional naps/stages

query_workouts

Query workouts with activity, duration, and distance filters

query_heart_rate

Query resting/active/passive/workout heart-rate samples

query_body_measurements

Query weight/body metrics with optional latest-only output

get_data_coverage

Report first/last dates and days with data by type

Sync and storage behavior

  • SQLite schema upgrades run automatically through PRAGMA user_version migrations.

  • 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 days

  • How has my weight changed this year?

  • Summarize my sleep for the past week

  • Sync 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 serve

Development

uv run ruff check src tests scripts
uv run pytest -q
uv run python -m build

Troubleshooting

  • Connection: failed

    • verify apptoken

    • provide --user-id if automatic UID discovery is unavailable

  • No export data found

    • verify the extracted archive path

    • verify that CSV or JSON export files are present

  • sync returns no data

    • try another date range

    • try export mode if cloud coverage is incomplete

Security

  • apptoken is stored via the system keyring

  • do not commit .env, exported health data, or local SQLite files

  • prefer 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 tools
get_connection_statusA

Check connection status to data source and last sync time

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoSingle date (YYYY-MM-DD)
start_dateNoStart date for range (YYYY-MM-DD)
end_dateNoEnd date for range (YYYY-MM-DD)
timezoneNoTimezone (default from config)

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
data_typesNoSpecific data types to check (default: all)

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
include_devicesNoInclude connected devices information

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesStart date (YYYY-MM-DD)
end_dateYesEnd date (YYYY-MM-DD)
metricsNoSpecific metrics to include
latest_onlyNoReturn only the latest measurement

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesStart date (YYYY-MM-DD)
end_dateYesEnd date (YYYY-MM-DD)
sample_typeNoFilter by sample type
limitNoMaximum number of samples to return

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
metricYesMetric to query
start_dateYesStart date (YYYY-MM-DD)
end_dateYesEnd date (YYYY-MM-DD)
granularityNoAggregation granularity
aggregationNoAggregation method

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesStart date (YYYY-MM-DD)
end_dateYesEnd date (YYYY-MM-DD)
include_napsNoInclude nap sessions
include_stagesNoInclude sleep stage breakdown

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesStart date (YYYY-MM-DD)
end_dateYesEnd date (YYYY-MM-DD)
activity_typesNoFilter by activity types (running, cycling, etc.)
min_duration_minutesNoMinimum duration in minutes
min_distance_kmNoMinimum distance in kilometers

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
data_typesNoTypes of data to sync (daily_activity, sleep, heart_rate, workouts, body_measurements)
start_dateNoStart date (YYYY-MM-DD)
end_dateNoEnd date (YYYY-MM-DD)
force_full_syncNoForce full sync instead of incremental

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 10 tool updatesv0.1.0
    • First observedget_connection_status
    • First observedget_daily_summary
    • First observedget_data_coverage
    • First observedget_profile
    • First observedquery_body_measurements
    • First observedquery_heart_rate
    • First observedquery_metric_series
    • First observedquery_sleep
    • First observedquery_workouts
    • First observedsync_data

TDQS

B3.4/5.0
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

10 tools is well-scoped for a health data query server, covering connection management, data overview, and various specific data types without excess.

Completeness4/5

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

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    C
    quality
    B
    maintenance
    Enables 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.
    10
    7
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Self-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

Latest Blog Posts

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