内容
# radiochron-mcp
**[radiochron.com](https://radiochron.com)** · 您的广播记录。
本地优先的[模型上下文协议](https://modelcontextprotocol.io)服务器,用于Wi-Fi事件诊断和蓝牙低能耗观察。它结合了本地广播采集和[`radiochron`](https://github.com/sergii-ziborov/radiochron) Rust核心,然后返回类型化的结论,而不是强制助手解释原始操作系统输出。
首选的MCP修订版为`2025-11-25`;请求`2025-06-18`的客户端接收兼容的旧工具形状。每个工具都有输入和输出模式、结构化内容、安全注释、显式执行语义、长时间运行的工作取消以及JSON-RPC协议错误和工具执行错误之间的可操作分离。
RadioChron仓库保持独立:
- [`radiochron`](https://github.com/sergii-ziborov/radiochron) 是Rust/IoT核心。
- [`radiochron-js`](https://github.com/sergii-ziborov/radiochron-js) 是Node/npm库;它不附带MCP。
- [`radiochron-mcp`](https://github.com/sergii-ziborov/radiochron-mcp) 是此纯Rust MCP服务器。
- [`radiochron-agent`](https://github.com/sergii-ziborov/radiochron-agent) 是无人值守的持久化收集器/导出器,不依赖于MCP。
- [`radiochron-electron`](https://github.com/sergii-ziborov/radiochron-electron) 是独立的桌面应用程序,不依赖于MCP。
## 安装
npm包携带了针对Windows x64、Linux x64/ARM64、Intel Mac和Apple Silicon的已验证原生二进制文件:
```sh
claude mcp add radiochron -- npx -y radiochron-mcp
```
或者,从源代码安装Rust二进制文件:
```sh
cargo install --git https://github.com/sergii-ziborov/radiochron-mcp
```
在Debian/Ubuntu上构建需要`libdbus-1-dev`和`pkg-config`来支持BlueZ适配器。预构建的npm用户不需要Rust工具链。
使用任何stdio MCP客户端注册已安装的二进制文件:
```json
{
"mcpServers": {
"radiochron": {
"command": "radiochron"
}
}
}
```
`RADIOCHRON_CHRONICLE_PATH`可选地覆盖本地记录路径:Windows上的`%LOCALAPPDATA%\RadioChron`,macOS上的`~/Library/Application Support/RadioChron`或Linux上的XDG状态目录。
## 从一个工具开始
首先使用`diagnose_incident`。一个请求返回多个独立部分:
- 当前的Wi-Fi接口和关联;
- RF/环境分析;
- 广播 → 身份验证 → DHCP → 网关 → DNS → TCP → Internet阶段;
- 可用的Windows WLAN事件历史记录;
- 最近的变更记录条目;
- 可选的原生BLE广播扫描,规范化身份,保留历史记录和基于证据的发现。
一个不可用的收集器不会丢弃事件的其余部分。每个部分都有`ok`、`data`或可操作的`error`,顶级的`problems`列表足够紧凑,可以由助手直接解释。除非调用者提供目标,否则永远不会联系它们。
## 工具表面
十七种工具是可移植的。Windows公开了一个额外的工具,`wifi_history`,它依赖于WLAN AutoConfig。
| 工具 | 用途 |
|---|---|
| `diagnose_incident` | 在一个紧凑的响应中编排Wi-Fi、连接性、历史记录、记录和可选的原生BLE证据 |
| `wifi_status` | 每个WLAN接口的当前状态 |
| `wifi_networks` | 附近的BSS记录,带有实际的dBm、安全机制、宽度和负载;摘要或完整详细信息 |
| `wifi_analyze` | 信号、争用、漫游、安全性和扫描质量发现 |
| `wifi_history`(Windows) | 重新连接循环、密钥交换失败和凭据不匹配证据 |
| `wifi_sample` | 可取消的RSSI/速率/漫游采样,带有进度 |
| `wifi_scan` | 原生Wi-Fi刷新,每个接口完成/失败 |
| `connectivity_diagnose` | 分离的广播、身份验证、IP分配、网关、DNS、TCP、门户、TLS、质量和Internet阶段 |
| `chronicle_start` | 启动本地旋转的变更JSONL记录器 |
| `chronicle_stop` | 停止并刷新记录器 |
| `chronicle_status` | 记录器状态、路径、计数器和最新错误 |
| `chronicle_recent` | 来自活动和轮换文件的最新记录 |
| `ble_scan` | 扫描原生适配器而不连接,规范化广播,更新历史记录,并返回风险证据 |
| `ble_identify` | 确定给定的广播并哈希其有效载荷 |
| `ble_tracker_reset` | 清除进程本地的BLE历史记录并应用检测策略 |
| `ble_observe` | 添加外部收集的时间观察 |
| `ble_histories` | 首次/最后一次看到、重复、传感器、移动会话和RSSI摘要 |
| `ble_evaluate` | 期望身份的基于时间的消失发现 |
`ble_scan`在Windows上使用WinRT,在Linux上使用BlueZ,在macOS上使用CoreBluetooth。它只监听在请求的扫描窗口期间观察到的设备,不执行GATT连接,并提供相同的隐私最小化RadioChron跟踪器,由显式的`ble_observe`调用使用。iBeacon和Eddystone UID数据可以提供更强的协议身份;通用的私有地址仍然是短暂的。
在macOS 11+上,启动MCP进程的主应用程序或终端必须具有蓝牙权限。应用程序包需要`NSBluetoothAlwaysUsageDescription`;终端启动的服务器需要该终端在系统设置中的蓝牙访问权限。Linux需要运行的BlueZ服务和访问系统D-Bus。
## MCP行为
- 新线分隔的UTF-8 JSON-RPC 2.0通过stdio;stdout仅包含MCP帧。
- 同时支持`2025-11-25`和`2025-06-18`,优先使用当前修订版。
- 当前工具定义声明`execution.taskSupport: "forbidden"`,因为此本地stdio服务器使用普通的、可取消的请求,而不是持久的实验任务。
- 未知方法和格式错误的调用信封使用JSON-RPC错误。
- 工具输入/广播/平台故障使用`isError: true`,以便模型可以纠正参数或解释平台问题。
- 结构化结果也序列化为文本内容,供旧客户端使用。
- 源文件按架构划分,限制为300行;实际的stdio一致性测试涵盖当前和遗留的生命周期/目录/错误行为。
协议层故意没有MCP SDK,因此其生命周期和错误行为保持小型和可审计。原生BLE收集确实使用了`btleplug`和`tokio`;这些主机依赖项保留在此MCP存储库中,不进入可移植的/no-std `radiochron`核心。
## 安全性和隐私
SSID、BSSID、蓝牙地址、广播有效载荷和事件日志可能很敏感。服务器没有遥测功能,不会向机器发送任何数据。记录只写入其旋转的本地JSONL文件。保存的Wi-Fi密码永远不会被读取。
RSSI是信号证据,而不是物理距离或方向。私有蓝牙地址可以旋转,因此克隆/重复声明需要协议标识或调用者提供的标识。原生BLE扫描永远不会连接到外设。
MCP表面故意排除纯文本Wi-Fi密钥、适配器MAC更改、适配器重启、计算机重命名、主动LAN扫描、任意Shell执行和外部AI审查。
## 版本发布
版本发布由一次绿色跨平台CI运行组装。npm存档必须包含针对所有五个目标的修订版二进制文件和源代码证明。在公共npm验证后,发布匹配的`server.json`到官方MCP注册表,然后再创建/推送匹配的不可变标签。
## 许可证
根据[MIT License](LICENSE-MIT)许可。底层`radiochron` Rust核心仍然单独使用MIT或Apache-2.0双重许可。