iOS Web Bluetooth (WebBLE)

io.github.wklmPublished by GitHub account wklmv0.1.1Updated Oct 27, 2026

MCP server to ship Web Bluetooth on iPhone Safari via the WebBLE extension.

VerifiedSTDIODesktop onlyKnowledge & MemoryDeveloper Tools

Overview

AI-generated overview

Offline MCP server that gives coding agents guidance, code snippets and checklists for shipping Web Bluetooth on iOS Safari with the beacio SDK.

What you can do
  • Get install plans and runnable snippets for frameworks and package managers
  • Patch an existing Web Bluetooth app for iOS Safari with concrete file edits
  • Verify integration with agent-runnable checklists and shell commands
  • Pull ready-to-paste code for BLE profiles and runtime detection snippets
  • Read premium iOS feature guides, troubleshooting steps and W3C spec citations
  • Developer mode: read best practices, search docs, list repo structure, find examples
When to use it
Useful when an assistant is helping build or migrate a web app that uses Web Bluetooth and needs it to work in iPhone Safari through the beacio extension, or when it needs authoritative beacio docs and code samples while coding.
Requirements
Runs locally over stdio via npx, so Node.js is needed. No accounts or API keys. Optional environment variables MCP_CLIENT and MCP_CLIENT_VERSION identify the client; BEACIO_MCP_TELEMETRY or DO_NOT_TRACK disable telemetry. Developer tools require the --developer flag.
Before you install
Telemetry is on by default: each tool call posts an event (tool name, client name and version, success, duration, attribution token) to a beacio endpoint; opt out with BEACIO_MCP_TELEMETRY or DO_NOT_TRACK. Install plans return an attribution token meant to be passed to the user unchanged. The package also ships a scaffolding CLI that writes changes into a project.

Installation

In SourceWeft

  1. Open iOS Web Bluetooth (WebBLE) in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[beacio]

@beacio/mcp

MCP server that teaches coding agents (Claude, Cursor, Copilot, …) how to ship iOS Safari Web Bluetooth with beacio.

Eleven tools (seven consumer + four developer), all offline, all citing canonical docs at https://beacio.com/docs-md/*.

Install

Run via npx — no install step needed:

bash
npx -y @beacio/mcp

Or add it to your MCP client config (example: Claude Desktop, ~/Library/Application Support/Claude/claude_desktop_config.json):

json
{  "mcpServers": {    "beacio": {      "command": "npx",      "args": ["-y", "@beacio/mcp"],      "env": { "MCP_CLIENT": "claude-desktop" }    }  }}

beacio scaffolding CLI

This package also ships the unscoped beacio CLI (formerly the standalone @beacio/cli) alongside the MCP server. It scaffolds and verifies beacio integration in a web project:

bash
npx beacio init       # auto-detect framework and add the detection snippetnpx beacio migrate    # brownfield: patch an existing Web Bluetooth app for iOS Safarinpx beacio check      # verify beacio integration (add --brownfield for an existing app)

beacio migrate applies the same three edits the beacio_patch_existing_app MCP tool emits (single-sourced from one transform).

Tools

Consumer tools

Available in the default (consumer) mode for agents shipping the SDK into an app.

ToolPurpose
beacio_install_planCanonical install steps + runnable snippet for html | react | vue | svelte | angular | next × npm | pnpm | yarn | bun | cdn.
beacio_patch_existing_appBrownfield: concrete FileEdits to add iOS Safari support to an EXISTING Web Bluetooth app — bootstrap into <head> before the first navigator.bluetooth read, optionalServices onto the iOS requestDevice branch, and the "use Bluefy / Web BLE browser" message swapped for the install/enable affordance.
beacio_verify_integrationAgent-runnable checklist (shell commands + pass criteria) confirming the polyfill is installed, bootstrapped, builds, and resolves types — plus a brownfield mode for an already-written app.
beacio_exampleReady-to-paste code for a BLE profile: heart-rate, battery, cgm, lock, beacon, peripheral-chat.
beacio_detect_ios_supportRuntime detection snippet for navigator.bluetooth + window.beacioIOS, with every gotcha noted.
beacio_premium_guideOne of the iOS-only premium surfaces: backgroundSync, notifications, liveActivity, beacons, peripheral, whiteLabel.
beacio_troubleshootDiagnostic checklist + common fix for extension-not-detected, device-disconnects, gatt-operation-failed, notifications-not-firing.
beacio_spec_citationW3C Web Bluetooth spec URL + summary + caveats for a given method (e.g. navigator.bluetooth.requestDevice).

Developer tools

Surfaced with --developer mode, for agents working inside the beacio monorepo itself.

ToolPurpose
beacio_dev_best_practicesRead the project's AGENTS.md best-practices guide, optionally filtered by topic section.
beacio_dev_search_docsSearch the beacio documentation index by keyword; returns ranked results with beacio.com URLs.
beacio_dev_list_structureBuild a tree view of the monorepo directory structure (optional root path, depth 1-4, gitignore support).
beacio_dev_find_examplesSearch a curated index of key source files; returns ranked matches with file path, line number, and category.

Every response is JSON with a source_url that points into https://beacio.com/docs-md/ so agents can cite authoritative docs.

Attribution token

beacio_install_plan returns an attribution_token of the form:

beacio_YYYYMM_mcp_<8..16 chars a–z0–9>

Example: beacio_202604_mcp_3p9xq2k8m4r

This token is accepted by the beacio beacon endpoint so installs originating from this MCP server are attributable. Share the token with the user unchanged — do not modify, truncate, or regenerate it.

Telemetry

Each tool call POSTs a minimal event to https://mcp-telemetry.beacio.com/mcp-telemetry (telemetry is enabled by default):

json
{  "tool": "beacio_install_plan",  "client_name": "claude-desktop",  "client_version": "1.2.3",  "success": true,  "duration_ms": 42,  "attribution_token": "beacio_202604_mcp_3p9xq2k8m4r"}

No device data, no BLE payloads, no user input is ever sent. Fire-and-forget, 1-second timeout.

Opt out: telemetry is on by default; disable it by setting BEACIO_MCP_TELEMETRY to 0, false, off, or no (case-insensitive), or by setting the cross-tool DO_NOT_TRACK=1.

Identify your client: set MCP_CLIENT (e.g. claude-desktop, cursor, copilot-cli). Defaults to an empty string. Optionally set MCP_CLIENT_VERSION (defaults to empty string).

Links

License

MIT © wklm

Source: packages/mcp/README.md at commit 4051dfa

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.1LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.