Search DevTools

Jump to any tool or page

mcp

Unexplored

MCP server for Web Bluetooth on iOS Safari: scaffolding, UUID lookup, extension detection.

wklm6 stars0 forksBrowser & Web
View source

Install

Terminal

$npx -y @beacio/mcp

mcp_config.json

{
  "mcpServers": {
    "com-beacio-mcp": {
      "args": [
        "-y",
        "@beacio/mcp"
      ],
      "command": "npx"
    }
  }
}

Documentation

beacio SDK

Web Bluetooth SDK for iOS Safari. Scan, connect, and talk to BLE devices from any web app.

Packages

PackagePurposeSize
@beacio/coreBLE scanning, connecting, GATT read/write/subscribe~4KB gzip
@beacio/core/detectiOS extension detection + install banner~2KB gzip
@beacio/core/profilesTyped BLE profiles (heart rate, battery, etc.)Optional
@beacio/reactReact hooks (useDevice, useCharacteristic)Optional
@beacio/mcpMCP server for AI coding agents + the beacio scaffolding CLI (npx beacio init)Optional

Quick Start

npm install @beacio/core
import { initBeacio, isIOSSafari } from '@beacio/core/detect';
import { beacio, BeacioError } from '@beacio/core';

// 1. On iOS Safari, detect the extension and prompt install if missing
if (isIOSSafari()) {
  await initBeacio({
    operatorName: 'MyApp',
    banner: { mode: 'sheet' },
    onReady: () => console.log('Extension ready'),
  });
}

// 2. Scan and connect (works on iOS Safari + Chrome + Edge)
const ble = new beacio();
const device = await ble.requestDevice({
  filters: [{ services: ['heart_rate'] }],
});

await device.connect();

// 3. Read a value
const value = await device.read('heart_rate', 'heart_rate_measurement');
console.log('Heart rate:', value.getUint8(1));

// 4. Subscribe to notifications
const unsub = device.subscribe('heart_rate', 'heart_rate_measurement', (v) => {
  console.log('Heart rate:', v.getUint8(1));
});

// 5. Clean up
unsub();
await device.disconnect();

For plain HTML (no bundler):

Sourced from the repository README.

More in Browser & Web