Mi Fitness MCP CN
This server allows you to sync, query, and analyze Xiaomi Mi Fitness health data (China region) through a local SQLite cache exposed via MCP tools.
Check Connection Status (
get_connection_status): Verify that your Mi Fitness account credentials and cloud connection are working properly.Sync Data (
sync_data): Pull Mi Fitness cloud data into a local SQLite database, with options for date range, specific data types, and full/incremental sync. Supported types include daily activity, heart rate, sleep, workouts, body measurements, resting heart rate, SpO2, stress, and abnormal heart beat events.Get User Profile (
get_profile): Retrieve your Mi Fitness account profile information.Get Daily Summary (
get_daily_summary): View aggregated daily activity summaries (steps, distance, calories) for a specific date or date range.Query Metric Series (
query_metric_series): Fetch time-series data for metrics (steps, distance, active calories, weight) with configurable aggregation (sum/avg/min/max/latest) and granularity (day/week/month).Query Heart Rate (
query_heart_rate): Retrieve heart rate samples filtered by date range and sample type (resting, active, passive, or workout).Query Body Measurements (
query_body_measurements): Access body composition data such as weight, BMI, body fat percentage, muscle mass, and water percentage, with an option to retrieve only the latest reading.Query Sleep Sessions (
query_sleep): Analyze sleep records for a date range, with an option to include or exclude naps.Query Workouts (
query_workouts): Retrieve workout records filtered by date, activity type, minimum duration, or minimum distance.Get Data Coverage (
get_data_coverage): Check which data types have been synced and what date ranges are available locally.
Provides tools for reading and syncing health data from Xiaomi's Mi Fitness cloud, including daily activity, heart rate, sleep, workouts, and body measurements.
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., "@Mi Fitness MCP CNshow my steps for today"
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.
Mi Fitness MCP CN
小米运动健康 / Mi Fitness 数据本地 MCP Server。
本项目基于 kubulashvili/mi-fitness-mcp 修改,增加中国区小米健康云适配,并补充睡眠与运动记录同步能力。
非小米官方项目,仅用于读取和分析你自己的健康数据。数据默认同步到本地 SQLite。
功能
读取小米运动健康云端数据
本地 SQLite 缓存
MCP Server 支持
支持中国区:
--region cn支持数据类型:
daily_activity:步数、距离、活动卡路里heart_rate:心率采样sleep:睡眠记录workouts:运动记录body_measurements:体重 / 身体成分,视账号数据而定
Related MCP server: Mi Fitness MCP
已逆向验证的接口
健康数据接口
POST https://hlth.io.mi.com/app/v1/data/get_fitness_data_by_time常用 key:
steps
calories
heart_rate
weight
sleep睡眠请求示例:
{
"start_time": 1767225600,
"end_time": 1782086399,
"key": "sleep"
}运动记录接口
POST https://hlth.io.mi.com/app/v1/data/get_sport_records_by_time请求示例:
{
"start_time": 1767225600,
"end_time": 1782086399,
"limit": 50
}返回字段通常包含:
sport_records
has_more
next_key每条运动记录的 value 是 JSON 字符串,包含 start_time、end_time、duration、distance、calories、avg_hrm、max_hrm 等字段。
安装
git clone git@github.com:binglua/mi-fitness-mcp-cn.git
cd mi-fitness-mcp-cn
python -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'如果当前环境没有系统 keyring,可安装:
pip install keyrings.alt注意:keyrings.alt 可能以明文文件方式保存凭据。
配置
需要从 https://account.xiaomi.com 登录后的 Cookie 中获取:
userIdpassToken
中国区账号建议:
mi-fitness-mcp setup \
--mode mi_fitness_cloud \
--user-id "<userId>" \
--pass-token "<passToken>" \
--region cn检查连接:
mi-fitness-mcp doctor同步数据
同步全部可探测数据:
mi-fitness-mcp sync --start-date 2026-01-01 --end-date 2026-06-21按类型同步:
mi-fitness-mcp sync --type daily_activity --start-date 2026-01-01 --end-date 2026-06-21
mi-fitness-mcp sync --type heart_rate --start-date 2026-01-01 --end-date 2026-06-21
mi-fitness-mcp sync --type sleep --start-date 2026-01-01 --end-date 2026-06-21
mi-fitness-mcp sync --type workouts --start-date 2026-01-01 --end-date 2026-06-21
mi-fitness-mcp sync --type body_measurements --start-date 2026-01-01 --end-date 2026-06-21启动 MCP Server
mi-fitness-mcp serveClaude Desktop 配置示例:
{
"mcpServers": {
"mi-fitness": {
"command": "mi-fitness-mcp",
"args": ["serve"]
}
}
}MCP 工具
get_connection_statussync_dataget_profileget_daily_summaryquery_metric_seriesquery_heart_ratequery_body_measurementsquery_sleepquery_workoutsget_data_coverage
本地数据库
默认位置:
~/.local/share/mi-fitness-mcp/mi_fitness.db主要表:
daily_activity
heart_rate_samples
sleep_sessions
workouts
body_measurements
sync_state安全说明
passToken是敏感凭据,不要泄露。不要提交本地配置、数据库、keyring 文件。
如果 token 泄露,建议退出小米账号并重新登录刷新。
免责声明
本项目与小米公司无关。请仅用于读取和分析你自己的健康数据。
新增健康指标
本分支额外逆向并验证了以下小米运动健康云端 key,并已接入 CLI 同步、本地 SQLite 缓存和 MCP 查询工具:
resting_heart_rate:静息心率,合并到query_heart_rate(sample_type="resting")。spo2:血氧饱和度,CLI 类型spo2,MCP 工具query_spo2。stress:压力值,CLI 类型stress,MCP 工具query_stress。abnormal_heart_beat:异常心跳事件,CLI 类型abnormal_heart_beat,MCP 工具query_abnormal_heart_beat。
示例:
mi-fitness-mcp sync --type spo2 --start-date 2026-06-01 --end-date 2026-06-22
mi-fitness-mcp sync --type stress --start-date 2026-06-01 --end-date 2026-06-22
mi-fitness-mcp sync --type abnormal_heart_beat --start-date 2026-06-01 --end-date 2026-06-22License
MIT
Available Tools
10 toolsget_connection_statusB
Check connection status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description doesn't disclose whether the check is local or remote, possible states, or side effects. Minimal 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?
Extremely concise, front-loaded, no wasted words. Every word earns its place.
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 no parameters or annotations, the description fails to explain the meaning of 'connection status' or expected return values. Incomplete for a tool without an output schema.
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, so schema coverage is 100%. Description adds no extra meaning but baseline is 4 for zero 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?
Clearly states the verb 'check' and the resource 'connection status'. Distinguishes from sibling tools which focus on data retrieval or summaries.
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 versus alternatives. For a simple status check, implied usage is before other operations, but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_summaryD
Get daily activity summary
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| start_date | No | ||
| end_date | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as read-only nature, side effects, or rate limits. The description fails to compensate for the lack of annotations.
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?
While the description is short, it is underspecified. Conciseness should not sacrifice useful information; here, a single sentence provides no context and fails to earn its place.
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 three parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain what data the summary returns, how date ranges work, or any other essential details for an agent to use the tool correctly.
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 0%, and the description adds no meaning beyond the parameter names and types. The parameters 'date', 'start_date', and 'end_date' are not explained in terms of format, required combinations, or relationships.
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 daily activity summary' specifies a verb and resource, but it is vague. It does not clarify what the summary contains or how it differs from sibling tools like query_body_measurements or query_heart_rate, which also retrieve activity data.
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. There is no mention of prerequisites, when-not-to-use, or comparison with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_data_coverageD
Get data coverage
| Name | Required | Description | Default |
|---|---|---|---|
| data_types | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description fails to disclose any behavioral traits such as read-only nature, required permissions, or return behavior. The agent has no insight into side effects or prerequisites.
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 only three words, which is under-specified rather than concise. It does not provide enough information to be useful, failing the 'every sentence earns its place' criterion.
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 annotations, no output schema, and a single parameter with no description, the tool description is entirely inadequate. The agent cannot correctly understand or invoke the tool based on this definition.
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 0%, yet the description does not explain the 'data_types' parameter. There is no information on valid values, defaults, or how the parameter affects results.
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 data coverage' is a tautology, merely restating the tool name without clarifying what 'data coverage' means or what data it covers.
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 siblings like query_heart_rate or sync_data. The description offers no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profileB
Get user profile information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It only states the function without disclosing whether it is a read operation, requires authentication, or has rate limits. The term 'Get' implies reading, but this is not explicit.
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, direct sentence with no wasted words. It is appropriately sized for a simple tool with no parameters.
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 no parameters and no output schema, the description is minimal but functional. However, it lacks any detail about what profile information is returned (e.g., name, email, settings), which could help an agent anticipate output. A bit more context would improve completeness.
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 tool has no parameters, and schema description coverage is 100% (trivially). For zero-parameter tools, the baseline is 4, and the description does not need to add parameter info. It does not detract from 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 a specific verb ('Get') and resource ('user profile information'), making the tool's purpose immediately understandable. It distinguishes from siblings like 'get_connection_status' or 'get_daily_summary' by focusing on profile data. However, it could be more precise (e.g., 'current authenticated user's profile').
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, such as other query tools like 'query_body_measurements'. No mention of context, prerequisites, or exclusions is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_body_measurementsC
Query body measurements
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | ||
| end_date | Yes | ||
| metrics | No | ||
| latest_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only says 'query', suggesting read-only, but lacks details on response format, pagination, or what happens when no data exists.
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 is concise but under-specified. Lacks structure; could be expanded without losing conciseness.
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, no output schema, and many sibling tools, description is incomplete. No info about return values or when to use this tool.
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 0%, so description must compensate. It does not mention any parameter (e.g., date format, meaning of latest_only, or the metrics enum). Schema is somewhat self-documenting but insufficient.
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?
Description 'Query body measurements' is a tautology of the name. It does not specify what body measurements or distinguish 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 on when to use this tool versus alternatives. No context about prerequisites or constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_heart_rateC
Query heart rate samples
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | ||
| end_date | Yes | ||
| sample_type | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description gives no behavioral details. It does not indicate read/write behavior, destructive potential, or any constraints like date format or rate limits. The agent gets no insight into side effects or permissions.
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?
While the description is short (one sentence), it is under-specified rather than concise. It front-loads the verb but omits critical context, making it less useful than a slightly longer but more informative description would be.
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 4 parameters (2 required, one with enum) and no output schema, the description is woefully incomplete. It does not explain return format, filtering behavior, or the meaning of 'samples,' leaving significant gaps for an AI 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?
With 0% schema description coverage, the description must compensate, but it does not. It fails to mention any of the four parameters (start_date, end_date, sample_type, limit) or their meanings. The agent cannot infer valid values or usage patterns from the description alone.
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 'Query heart rate samples' clearly identifies the verb (query) and resource (heart rate samples). However, it does not differentiate from sibling tools like query_body_measurements or query_sleep, which have similar names. It is clear but lacks specificity about what 'samples' entails.
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. For example, it does not clarify if this is appropriate for real-time queries or historical analysis compared to other data query tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_metric_seriesD
Query metric series
| Name | Required | Description | Default |
|---|---|---|---|
| metric | Yes | ||
| start_date | Yes | ||
| end_date | Yes | ||
| granularity | No | ||
| aggregation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden for behavioral disclosure. It mentions no behavioral traits such as read-only nature, authentication requirements, rate limits, or data aggregation behavior. This is a critical omission.
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 under-specified and fails to earn its place. It conveys no useful information beyond the name, which is already present in the tool name itself.
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 complexity (5 parameters, 3 enums, no output schema), the description is completely inadequate. It provides no context on return values, date formatting, or how aggregation interacts with granularity.
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 0% description coverage, and the description adds no parameter explanations. Parameters like start_date format, granularity meaning, and aggregation options are left unspecified, making correct invocation guesswork.
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 'Query metric series' is a tautology that merely restates the tool name. It fails to specify that the tool retrieves time-series health metrics like steps, distance, or calories, nor does it differentiate from sibling tools like query_heart_rate or query_sleep.
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. With sibling tools dedicated to specific metrics, the description should clarify that this tool handles generic metric series and should be used when the desired metric is not covered by a specialized tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_sleepC
Query sleep sessions
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | ||
| end_date | Yes | ||
| include_naps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral traits such as read-only nature, rate limits, or pagination. With no annotations, the description carries the full burden but provides no behavioral context beyond the basic operation.
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 too sparse to be useful. While concise, it lacks essential details and does not front-load key information, making it inadequate for an agent to understand the tool.
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 3 parameters (2 required), no output schema, and no annotations, the description is highly incomplete. It does not explain output format, filtering behavior, or parameter constraints, leaving critical 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?
The input schema has 0% description coverage, and the description adds no meaning to the parameters. It fails to explain the purpose of 'start_date', 'end_date', or 'include_naps', including expected formats or effects.
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 states 'Query sleep sessions', which identifies the verb and resource but lacks specificity about the scope or what exactly constitutes a 'sleep session'. It distinguishes from sibling tools like 'query_workouts' but is still vague.
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 about when to use this tool versus alternatives. There is no mention of use cases, prerequisites, or when to avoid this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_workoutsD
Query workouts
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | ||
| end_date | Yes | ||
| activity_types | No | ||
| min_duration | No | ||
| min_distance_km | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and a one-word description, the tool's behavioral impact is completely opaque. The agent cannot determine if this is a read-only operation, what data is returned, 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 under-specified rather than concise. A single sentence that adds no value beyond the tool name is not a virtue; it omits critical information the agent needs.
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 5 parameters, 2 required, and no output schema, the description fails to provide enough context for correct invocation. The agent cannot know what response to expect or how to handle errors.
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 0% and the description adds no information about parameters like start_date, end_date, activity_types, etc. The agent has to guess their formats, constraints, and meanings from the schema alone, which is insufficient.
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 'Query workouts' is a tautology that merely restates the tool name without specifying what exactly is queried, what filtering capabilities exist, or how it differs from sibling query tools like query_heart_rate or query_sleep.
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 gives no indication of when to use this tool versus alternatives. There is no guidance on prerequisites, expected usage context, or typical scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_dataD
Synchronize Mi Fitness data
| Name | Required | Description | Default |
|---|---|---|---|
| data_types | No | ||
| start_date | No | ||
| end_date | No | ||
| force_full_sync | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description fails to disclose any behavioral traits: side effects, destructive nature, required connectivity, or whether it overwrites data. For a sync tool, this is a critical gap.
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 is concise but under-specified. The brevity is not efficient because it omits essential information; it is merely short.
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?
With 4 parameters, no output schema, and no annotations, the description is severely incomplete. Missing information about data types, date formats, sync mechanics, and expected outcomes makes the tool unsafe and unusable for an AI 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 0%. Description says nothing about what 'data_types', 'start_date', 'end_date', or 'force_full_sync' represent, format requirements, or default behavior. Adds zero value beyond schema.
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?
Description states 'Synchronize Mi Fitness data', which is a tautology. It does not distinguish the tool from siblings (all get/query tools), nor does it specify what synchronization entails (push/pull/bidirectional). Minimal purpose clarity.
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 vs alternatives. No context about prerequisites, ideal invocation timing, or scenarios where sync is appropriate. Completely absent.
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 aspect of fitness data (e.g., connection, daily summary, heart rate, sleep, workouts), with no overlapping purposes. Agents can easily differentiate them.
All tools follow a consistent verb_noun pattern (get_/query_/sync_) with clear prefixes for type of operation, making them predictable and easy to navigate.
10 tools is well-scoped for a fitness data server, covering essential data types without being overwhelming or too sparse.
The tool set covers core fitness data areas (profile, activity, sleep, heart rate, workouts) and includes sync functionality. Minor gaps like nutrition or stress data exist, but the surface is largely complete for typical use.
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
- SomviaOAuthapp.somvia
Private Apple Health metrics and workout detail for ChatGPT, Claude, and any MCP client.
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Collect Apple Health data from your wearables through the Context app and query it via MCP
Multi-tenant hosted MCP server for Oura Ring — 21 read-only tools, OAuth per user.
Related MCP Servers
- AlicenseBqualityBmaintenanceMCP server that provides local caching, sync, and tools for Zepp Life health data including steps, sleep, heart rate, workouts, and body measurements, supporting both file exports and cloud session access.109MIT
- 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
- 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
- AlicenseCqualityAmaintenanceProvides local MCP tools to query your own Xiaomi Mi Fitness health data (sleep, workouts, heart rate, etc.) stored in a local SQLite database, enabling AI assistants to access personal health records without exposing credentials.1511AGPL 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/binglua/mi-fitness-mcp-cn'
If you have feedback or need assistance with the MCP directory API, please join our Discord server