mcpField
B
Bluetooth LE Health Sensors

Bluetooth LE Health Sensors

本地服务
github.com健康医疗235 周前更新

关于 Bluetooth LE Health Sensors

该 MCP 服务读取实现 Bluetooth SIG 标准健康 GATT 配置的 BLE 传感器,面向生理学、运动科学和睡眠研究等实验场景。它可采集心率与 HRV、血氧、血压、体温和体重数据;仅供研究及实验室运营,不是医疗设备。

主要功能

  1. 01扫描附近 BLE 健康设备
  2. 02记录心率、RR 间期和 HRV
  3. 03读取血氧与脉搏率
  4. 04接收血压、体温和体重读数
  5. 05获取设备信息与电量

适用场景

  1. 01记录胸带数据并计算 HRV 指标
  2. 02采集血氧仪的血氧与脉搏率
  3. 03等待血压计、体温计或体重秤读数

MCP 相关

向 MCP 客户端提供读取标准健康 GATT 服务的工具,涵盖传感器发现、读数采集和设备信息查询;不会向设备写入控制数据。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"k-dense-ai-labmcp-ble-health": {
"command": "uvx",
"args": [
"labmcp-ble-health"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
启动命令uvx labmcp-ble-health
需要配置的环境变量
LABMCP_ADDRESSInstrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025
LABMCP_SIMULATESet to 1 to use the built-in simulator (no hardware)
LABMCP_READ_ONLYSet to 1 to disable all state-changing tools
LABMCP_LIMITSSafety limit overrides, e.g. max_temperature_c=80

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypilabmcp-ble-health0.1.3

工具

11

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

Bluetooth LE 健康传感器 — MCP 服务

让 AI Agent 读取任何实现 Bluetooth SIG 标准健康配置文件的 Bluetooth Low Energy 传感器:从胸带读取带 RR 间期和 HRV 的心率,从血氧仪读取 SpO2 和脉率,并从监测仪、温度计和体重秤采集血压、体温和体重读数,适用于生理学实验室、运动科学研究、睡眠/HRV 研究和实验室运营场景。

警告

仅用于研究和实验室运营。这不是医疗器械。 不用于诊断、患者监测、分诊或任何临床决策,且未经任何监管机构验证或批准。消费级传感器的读数可能不准确;数值会经过 AI Agent 处理,可能被误读。切勿使用此服务的输出做出健康决策。个人读数属于个人数据:请遵守伦理审批和数据保护规定。

软件包labmcp-ble-health
仪器任何实现 Bluetooth SIG 配置文件的设备:心率胸带/臂带(Heart Rate Service 0x180D)、脉搏血氧仪(Pulse Oximeter Service 0x1822)、血压监测仪(0x1810)、体温计(Health Thermometer 0x1809)、体重秤(Weight Scale 0x181D),以及电池(0x180F)和设备信息(0x180A)
接口Bluetooth Low Energy,通过 bleak 实现(Linux/BlueZ、macOS/CoreBluetooth、Windows/WinRT)
协议Bluetooth SIG GATT:GATT Specification Supplement、HRS 1.0、PLXS 1.0.1、BLS 1.1.1、HTS 1.0、WSS 1.0.1;IEEE 11073-20601 SFLOAT/FLOAT,依据 PHD Transcoding White Paper v16
状态🧪 模拟:已通过会发出字节完全匹配的 GATT 数据包的 BLE 模拟后端测试,尚未在硬件上验证。报告硬件测试结果

无硬件试用

uvx labmcp-ble-health --simulate --check

模拟器提供六台设备(地址为 00:00:5E:00:53:01–06,取自 IANA 文档地址段):一台组合式“健康套件”(默认),提供所有服务;以及独立的心率胸带、血氧仪、血压监测仪、体温计和体重秤。可使用例如 --simulate --address 00:00:5E:00:53:04 选择设备。

连接设备

  1. 检查设备是否使用标准配置文件。 只有实现了上述 Bluetooth SIG 服务的设备才能正常工作。许多消费级可穿戴设备(大多数智能手表、许多健身手环,以及一些血压计和体重秤品牌)使用专有协议;有些设备也只会在“配对”/“数据传输”模式下使用标准配置文件。支持 Heart Rate Service 的胸带是进行 HRV 测量时最可靠的选择。
  2. 释放设备连接。 BLE 传感器通常只接受一个连接:连接前请关闭厂商的手机应用(或关闭手机蓝牙)。
  3. 查找地址: 不带 --address 启动服务,然后让 Agent 运行 scan_devices;或者在设备进入广播模式后(佩戴胸带;按下血压计的蓝牙/启动按钮),带 --check 运行。Linux/Windows 上的地址是 MAC 地址(AA:BB:CC:DD:EE:FF);macOS 上的地址是 CoreBluetooth UUID,且仅对应你的电脑。
  4. 测试连接:
    uvx labmcp-ble-health --address AA:BB:CC:DD:EE:FF --check                       # Linux / Windows
    uvx labmcp-ble-health --address 1A2B3C4D-1111-2222-3333-444455556666 --check    # macOS
    
    需要绑定的设备(血压计和体重秤较常见):在 Linux/Windows 上添加 --option pair=true;macOS 会自动显示系统配对提示。在 Linux 上选择非默认适配器时,使用 --option adapter=hci1;使用 --option connect_timeout_s=40 延长设备发现时间(最长 60 秒)。

macOS:启动服务的终端(或 MCP 客户端应用)需要获得蓝牙权限(System Settings › Privacy & Security › Bluetooth)。如果没有权限,macOS 会在蓝牙功能被触及时立即终止进程(退出代码 134),且不会打印任何错误消息。

添加到 MCP 客户端

Claude Code

claude mcp add hr-strap -- uvx labmcp-ble-health --address AA:BB:CC:DD:EE:FF

Claude Desktop / Cursor / Windsurf(claude_desktop_config.json、.cursor/mcp.json,……)

{
  "mcpServers": {
    "hr-strap": {
      "command": "uvx",
      "args": ["labmcp-ble-health", "--address", "AA:BB:CC:DD:EE:FF"]
    }
  }
}

所有工具均为只读(不会更改设备上的任何内容,也不会写入控制点),因此 --read-only 不会产生任何影响。如果同时使用多个传感器,请为每台设备分别配置一个服务条目。对于其他客户端,可使用 uvx labmcp config ble-health --address AA:BB:CC:DD:EE:FF --client vscode 生成配置片段(也支持 cursor、codex、claude-code)。

工具

工具类型描述
get_command_log👁 读取返回最近发送给仪器的原始命令及收到的回复(最新记录在最后)。可用于调试和记录操作。
get_connection_info👁 读取报告已连接的仪器(身份、地址、模拟或真实)、服务是否为只读,以及当前生效的安全限制。请先调用此工具。
get_device_info👁 读取读取设备身份信息(制造商、型号、序列号、固件)、设备提供的标准健康服务及其功能。
read_battery👁 读取读取设备电量(Battery Service,0-100 %)。
read_pulse_oximetry👁 读取从脉搏血氧仪读取 SpO2(%)和脉率,返回几秒内的平均值或单次抽查读数。
read_temperature👁 读取等待体温计发送温度测量值,并以 °C 返回。
read_weight👁 读取等待体重秤发送体重测量值(kg);如果体重秤提供 BMI 和身高,也会一并返回。
reconnect🛑 安全关闭并重新打开与仪器的连接(例如仪器断电重启或重新插接电缆后)。
record_heart_rate👁 读取记录 duration_s 时长的心率:bpm 序列、RR 间期和时域 HRV(平均 HR、SDNN、RMSSD、pNN50)。
scan_devices👁 读取扫描附近的 Bluetooth LE 设备:地址、名称、信号强度和广播的健康服务。无需配置 --address 即可使用。
wait_for_blood_pressure👁 读取等待血压计发送测量值:收缩压、舒张压、平均动脉压(mmHg)和脉率。

get_connection_info、get_command_log 和 reconnect 是每个 LabMCP 服务内置的工具。

安全限制

限制默认值含义
max_record_duration_s600 sAgent 可启动的最长心率记录时长或连续血氧测量平均窗口
max_wait_s300 s工具等待血压、体温、体重或单次测量读数的最长时间

启动时覆盖:--limit max_record_duration_s=1800。请注意,许多 MCP 客户端也会为每次工具调用设置自己的超时;较长时间的记录可能也需要调高该超时(例如 Claude Code 中的 MCP_TOOL_TIMEOUT)。

示例提示词

  • “用胸带记录 5 分钟的心率,给我平均 HR、SDNN 和 RMSSD,并将原始 RR 间期保存到 ~/hrv/p07_baseline.csv。”
  • “扫描附近的心率胸带,告诉我哪个信号最强。”
  • “等待血压计:我现在启动袖带。报告收缩压/舒张压,以及设备是否标记了身体移动或脉搏不规律。”
  • “用血氧仪测量 30 秒的平均 SpO2 和脉率,并告诉我有多少个样本不可用。”
  • “参与者站上体重秤时读取数值,并使用设备时间戳记录体重和 BMI。”
  • “开始本次测量前,胸带的电量是多少?”

注意事项

  • 测量设备主动推送数据,不会被轮询。 血压计、体温计、体重秤和点测式血氧仪只有在测量完成时才会指示一个数值(无法读取这些设备特性)。先调用工具,再进行测量。工具会持续扫描并重新连接,直到超时,因为许多监测仪只有在测量后才会广播(血氧仪需要设置 mode="spot_check";auto 必须先连接,才能确定设备支持哪种模式)。
  • 一次只进行一项测量。 在同一服务上开始测量会取消仍在运行的测量(例如,在 MCP 客户端中工具调用已超时的记录);reconnect 也会取消测量;被取消的调用会返回错误。
  • 格式错误的数据包会被跳过并记录到日志中(get_command_log),而不是丢弃整段记录;record_heart_rate 和 read_pulse_oximetry 会在 malformed_packets 中报告其数量。
  • save_path(record_heart_rate)必须是一个新的 .csv 文件:~ 会被展开,缺失的文件夹会被创建,且绝不会覆盖现有文件。此项会在开始记录前检查。
  • 已存储的测量值。 监测仪连接时会连续发送尚未发送的已存储读数,顺序为从最早到最新。工具会在收到第一个读数后继续监听 1.5 s,并将最新读数作为结果返回,同时在 other_measurements 中列出较早的读数;设备时钟时间位于 device_timestamp 中(设备本地时间;如果从未设置过时钟,通常不准确)。
  • 特殊值(IEEE 11073 NaN、NRes、±INF)绝不会转换为数字:它们会以 null 和说明的形式报告(special_values、unavailable_samples)。血氧仪在采集数据的最初几秒通常会发送 NaN。
  • 单位:血压的 kPa 会转换为 mmHg(1 kPa = 7.500617 mmHg),°F 会转换为 °C,lb 会转换为 kg;unit_reported 会说明设备发送的单位。根据 Weight Scale 规范,体重分辨率为 0.005 kg / 0.01 lb;0xFFFF 表示“测量失败”,此时返回 weight_kg: null。能量消耗单位为 kJ(HRS 1.0)。
  • HRV 根据传感器发送的 RR 间期计算(单位为 1/1024 s):SDNN(样本标准差)、RMSSD、pNN50。超出 0.3–2.0 s 范围的 RR 间期会被排除为伪差;不会进行进一步的伪差校正或异位搏动编辑。如果某条通知在空中丢失,跨越该间隔计算出的连续差值就不是真正的逐搏差值。光学腕部传感器通常根本不会发送 RR 间期。除探索性研究外,请使用经过验证的 ECG 系统。
  • 增强型血压测量、记录访问控制点(下载监测仪的全部存储数据)、当前时间和用户数据服务均未实现;绝不会向设备写入任何内容。
  • 蓝牙配对、绑定密钥和操作系统权限由操作系统处理;服务绝不会接触 PIN 码。

硬件验证

型号固件接口验证者日期
尚无: 成为第一个

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。