MCP server for Bluetooth Heart Rate Monitor. Provides tools and resources for HRM data, evaluation, and statistics results.
This server has moderate structural issues that significantly impact LLM usability. Tool names are reasonable but descriptions are inconsistent in quality and detail. Most critically, parameter descriptions lack actionable guidance on constraints, formats, and dependencies. Output schemas are partially documented but return types are not explicitly declared in the code. The server lacks error handling guidance, which is a major gap for an agent-oriented tool. No security considerations are evident in the implementation.
Build a heart rate plot chart using heart rate bucket data (bucket size 1s) and overlay the average heart rate line.
Evaluate the active heart rate by the max heart rate of last min.
Get the current HR, use last 10 sec and return the average of HR.
Get the heart rate bucket of the given since_from time in seconds and bucket_size in seconds.
Discover Bluetooth devices and filter by HRM profile. Returns a dic, key is the device id, value is a dict of device name and rssi.
Monitor the heart rate of the device for the given duration, default duration is 1800 seconds (30 minutes). The monitoring will be done in the background.
Missing output schema documentation. No tool declares its return type or structure explicitly. Documentation exists only in docstrings (e.g., 'dict', 'list[dict]', 'str'), making it impossible for LLMs to parse expected fields programmatically.
Parameter descriptions lack actionable constraints. 'since_from' and 'bucket_size' in get_heart_rate_bucket lack units, valid ranges, or edge case guidance. LLMs cannot determine if 0, negative, or extremely large values are safe.
No error handling or recovery guidance. Tools do not document failure modes (e.g., 'device not found', 'monitoring already in progress', 'BLE connection timeout'). LLMs have no guidance on how to recover from failures.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 52 | - | v1 |
Implicit dependencies not documented. monitoring_heart_rate should only be called after list_bluetooth_devices has identified a device, but this ordering is never stated. get_heart_rate requires active monitoring to be running, but this prerequisite is absent from the description.
No input validation rules stated. device_id parameter in monitoring_heart_rate is documented as 'the device UUID to monitor' but provides no format guidance (MAC address? full UUID?). No mention of required format or validation error messages.
Tool descriptions are inconsistent in detail. 'list_bluetooth_devices' and 'monitoring_heart_rate' have reasonable descriptions (50-70 chars), but 'evaluate_active_heart_rate' (47 chars) and 'get_heart_rate' (54 chars) are too terse. None include WHEN to use the tool vs. alternatives.