ble-mcp-transport
v0.0.3
Published
Bluetooth Low Energy transport for MCP using Web Bluetooth API
Maintainers
Readme
BLE MCP Transport
A Node.js BLE transport that enables MCP clients to communicate with MCP devices over BLE GATT. It relies on @abandonware/noble for scanning, connecting, and characteristic I/O, and includes JSON-RPC message framing for MTU-constrained links.
Features
- Scan and connect to peripherals by service UUID
- Bidirectional messaging via RX/TX characteristics
- Message packetization and reassembly for large payloads
- Compatible with the @modelcontextprotocol/sdk Transport interface
Quick Start
Install
npm i ble-mcp-transportimport { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { BleTransport } from "ble-mcp-transport";
const transport = new BleTransport({
scanTimeout: 10000,
});
const client = new Client(
{ name: "ble-mcp-client", version: "1.0.0" },
{ capabilities: {} }
);
await client.connect(transport);
const tools = await client.listTools();
console.log(tools);Transport Options
BleTransport supports these optional settings:
serviceUuid: Service UUID (defaults to the built-in value)rxCharUuid: RX characteristic UUID (defaults to the built-in value)txCharUuid: TX characteristic UUID (defaults to the built-in value)namePrefix: Peripheral name prefix filterscanTimeout: Scan timeout in milliseconds (default 10000)
Built-in UUIDs:
- Service:
00001999-0000-1000-8000-00805f9b34fb - RX:
4963505f-5258-4000-8000-00805f9b34fb - TX:
4963505f-5458-4000-8000-00805f9b34fb
Protocol and Framing
- Uses BLE GATT for communication
- RX characteristic: client writes messages
- TX characteristic: server notifies messages
- Start packet includes total length; subsequent packets increment sequence
- JSON-RPC messages are emitted after full reassembly
Development
npm run buildRequirements
- Node.js runtime
- A BLE adapter and appropriate OS permissions
