Skip to main content
Glama
COLMI Smart Ring MCP Server

COLMI Smart Ring MCP Server

by orviwan

COLMI Smart Ring Toolkit & Cross-Platform MCP Server

Python Version License: MIT Platform Protocol: MCP Tests Passing Privacy

The definitive open-source toolkit, reverse-engineered Bluetooth Low Energy (BLE) protocol specification, and Model Context Protocol (MCP) server for COLMI R02, COLMI R03, and compatible smart rings. Connect physical health rings directly to AI agents (Claude Desktop, Cursor, Antigravity, VS Code) without vendor clouds, accounts, or subscriptions.


๐Ÿ” Search Keywords & Supported Hardware

Supported Devices:

  • COLMI R02 & COLMI R03 Smart Rings

  • COLMI R01, R04, R05, R06, R07, R08, R10 family

  • QRing OEM Variants: KSIX Ring, boAt Ring, Blaupunkt, VK-5098, MERLIN, Hello Ring, RING1, TR-R02, OneRing, BOK.

  • SoC Families: BlueX Micro RF03 / RF03-01 (ARM Cortex-M0) & Realtek RTL8762E / RTL8762ESF (ARM Cortex-M4F, RT02R revision).

Comparative Ecosystem:

  • Oura Ring (Gen 2, Gen 3, Ring 4)

  • Ultrahuman Ring AIR

  • RingConn (Gen 1 & Gen 2)

  • Samsung Galaxy Ring

Tags & Topic Index: colmi, colmi-r02, colmi-r03, smart-ring, oura-alternative, mcp-server, model-context-protocol, claude-desktop, cursor-ai, antigravity, bluetooth-le, ble, qring, reverse-engineering, local-first, biometrics, heart-rate-variability, hrv, sleep-staging, hypnogram, accelerometer, firmware.


Related MCP server: Oura MCP

๐ŸŒ Is it Cross-Platform?

YES, 100% Cross-Platform!

The toolkit and MCP server run natively on Linux, macOS, and Windows 10/11:

                       Cross-Platform Architecture
                       
                   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                   โ”‚    colmi-smart-ring MCP Server    โ”‚
                   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                     โ”‚
                                     โ–ผ
                   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                   โ”‚   bleak Cross-Platform Engine     โ”‚
                   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                     โ”‚
         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
         โ–ผ                           โ–ผ                           โ–ผ
 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
 โ”‚     Linux     โ”‚           โ”‚     macOS     โ”‚           โ”‚    Windows    โ”‚
 โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค           โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค           โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
 โ”‚ โ€ข BlueZ DBus  โ”‚           โ”‚ โ€ข Native Core โ”‚           โ”‚ โ€ข Windows.    โ”‚
 โ”‚ โ€ข Systemd /   โ”‚           โ”‚   Bluetooth   โ”‚           โ”‚   Devices.    โ”‚
 โ”‚   Raspberry Piโ”‚           โ”‚ โ€ข Apple Silicon/โ”‚           โ”‚   Bluetooth   โ”‚
 โ”‚ โ€ข dbus-fast   โ”‚           โ”‚   Intel Mac   โ”‚           โ”‚   (WinRT BLE) โ”‚
 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜           โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜           โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  1. Bluetooth Layer (bleak): Automatically selects the native OS Bluetooth subsystem:

    • Linux: Speaks directly to the Linux BlueZ daemon via asynchronous DBus sockets.

    • macOS: Communicates through Apple's native CoreBluetooth framework on both Apple Silicon (M1/M2/M3/M4) and Intel Macs.

    • Windows: Interfaces with the native Windows.Devices.Bluetooth Universal Windows Runtime (WinRT) APIs.

  2. MCP Protocol Layer (mcp 2.x): Operates over standard input/output (stdio), supported identically across all operating systems.

  3. No External Cloud Dependencies: Communicates directly from your computer to the ring on your finger over local 2.4 GHz radio.


โšก Feature Overview

  • ๐Ÿค– Model Context Protocol (MCP) Server: Exposes 8 native tools to AI agents (scan_rings, get_ring_status, blink_ring, sync_time, get_daily_activity, get_sleep_and_recovery, read_realtime_vitals, get_motion_sample).

  • ๐Ÿ”‹ Device Health & Battery: Real-time battery %, charging state, hardware revision (RY03_V3.0), firmware version (RY03_3.00.22).

  • ๐Ÿ’ก Physical Bidirectional Alerts: Let your AI assistant physically blink the optical LEDs on your ring (blink_ring) when code finishes compiling or tests pass.

  • ๐Ÿ’ค Sleep Staging & Hypnogram: Reads multi-night sleep data (Deep, REM, Light, Awake) via the Big Data channel (0xBC / ID 0x27).

  • ๐Ÿ“Š Insight Engine (Recovery Score 0โ€“100): Computes clinical-grade Recovery Scores, sleep efficiency, and Resting Heart Rate Nadir timing locally.

  • ๐Ÿƒ Step & Activity Telemetry: Daily cumulative steps, estimated calories, and distance.

  • ๐ŸŽฎ Raw 3-Axis Accelerometer (12-bit): Stream real-time motion at 25โ€“350 Hz with pitch, roll, vector magnitude, and tap detection for gesture control or MIDI.

  • ๐Ÿ”’ Zero Telemetry / 100% Privacy: No QRing app, no Chinese cloud servers, no account registration.


๐Ÿš€ Quickstart Installation

1. Clone & Install

git clone https://github.com/orviwan/mcp-for-colmi-smartring.git
cd mcp-for-colmi-smartring

# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
pip install -e .

๐Ÿค– Configuring with AI Assistants (Claude Desktop / Cursor)

A. Claude Desktop

Edit your Claude Desktop configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "smart-ring": {
      "command": "/path/to/Colmi/.venv/bin/python",
      "args": ["/path/to/Colmi/tools/colmi_mcp.py"],
      "env": {
        "PYTHONPATH": "/path/to/Colmi",
        "COLMI_RING_ADDRESS": "31:31:43:30:A9:00"
      }
    }
  }
}

(Tip: If you omit COLMI_RING_ADDRESS, the server will automatically scan and bind to whichever ring is closest).

B. Cursor IDE

In Cursor Settings $\rightarrow$ Features $\rightarrow$ MCP Servers (or in .cursor/mcp.json):

{
  "mcpServers": {
    "smart-ring": {
      "command": "/path/to/Colmi/.venv/bin/python",
      "args": ["/path/to/Colmi/tools/colmi_mcp.py"],
      "env": {
        "PYTHONPATH": "/path/to/Colmi"
      }
    }
  }
}

๐Ÿ› ๏ธ MCP Tools Reference (What the AI Can Do)

Tool Name

Parameters

Description

scan_rings

timeout_seconds (default: 4.0)

Scans for nearby rings and returns names, addresses, and RSSI.

get_ring_status

address (optional)

Reads battery percentage, charging state, hardware & firmware revisions.

blink_ring

address (optional)

Physically pulses green optical sensor LEDs twice (locator or notification chime).

sync_time

address (optional)

Synchronizes ring's internal RTC clock with computer's clock.

get_daily_activity

address, days_ago (default: 0)

Returns cumulative steps, calories (kcal), and distance (m).

get_sleep_and_recovery

address (optional)

Pulls sleep hypnogram and calculates Recovery Score (0โ€“100) with sleep stage breakdown.

read_realtime_vitals

address, metric, duration_seconds

Takes an active optical pulse (Heart Rate BPM or SpO2 %).

get_motion_sample

address (optional)

Samples 3-axis accelerometer for 2s (X/Y/Z g-forces, pitch, roll, magnitude).


๐Ÿ’ป Standalone Command-Line Tools

You can also run all tools directly from your terminal:

# 1. Scan for nearby rings
colmi-scanner
# (or: python tools/colmi_scanner.py)

# 2. Query status & battery
colmi-reader --address 31:31:43:30:A9:00 --info --battery --set-time

# 3. Blink finder LED
colmi-reader --address 31:31:43:30:A9:00 --blink

# 4. Stream real-time 3-axis motion & tap detector
colmi-accel --address 31:31:43:30:A9:00

# 5. Record accelerometer samples to CSV for ML/gesture training
colmi-accel --address 31:31:43:30:A9:00 --csv my_gesture.csv

# 6. Run the Biometric Insight & Recovery Scoring Engine (Demo Simulation)
colmi-insights --demo

๐Ÿ“š Deep-Dive Documentation Index

Documentation Guide

Contents

Smart Ring MCP Server Guide

Full architectural specification, JSON-RPC schemas, and Claude/Cursor conversation scenarios.

Biometric Insights Matrix

Physiological reference matrix comparing smart ring insights: HRV (RMSSD vs proxy), Resting Heart Rate nadir timing, sleep architecture, sleep apnea (ODI), temperature deviation, and custom recovery scoring formulas.

Hardware Architecture Deep Dive

Teardown analysis, physical specifications, SoC variants (BlueX RF03 vs Realtek RTL8762E), sensors (STK8321, VC30F), battery systems, and SWD debug pads.

BLE Protocol Specification

Byte-level wire protocol specification: 16-byte packet framing, checksum calculation, command tables (0x01โ€“0xA1), Big Data service (0xBC), sleep stage hypnograms, and OTA DFU firmware updates.

Smart Ring Industry Comparison

Master comparison matrix across COLMI, Oura Ring 3/4, Ultrahuman Ring AIR, RingConn Gen 1/2, and Samsung Galaxy Ring. Details sensor arrays, pricing, subscription models, cloud APIs, and BLE hackability.

Open-Source Ecosystem Directory

Survey of GitHub projects, Python/Go/TypeScript tools, Web Bluetooth apps, custom firmware patches (FasterRawValuesMOD, Nosh118 Low-Latency, 352Hz overdrive), and privacy analysis.

Sensor Capabilities & Clinical Validity

Biophysical principles of smart ring sensors, AC/DC PPG signal decomposition, optical pulse oximetry, HRV proxy analysis, and debunking fake metrics (blood pressure, blood glucose, ECG).

Guide: Getting Started with Python

Step-by-step tutorial on connecting to the ring, querying battery, synchronizing time, and streaming real-time heart rate using Python and bleak.

Guide: Raw Accelerometer & Gestures

How to stream raw 12-bit 3-axis motion data, calculate pitch/roll/g-force, detect taps and wave gestures, and map tilt to virtual mice or MIDI controllers.

Guide: Privacy & Cloudless Setup

How to ditch the proprietary QRing app and set up a 100% private, self-hosted telemetry pipeline with SQLite, VictoriaMetrics, Home Assistant, and Grafana.


๐Ÿงช Automated Testing

The repository includes a comprehensive pytest test suite with 20 unit tests verifying packet framing, 8-bit checksum algorithms, 12-bit signed accelerometer math, sleep hypnogram decoders, and MCP tool registrations:

PYTHONPATH=. pytest -v tests/

๐Ÿ™ Attributions & Prior Art

This project builds directly upon the reverse-engineering breakthroughs, packet logs, and hardware teardowns conducted by the open-source smart ring research community. We gratefully credit the following upstream projects and authors:

  • Aaron Christophel (@atc1441): Reverse-engineering the BlueX Micro RF03 SoC, STK8321 accelerometer, VC30F optical sensor, SWD pinouts, and creating the FasterRawValuesMOD firmware patch and Web Bluetooth flasher (atc1441/ATC_RF03_Ring).

  • Wesley Ellis (@tahnok): Developing the foundational Python BLE client, discovering the 16-byte packet structure and 8-bit checksum algorithm (tahnok/colmi_r02_client).

  • Tony Smith (@smittytone): Discovering and reverse-engineering the Big Data GATT channel (DE5BF728...) for multi-night sleep hypnograms and 24-hour SpO2 max/min records (smittytone/RingCLI).

  • Puxtril (@Puxtril): Documenting the complete QRing opcode catalog, device settings, and response schemas reverse-engineered from the COLMI R03 (Puxtril/colmi-docs).

  • Nosh118 (@Nosh118): Discovering the Realtek RTL8762ESF / RT02R hardware revision, QRing DFU OTA transfer protocol, and motion-to-MIDI mapping (Nosh118/colmi-ring-tools).

  • Robin O'JW (@robinojw): TypeScript implementation, modular BLE adapters, and test fixture references (robinojw/openring).

  • Cyril Zakka, MD (@cyrilzakka): Native iOS companion app connecting COLMI rings to Apple HealthKit with 100% local privacy (cyrilzakka/Halo-iOS).

  • CitizenOneX (@CitizenOneX): 12-bit accelerometer two's complement decoding and wave gesture detection (CitizenOneX/colmi_r0x_controller).

  • Juan Perez (@perezjuanj): Research into RingConn Gen 2 BLE protocol (perezjuanj/OpenCircuit).

See ATTRIBUTIONS.md for full license notices and upstream project details.


๐Ÿ“„ License

This project is licensed under the permissive MIT License โ€” see the LICENSE file for details.

Available Tools

8 tools
get_daily_activityA

Queries the smart ring for step count, estimated calories burned, and distance walked. days_ago: 0 for today, 1 for yesterday, etc.

Inputs: address, days_ago. Returns: result

get_motion_sampleB

Samples the Sensortek STK8321 3-axis accelerometer for 2 seconds. Returns g-force along X, Y, Z, total vector magnitude, pitch, and roll in degrees.

Inputs: address. Returns: result

get_ring_statusA

Connects to the smart ring and queries hardware revision, firmware revision, battery percentage, and current charging status. If address is omitted, automatically finds and connects to the nearest ring.

Inputs: address. Returns: result

get_sleep_and_recoveryB

Pulls multi-night sleep hypnograms (Light, Deep, REM, Awake) from the ring's Big Data service and runs the physiological InsightEngine to compute a 0-100 Recovery / Readiness Score.

Inputs: address. Returns: result

read_realtime_vitalsA

Activates the optical PPG biosensor on the ring to take a live measurement of Heart Rate (BPM) or SpO2 (%). metric: 'heart_rate' or 'spo2' duration_seconds: Duration to sample (10 to 30 seconds recommended). Note: The ring must be worn snugly on a finger with the sensor on the palm side.

Inputs: metric, address, duration_seconds. Returns: result

scan_ringsB

Scans for nearby smart rings over Bluetooth Low Energy. Returns list of discovered rings with device name, MAC address/UUID, and RSSI signal level.

Inputs: timeout_seconds. Returns: result

sync_timeB

Synchronizes the smart ring's internal real-time clock (RTC) with the host system's current time.

Inputs: address. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelogโ€ฆ

    TDQS

    A3.7/5.0

    Scored across 8 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: scanning/discovery, status/battery, time sync, sleep/recovery, daily activity, live vitals, motion sampling, and physical LED signaling. The only mild overlap is scan_rings vs get_ring_status, but their outputs and roles are well separated.

    Naming Consistency5/5

    All tool names use snake_case and follow a predictable verb_noun or verb_noun_phrase pattern (scan_rings, get_ring_status, sync_time, read_realtime_vitals). The use of get_, read_, scan_, sync_, and blink_ is consistent and readable.

    Tool Count5/5

    Eight tools are well-scoped for a smart ring MCP server, covering discovery, status, sync, health metrics, and device actions without feeling bloated or thin. Each tool appears to earn its place.

    Completeness4/5

    The surface covers core smart ring workflows: discovery, status, time sync, sleep, activity, live vitals, motion, and physical notification. Minor gaps exist for historical heart-rate/SpO2 retrieval or alarm/notification configuration, but agents can work around these for many use cases.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      B
      maintenance
      Local-first MCP server that connects AI agents to your Garmin sleep, HRV, Body Battery, stress, training readiness and activities, keeping tokens on your machine.
      2
      42
      484 npm
      13
      MIT
    • A
      license
      B
      quality
      A
      maintenance
      Local-first MCP server that connects AI agents to your Oura Ring readiness, sleep, activity, and HRV data. Tokens never leave your machine.
      27
      101 npm
      5
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to query personal health data collected by any wearable or phone fitness app through Android Health Connect or Apple Health, exposing read-only tools for metrics like heart rate, sleep stages, VO2 max, and body composition. It can run locally over USB with nothing stored, or be self-hosted on Cloudflare Workers with D1 to retain history beyond Health Connect's 30-day limit.
      20 npm
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Gives Claude and other MCP clients read-only access to Oura Ring data through the Oura API v2, exposing sleep sessions, readiness, activity, stress, heart rate, workouts and long-range trends as queryable tools. It runs locally, evens out the API's quirks, and keeps credentials on the user's machine.
      MIT