mcpField
I
iOS Web Bluetooth (WebBLE)

iOS Web Bluetooth (WebBLE)

Local
ioswebble.comDeveloper Tools11Updated 6w ago

About iOS Web Bluetooth (WebBLE)

An MCP server and CLI that help coding agents add, migrate, and verify beacio support for Web Bluetooth in iOS Safari. It provides consumer guidance and separate tools for working inside the beacio monorepo.

Key features

  1. 01Framework- and package-specific install plans
  2. 02Patch existing Web Bluetooth apps
  3. 03Verify integration with runnable checks
  4. 04BLE examples and troubleshooting guides
  5. 05Developer documentation and source search
  6. 06Scaffold projects with the beacio CLI

Use cases

  1. 01Add beacio to a new web project
  2. 02Adapt an existing Web Bluetooth app for iOS Safari
  3. 03Diagnose extension detection or GATT failures
  4. 04Find documentation and examples in the monorepo

MCP support

The MCP server exposes consumer tools for beacio integration and troubleshooting, plus optional developer tools for the beacio monorepo. Responses include source URLs pointing to beacio documentation.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"wklm-ios-web-bluetooth": {
"command": "npx",
"args": [
"-y",
"@ios-web-bluetooth/mcp"
]
}
}
}
Run commandnpx -y @ios-web-bluetooth/mcp

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@ios-web-bluetooth/mcp0.1.1

Tools

7

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
frameworkenumYeshtml | react | vue | svelte | angular | next
include_premiumbooleanNo
package_managerenumYesnpm | pnpm | yarn | bun | cdn

Details

From the project 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:

npx -y @beacio/mcp

Or add it to your MCP client config (example: Claude Desktop, ~/Library/Application Support/Claude/claude_desktop_config.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:

npx beacio init       # auto-detect framework and add the detection snippet
npx beacio migrate    # brownfield: patch an existing Web Bluetooth app for iOS Safari
npx 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):

{
  "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

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.