MCP server: One MCP server.

beacio MCP

@beacioMCP server · External

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

Health trackingv1.0.1TypeScript
Freeno charge per call

Runs on your machine from its package; the steps are below.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: only reads or looks up information.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Runs locally over stdio

This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).

npm@beacio/mcpv1.0.1

Run

npx -y @beacio/mcp

MCP client config

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

beacio — Web Bluetooth for iPhone Safari

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

bash
npm install @beacio/core
typescript
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):

html
<script src="https://beacio.com/beacio.js"></script>

Similar modules

Browse Health tracking