BLEA — Claude Code MCP server: Bluetooth LE diagnostics
Lets an agent scan for BLE devices, walk GATT services, and read or write characteristics under explicit confirmation. Useful when you need to inspect real hardware instead of guessing from logs.
claude mcp add blea -- uvx bleaWhat BLEA does
BLEA stands for Bluetooth Low Energy Automation. One runtime, ble, serves two surfaces: plain subcommands print deterministic JSON or JSONL for scripts and shells, while ble mcp launches a stdio MCP server exposing the same tools with managed BLE sessions. Alongside it comes a skill that spells out the workflow and the safety boundaries, plus an MCP declaration.
The covered loop is the usual one: confirm the OS grants Bluetooth access, locate the right device nearby, enumerate GATT services, keep raw bytes as evidence and compare captures across runs. Anything that changes state waits for permission — pair takes --allow-pairing and a device confirmation, exchange takes --allow-write. Offline work is supported too: diff compares two captures, replay re-runs a saved one.
Python 3.10 or newer is required, and the OS supplies Bluetooth through Bleak. Install the runtime from PyPI first, because the local MCP server looks for the ble executable on PATH. Device names only resolve when exactly one scanned device carries that name, so prefer the identifier from scan — on macOS that is normally a UUID, not a MAC address.
What it helps with
- check whether the OS exposes Bluetooth to tools
- pick the right device out of a crowded scan
- enumerate GATT services and characteristics
- keep raw bytes and compare two captures
- read a characteristic before changing device state
Example prompts for the agent
- Run
ble doctor --jsonand tell me what it says about Bluetooth access. - Scan for 8 seconds and list the devices you find.
- Diff
before.blea.jsonlagainstafter.blea.jsonlwithble diff.
How to install BLEA
Platform CLI
claude mcp add blea -- uvx bleauvx runs the command named after the package; if the README names another one, use uvx --from blea <command>
Platform CLI
codex mcp add blea -- uvx bleauvx runs the command named after the package; if the README names another one, use uvx --from blea <command>
Config file
{
"mcpServers": {
"blea": {
"command": "uvx",
"args": [
"blea"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from blea <command>
Config file
{
"servers": {
"blea": {
"type": "stdio",
"command": "uvx",
"args": [
"blea"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from blea <command>
Platform CLI
gemini mcp add blea uvx bleauvx runs the command named after the package; if the README names another one, use uvx --from blea <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about BLEA
How do I install BLEA in Claude Code?
Install the runtime first with uv tool install blea, then register the server: claude mcp add blea -- uvx blea.
What does BLEA do?
It hands an agent BLE tooling: scanning, GATT discovery, reads and subscriptions, confirmed writes, plus offline diff and replay of captured data.
What does BLEA need to run?
Python 3.10 or newer and OS-level Bluetooth access via Bleak. The skill does not install the runtime, so blea from PyPI is a separate step.