经 AI Skill Hub 精选评估,蓝牙MCP工具 获评「推荐使用」。这款MCP工具在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 7.5 分,适合有一定技术背景的用户使用。
蓝牙MCP工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
蓝牙MCP工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/stass/blew
# 方式二:手动配置 claude_desktop_config.json
{
"mcpServers": {
"--mcp--": {
"command": "npx",
"args": ["-y", "blew"]
}
}
}
# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
# 安装后在 Claude 对话中直接使用 # 示例: 用户: 请帮我用 蓝牙MCP工具 执行以下任务... Claude: [自动调用 蓝牙MCP工具 MCP 工具处理请求] # 查看可用工具列表 # 在 Claude 中输入:"列出所有可用的 MCP 工具"
// claude_desktop_config.json 配置示例
{
"mcpServers": {
"__mcp__": {
"command": "npx",
"args": ["-y", "blew"],
"env": {
// "API_KEY": "your-api-key-here"
}
}
}
}
// 保存后重启 Claude Desktop 生效
The MCP server (the blew mcp subcommand) depends on the MCP swift-sdk, which requires the Swift 6.1 toolchain (Xcode 16.3+). To keep blew building on older toolchains, MCP support is compiled in conditionally: when built with Swift 6.1 or newer the mcp subcommand is available; when built with Swift 6.0.x (Xcode 16.0–16.2) the MCP server is omitted and every other command works unchanged. No flags are needed — the detection happens automatically in Package.swift.
git clone --recurse-submodules https://github.com/stass/blew.git
swift build -c release
cp .build/release/blew /usr/local/bin/blew
--recurse-submodules is required — the Bluetooth SIG name and characteristic databases are included as git submodules under Vendor/. The Swift build generates all data files automatically from the submodule data.
On first run, macOS will prompt for Bluetooth permission. Grant it in System Settings → Privacy & Security → Bluetooth.
---
```sh
A ble_scan call returns:
{
"type": "devices",
"devices": [
{
"id": "A1B2C3D4-...",
"name": "Heart Rate Sensor",
"rssi": -55,
"serviceUUIDs": ["180D"],
"serviceDisplayNames": ["Heart Rate"]
}
]
}
A ble_read call returns:
{
"type": "readValue",
"readValue": {
"char": "2A19",
"name": "Battery Level",
"value": "85",
"format": "uint8"
}
}
---
These options apply to all commands and must be placed before the subcommand name:
% blew [global-options] <command> [command-options]
| Flag | Description |
|---|---|
-v, --verbose | Increase log verbosity. Repeatable: -vv for debug-level detail. |
-o, --out <format> | Output format for results: text (default, human-readable) or kv (key=value, one record per line — easier to parse). |
-t, --timeout <sec> | Timeout in seconds for BLE operations. |
-h, --help | Show help and exit. |
--version | Show version and exit. |
Commands that connect to a device (scan, connect, gatt, read, write, sub, periph clone) accept these options to identify the target. Pass them after the subcommand name.
Use --id to target an explicit device, or combine selectors to let blew find a match automatically.
| Flag | Description |
|---|---|
-i, --id <device-id> | Target a specific device by its identifier. |
-n, --name <substring> | Filter by device name (substring match). |
-S, --service <uuid> | Filter by advertised service UUID. Repeatable. |
-m, --manufacturer <id> | Filter by manufacturer ID. |
-R, --rssi-min <dBm> | Minimum RSSI threshold (e.g. -R -70). |
-p, --pick <strategy> | How to pick when multiple devices match: strongest (default, highest RSSI), first (first seen), only (error if multiple match). |
---
% blew periph adv --config device.json
% blew periph adv -n "Override Name" --config device.json
Example config files are provided in the [`Examples/`](Examples/) directory:
| File | Description |
|------|-------------|
| `health-thermometer.json` | Health Thermometer (`1809`) — indicate temperature measurement (2A1C), read temperature type (2A1D), read/write/notify measurement interval (2A21) |
| `environmental-sensing.json` | Environmental Sensing (`181A`) — read/notify temperature (2A6E), humidity (2A6F), and pressure (2A6D) |
| `blood-pressure.json` | Blood Pressure (`1810`) — indicate measurement (2A35), read feature flags (2A49) |
| `custom-sensor.json` | Fully custom vendor service with 128-bit UUIDs — read/notify value, read/write config register, write-only command endpoint |
**Output (text mode):**
Advertising "My Sensor" [180F (Battery Service)] Service 180F (Battery Service) +-- 2A19 (Battery Level) [read, notify]
[12:34:56] central A1B2C3D4 connected [12:34:56] read 2A19 (Battery Level) by A1B2C3D4 [12:34:57] subscribe 2A19 (Battery Level) by A1B2C3D4 [12:35:01] write 2A19 (Battery Level) by A1B2C3D4 <- 2a ^C Stopped advertising.
**Output (kv mode):**
event=connected ts=12:34:56 central=A1B2C3D4-... event=read ts=12:34:56 central=A1B2C3D4-... char=2A19 event=subscribe ts=12:34:57 central=A1B2C3D4-... char=2A19 event=write ts=12:35:01 central=A1B2C3D4-... char=2A19 value=2a
#### `periph clone` — Clone a real device
blew periph clone [-n <name>] [-i <id>] [--save <file>]
Connects to a target device, discovers its full GATT tree, reads all readable characteristic values, disconnects, then starts advertising as a clone.
| Flag | Description |
|------|-------------|
| `-n, --name` | Target device name filter. |
| `-i, --id` | Target device identifier. |
| `-o, --save <file>` | Save the cloned GATT structure to a JSON config file for later reuse. |
**Clone scope:**
- Cloned: advertised name, service UUIDs, full GATT structure, initial characteristic values (for readable characteristics).
- Not cloned: manufacturer data, service data in ADV payload, ADV timing.
**Examples:**
sh % blew periph clone -n "Heart Rate Monitor" % blew periph clone -i F3C2A1B0-... --save hr-monitor.json
#### REPL-only periph commands
In REPL and `exec` mode, `periph adv` and `periph clone` run in two phases. The startup phase (configure + start advertising) is synchronous and confirms the peripheral came up. Once advertising is confirmed, the event loop runs as a background task and the prompt is returned immediately. This makes `periph stop`, `periph set`, and `periph notify` usable in the same session:
| Command | Description |
|---------|-------------|
| `periph stop` | Stop advertising and cancel the background event task. |
| `periph set [-f <fmt>] <char> <val>` | Update a characteristic's stored value. |
| `periph notify [-f <fmt>] <char> <val>` | Update value and push a notification to all subscribers. |
| `periph status` | Show advertising state, service/characteristic counts, subscriber count. |
blew> periph adv --config device.json Advertising "My Device" [180F] Advertising in background. Use 'periph stop' to stop. blew> periph notify -f uint8 2A19 42 blew> periph stop Stopped advertising.
In `exec` mode the same non-blocking behaviour applies, enabling scripts like:
sh % blew exec "periph adv -n 'My Device' --config device.json; periph set 2A19 ff; periph notify 2A19 ff" ```
---
Cursor (.cursor/mcp.json):
{
"mcpServers": {
"blew": {
"command": "/path/to/blew",
"args": ["mcp"]
}
}
}
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"blew": {
"command": "/path/to/blew",
"args": ["mcp"]
}
}
}
% blew scan -n "Sensor" -S 180F -R -65 -t 10
Stop fumbling with GUI apps to debug Bluetooth Low Energy devices. blew gives you full BLE control from the macOS command line: scan the airwaves, drill into any device's GATT tree, read and write characteristics, stream live notifications, and even spin up a virtual peripheral that other devices can connect to.
<img src="img/scan.avif" alt="BLE scan" width="100%">
<img src="img/gatttree.avif" alt="GATT tree" width="49%"> <img src="img/uart.avif" alt="UART" width="49%">
| Stream | Content |
|---|---|
| stdout | Command results — tables, values, notification lines |
| stderr | Operational messages (errors, verbose info, debug) |
高质量的开源蓝牙MCP工具
该工具使用 BSD-2-Clause 协议,商用场景请仔细阅读协议条款,必要时咨询法律意见。
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ BSD 2-Clause — 极度宽松,几乎可以任意使用,仅需保留版权声明。
AI Skill Hub 点评:蓝牙MCP工具 的核心功能完整,质量良好。对于Claude Desktop / Claude Code 用户来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。
| 原始名称 | blew |
| 原始描述 | 开源MCP工具:Mac OS X command line BLE tool and MCP server。⭐6 · Swift |
| Topics | blebluetoothclimcpswift |
| GitHub | https://github.com/stass/blew |
| License | BSD-2-Clause |
| 语言 | Swift |
收录时间:2026-05-28 · 更新时间:2026-05-30 · License:BSD-2-Clause · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端