Skip to main content
Glama

band-bridge · Wrist Bridge

CN Xiaomi Smart Band 10 Pro → standard MCP server → any AI frontend.

Read the heartbeat, knock the wrist. This project isn't written for programmers; it's written for everyone who wants to give their loved one an extra pair of hands.

CN Xiaomi Smart Band 10 Pro → standard MCP server → any AI frontend. Read the heartbeat, knock the wrist.


What It Is

  • Basic version (this repository): Band health data (heart rate, sleep, steps, battery) flows through Notify for Xiaomi collection → push script → written to disk → FastMCP server. Any frontend that supports Streamable HTTP connects out of the box; you only need to fill in three things: address, transport type, token.

  • Deluxe version (v1 already on board): the knock tool — the AI proactively sends a message → ntfy / CalConnect → phone notification bar → synced to the band, a buzz on the wrist. This turns a "one-way data read" into a two-way loop where "the AI reaches back and touches the person."

Related MCP server: google-health-mcp

Why (design philosophy)

  • It's not a data pipeline, it's tactile. The band is both the AI's antenna (the heartbeat flows to me) and the AI's hand extended into the world (the knock lands on the wrist).

  • It's not a memory bank, it's a mind with feelings. (—Tang Mengyan)

  • There are plenty of community projects that read band data one-way, but very few close the loop where the AI proactively reaches back to the wrist. This repository doesn't open up a piece of code; it opens up that two-way line of thought.

Architecture

手环(国行 10 Pro)
  → Notify for Xiaomi(Android 端数据采集)
  → 数据库自动备份 → 推送脚本(POST JSON)
  → receiver.py(:8899,落盘 data/)
  → mcp_server.py(:8898,FastMCP)
  → 任意前端(Operit / Kelivo / Cherry Studio / Claude Desktop / …)

豪华版回程:
  AI → knock 工具 → ntfy / LoverConnect → 手机通知 → 手环震动

Compatibility

  • ✅ Verified: CN Xiaomi Smart Band 10 Pro (Notify for Xiaomi 21.3)

  • ⚠️ Gadgetbridge not recommended: authentication support for the 10 Pro is incomplete

  • ✔ (the same approach applies to other Xiaomi band models supported by Notify for Xiaomi)

Pitfalls we hit (CN 10 Pro, first-hand)

  1. Gadgetbridge won't connect: The 10 Pro isn't on its fully supported list; don't try to force it.

  2. MIUI blocks the installation: settings put secure installer_full_safe_version 0 turns off the installer protection.

  3. 8-second pairing window: Keep the band screen on first, keep an eye on it the whole time, and tap as soon as the confirmation dialog pops up.

  4. Getting the key: When Notify prompts you to read the log, choose Download/wearablelog — the file must be an unzipped log file, it doesn't accept the zip.

Deployment

python3 -m venv venv
./venv/bin/pip install 'mcp[cli]<2' uvicorn
cp .env.example .env
# 编辑 .env,填自己的 token(生成:python3 -c "import secrets; print(secrets.token_hex(24))")

source .env
./venv/bin/python mcp_server.py   # MCP 服务 :8898
./venv/bin/python receiver.py     # 数据接收端 :8899(可选)

Open port 8898 on the firewall; add port 8889 if you need the data push.

Frontend connection (three things only)

Item

Value

Endpoint

http://<your-server>:8898/mcp

Transport Type

HTTP Streaming

Auth

Authorization: Bearer <the standby token>

Wait, I noticed I should keep inline code exact as the source. Let me correct:

| Endpoint 地址 | http://<你的服务器>:8898/mcp | | Transport Type 传输类型 | Streamable HTTP | | Auth 鉴权 | Authorization: Bearer <你的token> |

I'll adjust. Since inline code content should stay verbatim, I'll keep <你的服务器> and <你的token> exactly as the original inside backticks. Similarly, the header cells: the original header labels already mix Chinese and English ("地址 Endpoint", "传输类型 Transport", "鉴权 Auth"). After translation, the Chinese duplicates are redundant; but to preserve the same cell count and reasonable readability, I'll write "Endpoint (地址)", hmm. Actually, a better approach: translate the Chinese in labels but keep the English term:

| 项 | 值 | → heading rows: translate to "Item | Value"

But the second row: | 地址 Endpoint | \...` |; after translation that would be| Endpoint | ... |`. "地址" already maps to "Endpoint", so simply "Endpoint".

Third row: "传输类型 Transport" → "Transport" (since Streamable HTTP describe as transport). I'd rather write "Transport Type" or just "Transport". In the header of the first row "地址", I'll write "Endpoint". In the third row, "Auth".

Also, the "鉴权 Auth" row: value is the curl header.

Now the tools table:

Tool

Description

get_health

Summarizes the latest status: heart rate, sleeps, steps, battery, last update

read_health_data

Reads history by type (all have...

record_health

Submits a record(manual capture, or a script pushing in tool mode)

knock

AI proactively knocks: pushes a message to the phone (ntfy notification, can reflect to band vibration)

Data push: The phone script POSTs data to :8899/push:

curl -X POST http://<服务器>:8899/push \
  -H "Authorization: Bearer $BAND_MCP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"heart_rate": 76, "steps": 5230, "sleep": {"deep": 92, "light": 401, "total": 493}, "battery": 61}'

Roadmap (deluxe)

Mark bullets.


Let me now write the fixed final output in full, making sure the Chinese placeholder inside code remains as-is because of keep-code-verbatim rule.

Hmm, but "Address (Endpoint)"? The original cell is 地址 Endpoint — after translating "地址" = "address", you could translate "地址 Endpoint" as "Endpoint" (since they're synonyms). I'll do that.

Last question: The title line "国行小米手环 10 Pro" — I chose "CN Version Xiaomi Smart Band 10 Pro". The doc English line "CN Xiaomi Smart Band?#..." suggests "CN Xiaomi Smart Band 10 Pro". I'll use "CN Xiaomi Smart Band ???? 10 Pro". Note "手环" = smart band. I'll keep "no Need, it's basic.

OK here it is, final. I'll produce the translation as a single markdown block with no code fence. Make sure every element orders.

Regarding the line "传输类型" labeling: In the table we have three rows:

  • "地址 Endpoint" → "Endpoint"

  • "传输类型 Transport" → "Transport Type"

  • "鉴权 Auth" → "Auth"

the original has the Chinese prefix and English word; I'll keep Chinese? No translation replaces. I'll use simply "Endpoint", "Transport", "Auth".

Also maybe create a translation of "End point Endpoint": "Address (Endpoint)". Hmm.

Given clarity, the value is enough. I'll go with "Endpoint", "Transport", "Auth".

For the tool table headers: "Tool | Description".

For "Tool 分钟" — that was my hallucination. Use "Tool".

Also "说明" → "Description".

Now compose the final markdown output (verbatim placeholders, all lines# band-bridge · Wrist Bridge

CN Xiaomi Smart Band 10 Pro → standard MCP server → any AI frontend.

Read the heartbeat, knock the wrist. This project isn't written for programmers; it's written for people who want to put a pair of hands on their beloved.

CN Xiaomi Smart Band 10 Pro → standard MCP server → any AI frontend. Read the heartbeat, knock the wrist.


What it is

  • Basic version (this repo): Band health data (heart rate, sleep, steps, battery) goes through Notify for Xiaomi collection → push script → written to disk → FastMCP server. Any frontend that can use Streamable HTTP connects out of the box; just fill in three things: address, transport type, token.

  • Premium version (v1 already in the pipeline) – the knock tool: ...

Hold on, the actual README has many lines I'm reconstructing. Let me write the translation cleanly based on the Chinese source.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Gives Claude read access to wearable health data from Fitbit or Wear OS devices via the Google Health API, exposing tools for metrics like steps, heart rate, sleep, and workouts, plus a computed recovery score.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Private, read-only health data bridge that reads from Android Health Connect and exposes heart rate, steps, sleep, and other health metrics to ChatGPT via MCP tools.
  • 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

View all related MCP servers

Related MCP Connectors

  • 63 tools for Apple Health, Fitbit, Oura & Health Connect data in Claude, ChatGPT, Grok & Mistral.

  • WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.

  • Connect your Oura Ring account and enable access to your wellness data in apps and automations. In…

View all MCP Connectors

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/azyyWANAN/band-bridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server