RadioChron について
RadioChronは、Wi-Fiの障害診断とBluetooth LEの観測を行うローカルファーストのMCPサーバー兼コマンドラインツールです。ネイティブの無線データと共通の分類処理から構造化された所見を返し、収集データを端末内に保持します。
主な機能
- 01Wi-Fiの状態確認・スキャン・分析
- 02段階別の接続診断
- 03ネイティブBluetooth LEスキャン
- 04ローカル変更履歴の記録
- 05構造化された障害所見
活用シーン
- 01Wi-Fi接続障害の調査
- 02電波とネットワーク状態の確認
- 03BLEの再出現とリスク証拠の確認
MCP 対応
stdio経由で、Wi-Fi、接続診断、履歴記録、Bluetooth LEのツールをMCPクライアントに提供します。構造化結果を返し、プロトコルの2025-11-25および2025-06-18に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
radiochron-mcp
radiochron.com · あなたのラジオの記録。
Wi-Fi インシデント診断と Bluetooth Low Energy の観測に対応する、ローカルファーストの Model Context Protocol サーバー
およびコマンドラインツールです。ネイティブな無線情報の収集機能と
radiochron Rust コアを組み合わせ、
アシスタントに生のオペレーティングシステム出力を解釈させるのではなく、
型付きの結論を返します。
2 つのフロントエンドは別々の実装ではありません。radiochron analyze と
wifi_analyze ツールは、同じ制限と同じエラーテキストを使って同じハンドラーを実行するため、
どのように要求したかによって結論が変わることはありません。
優先される MCP リビジョンは 2025-11-25 です。2025-06-18 を要求する
クライアントには、互換性のあるレガシーなツール形式が返されます。すべてのツールは入力と
出力のスキーマ、構造化コンテンツ、安全性に関する注釈、明示的な実行セマンティクスを備え、
長時間実行される処理にはキャンセル機能があり、JSON-RPC プロトコルエラーとツール実行エラーを
実行可能な形で明確に区別します。
RadioChron の各リポジトリは独立しています。
radiochronは Rust/IoT コアです。radiochron-jsは Node/npm ライブラリです。MCP は同梱していません。radiochron-mcpは、この純粋な Rust 製 MCP サーバーとコマンドラインツールです。radiochron-agentは、無人で動作する永続的なコレクター/エクスポーターで、MCP に依存しません。radiochron-electronはスタンドアロンのデスクトップアプリで、MCP に依存しません。
インストール
npm パッケージには、Windows x64、Linux x64/ARM64、Intel Mac、Apple Silicon 用の検証済みネイティブバイナリが含まれています。
claude mcp add radiochron -- npx -y radiochron-mcp
または、Rust バイナリをソースからインストールできます。
cargo install --git https://github.com/sergii-ziborov/radiochron-mcp
Debian/Ubuntu でビルドするには、BlueZ アダプター用に libdbus-1-dev と
pkg-config が必要です。ビルド済みの npm パッケージを使う場合、Rust ツールチェーンは不要です。
インストールしたバイナリを、任意の stdio MCP クライアントに登録します。
{
"mcpServers": {
"radiochron": {
"command": "radiochron"
}
}
}
RADIOCHRON_CHRONICLE_PATH を設定すると、ローカルの記録ファイルのパスを任意で上書きできます。
Windows では %LOCALAPPDATA%\RadioChron、macOS では ~/Library/Application Support/RadioChron、Linux では XDG の状態ディレクトリが使われます。
コマンドライン
同じバイナリを CLI としても使えます。追加のインストールは不要です。npm パッケージから
npx radiochron status を実行でき、cargo install を実行すると radiochron が PATH に追加されます。
radiochron status # association state of every adapter
radiochron scan # look again, then list what is there
radiochron analyze # findings about the environment
radiochron report # the full Markdown diagnostic report
radiochron incident --ble # one composite answer for "the Wi-Fi is broken"
radiochron connectivity --dns example.com --tcp example.com:443
radiochron ble scan --duration 4000
radiochron chronicle recent --max 20
radiochron --help # every command and flag
任意のコマンドに --json を追加すると、スクリプトで使う生のツール結果を取得できます。
radiochron networks --json | jq '.networks[] | select(.rssi_dbm > -60) | .ssid'
radiochron tool <name> [--args '<json>'] を使うと、使いやすい別名がないものも含め、
カタログで公開されているすべてのツールを呼び出せます。
radiochron tool ble_evaluate --args '{"now_ms":1717000000000}'
不明なフラグは無視せず拒否されるため、--durations のような入力ミスは、
デフォルト値で実行されてしまうのではなく、エラーになります。
引数なしで実行した場合も、これまでどおり stdio 経由で MCP を提供します。
そのため、既存のクライアント設定はすべて引き続き使えます。stdin が端末の場合は
人がコマンド名を入力したと判断してヘルプを表示し、パイプの場合はクライアントと判断して
プロトコルで応答します。radiochron mcp を実行すると、サーバーを明示的に起動できます。
セッションがないため、CLI 専用のコマンドが 2 つあります。
chronicle record は停止するまでフォアグラウンドでレコーダーを実行し、
chronicle path はジャーナルの保存場所を表示します。
MCP と Node(radiochron-js)
両者は同じ Rust コアと同じインシデント分類器を共有していますが、積み重ねて動作するものではありません。
| インターフェース | パッケージ | MCP に対応? | 最適な用途 |
|---|---|---|---|
| MCP + CLI | radiochron-mcp | はい(stdio) | アシスタント、radiochron doctor、オペレーター用シェル |
| Node/npm | radiochron | いいえ | アプリ、Electron、サービス、CI プローブ |
デスクトップアプリがインポートするのは radiochron(npm)のみです。診断のために MCP サーバーを
起動してはいけません。コレクターが重複し、原因判定のロジックにずれが生じるためです。
同じ判定、2つの入り口
# MCP / CLI — orchestrates collectors, then core::incident::classify
radiochron doctor --json
// Node — same classifier, in-process native bridge
import { getRadioChronCoreClient } from 'radiochron';
const rc = getRadioChronCoreClient();
const report = await rc.diagnose({ includeBle: false });
console.log(report.assessment, report.causes);
// Optional: portable transfer matching MCP incident exports
import { createIncidentBundle, readIncidentBundle } from 'radiochron';
const bytes = createIncidentBundle({
report,
producer: {
surface: 'node',
surface_version: '0.7.0',
core_version: '0.6.0'
}
});
// write bytes to a .rchron file, or round-trip:
const again = readIncidentBundle(bytes);
無線のエビデンスが必要なアシスタントは、MCP ツールを呼び出してください。Node をすでに実行しているアプリケーションは、radiochron を直接呼び出して、MCP プロセスを完全に省略できます。
まずは1つのツールから
最初に diagnose_incident を使用してください(CLI エイリアス:radiochron doctor)。このツールはコレクターをオーケストレーションし、共有コアの分類器に1件のインシデント判定を依頼します。レスポンスには、次の項目が独立したセクションとして含まれます。
- 現在の Wi-Fi インターフェースと接続状態
- RF/環境分析
- 無線 → 認証 → DHCP → ゲートウェイ → DNS → TCP → インターネットの各段階
- 利用可能な場合は、Windows WLAN のイベント履歴
- 変更があった場合のみ記録される最近のクロニクル項目
- オプションのネイティブ BLE アドバタイズスキャン、正規化された識別情報、保持された履歴、エビデンスに基づく所見
1つのコレクターが利用できなくても、インシデントの残りの情報は破棄されません。各セクションには ok、data、または実行可能な error があり、トップレベルの problems リストはアシスタントがそのまま説明できるほど簡潔です。呼び出し元が対象を指定しない限り、対象への接続は行われません。
ツール一覧
17個のツールを移植可能な形で利用できます。Windows では、WLAN AutoConfig を利用する18個目のツール wifi_history が公開されます。
| ツール | 用途 |
|---|---|
diagnose_incident | Wi-Fi、接続性、履歴、クロニクル、オプションのネイティブ BLE エビデンスをオーケストレーションし、簡潔なレスポンスにまとめます |
wifi_status | すべての WLAN インターフェースの現在の状態 |
wifi_networks | 実測 dBm、セキュリティ、帯域幅、負荷を含む近隣の BSS レコード。概要または詳細全体を表示します |
wifi_analyze | 信号、チャネル競合、ローミング、セキュリティ、スキャン品質に関する所見 |
wifi_history(Windows) | 再接続ループ、鍵交換の失敗、認証情報の不一致を示すエビデンス |
wifi_sample | 進行状況を表示する、キャンセル可能な RSSI/レート/ローミングのサンプリング |
wifi_scan | インターフェースごとの完了/失敗状況を含む、ネイティブ Wi-Fi の更新 |
connectivity_diagnose | 無線、認証、IP 割り当て、ゲートウェイ、DNS、TCP、ポータル、TLS、品質、インターネットの各段階を個別に診断します |
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 接続は行いません。また、明示的な ble_observe 呼び出しで使用されるものと同じ、プライバシーを最小限に抑えた RadioChron トラッカーにデータを渡します。iBeacon および Eddystone UID のデータは、より確実なプロトコル識別情報を提供できます。一般的なプライベートアドレスは、一時的なものです。
macOS 11 以降では、MCP プロセスを起動するホストアプリケーションまたはターミナルに Bluetooth のアクセス許可が必要です。アプリバンドルには NSBluetoothAlwaysUsageDescription が必要です。ターミナルから起動するサーバーには、「システム設定」でそのターミナルへの Bluetooth アクセスを許可する必要があります。Linux では、BlueZ サービスが実行中であり、システム D-Bus へのアクセス権が必要です。
MCP の動作
- stdio 経由で、改行区切りの UTF-8 JSON-RPC 2.0 を使用します。stdout には MCP フレームのみが出力されます。
2025-11-25と2025-06-18の両方をネゴシエートし、現行リビジョンを優先します。- 現行のツール定義では
execution.taskSupport: "forbidden"を指定しています。このローカル stdio サーバーは、永続的な実験的タスクではなく、通常のキャンセル可能なリクエストを使用するためです。 - 不明なメソッドや不正な呼び出しエンベロープには、JSON-RPC エラーを返します。
- ツール入力、無線、プラットフォームに関するエラーには
isError: trueを設定し、モデルが引数を修正したり、プラットフォームの問題を説明したりできるようにします。 - 構造化された結果は、古いクライアント向けにテキストコンテンツとしてもシリアライズされます。
- ソースファイルはアーキテクチャ上の制約により 300 行までです。実際の stdio 適合性テストでは、現行およびレガシーのライフサイクル、カタログ、エラーの動作を検証します。
ツールおよびリソースのリクエストパスでは、Tokio を使わない mcport ランタイムと、その blazingly-json の値/コーデック機能を使用します。RadioChron は、厳密な初期化/通知のライフサイクルのみをローカルで管理します。ネイティブ BLE の収集には、btleplug、Tokio、futures を使わず、WinRT、BlueZ D-Bus、CoreBluetooth と直接通信する別個の radiochron-native-ble クレートを使用します。ポータブルな radiochron コアは、ホストの Bluetooth API に依存しません。
安全性とプライバシー
SSID、BSSID、Bluetooth アドレス、広告ペイロード、イベントログには機密情報が含まれる場合があります。このサーバーにはテレメトリ機能がなく、マシンの外部にデータを送信することもありません。履歴は、ローテーションするローカルの JSONL ファイルにのみ書き込まれます。保存済みの Wi-Fi パスワードは読み取りません。
RSSI は信号の証拠であり、物理的な距離や方向を示すものではありません。プライベート Bluetooth アドレスはローテーションする可能性があるため、複製や再出現に関する判断には、プロトコル上の識別情報、または呼び出し元から提供された識別情報が必要です。ネイティブ BLE スキャンで周辺機器に接続することはありません。
MCP の機能には、意図的に次の操作を含めていません。平文の Wi-Fi キー、アダプターの MAC アドレス変更、アダプターの再起動、コンピューター名の変更、アクティブな LAN スキャン、任意のシェル実行、外部 AI によるレビューです。
リリース
リリースは、クロスプラットフォーム CI がすべて成功した 1 回の実行結果から作成されます。npm アーカイブには、5 つすべてのターゲットについて、リビジョンが一致するバイナリと来歴サイドカーを含める必要があります。不変のバージョンタグにより、保護されたリポジトリシークレットを使用して npm パッケージを公開し、その後 GitHub OIDC を通じて、一致する server.json を公式 MCP Registry に公開します。npm の認証情報には、マスクされ、タグで制限された GitHub Actions シークレット NPM_TOKEN を使用します。MCP Registry では長期間有効なトークンを使用しません。
ライセンス
MIT License に基づいてライセンスされています。基盤となる radiochron Rust コアは、引き続き MIT または Apache-2.0 のデュアルライセンスで別途提供されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。