MC3000 Charger について
MC3000 Chargerは、SKYRC MC3000互換充電器をBLEでローカル制御するMCPサーバーです。エージェントのワークフローで状態確認や充電操作を行う用途に向き、設定書き込みと充電開始には検証とスロットごとの確認が必要です。MC5000は読み取り専用です。
主な機能
- 01BLEスキャンと充電器の状態読み取り
- 02バッテリープロファイル検証と安全制限
- 03ドライランが既定、スロットごとの確認
- 04電圧カーブとセッションログの出力
- 05スロット単位または全体の緊急停止
- 06MC5000の読み取り専用対応
活用シーン
- 01充電スロットの電圧、電流、温度を確認
- 02バッテリープロファイルを検証し変更をプレビュー
- 03確認後にプロファイルを適用して充電を開始
- 04必要時にスロット単位または全体を即時停止
MCP 対応
stdio経由でMCPクライアントに27個のツール、リソース、プロンプトを提供し、対応充電器への接続と制御を行います。ハードウェアとはローカルBLEで通信し、書き込みと開始には明示的な確認が必要ですが、緊急停止にトークンは不要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mc3000-mcp
SKYRC MC3000 対応充電器を安全にローカル制御する MCP です。
mc3000-mcp は、監視されていないハードウェア API を AI エージェントに渡すことなく、バッテリー充電器と接続します。BLE による制御はローカルで行われます。デフォルトでは充電はドライランです。実際の書き込みと充電開始には、スロットごとの明示的な確認が必要です。緊急停止はいつでも 1 回の呼び出しで実行できます。
Agent ──MCP stdio── mc3000-mcp ──BLE FFE0/FFE1── SKYRC MC3000
│
├─ profile validation and chemistry limits
├─ dry-run profile rendering
├─ confirmation tokens for live writes/starts
└─ bounded, redacted audit log
| 実装 | Rust バイナリ。Python ランタイム不要 |
| MCP | stdio、27 個のツール、リソース、プロンプト |
| 安全性 | コードで強制される検証、最初はドライラン、明示的な確認 |
| ハードウェア | MC3000 は読み書き可能、MC5000 は読み取り専用 |
| 実機テスト済み | MC3000 ファームウェア 1.23、ハードウェア 2.20、NiMH モード |
| レジストリ | crates.io、MCP Registry MCPB、AUR |
ハードウェアに関する警告。 化学系、電流、電圧、スロットを誤ったり、監視なしで充電したりすると、セルが損傷したり、火災が発生したりするおそれがあります。安全を確保するのは LLM ではなく、MCP サーバーです。充電器から目を離さないでください。SECURITY.md を参照してください。
インストール
# crates.io
cargo install mc3000-mcp --locked
# Arch Linux
paru -S mc3000-mcp
# released tag, if you prefer installing from source
cargo install --git https://github.com/nietonchique/mc3000-mcp.git --tag v0.2.1 --locked
Linux x86_64 用の MCPB バンドルは、MCPB 対応クライアント向けに各リリースへ添付されています。
Linux での BLE には BlueZ/D-Bus が必要です。
bluetoothctl show
# If the adapter is off:
sudo rfkill unblock bluetooth && bluetoothctl power on
MCP クライアントに接続する
{
"mcpServers": {
"mc3000": {
"command": "mc3000-mcp",
"args": []
}
}
}
クライアントごとの例は examples/ にあります。
ハードウェアなしで試す場合:
{
"mcpServers": {
"mc3000": {
"command": "mc3000-mcp",
"args": ["--backend", "fake"]
}
}
}
エージェントスキル
charger-agent は、ポータブルな Agent Skills のレイアウトを使用します。SKILL.md マニフェストを含む 1 つのフォルダーで構成されます。ベンダー固有のインストーラーは不要です。
Codex にインストールするには:
mkdir -p ~/.codex/skills
curl -fsSL https://github.com/nietonchique/mc3000-mcp/releases/download/v0.2.1/mc3000-mcp-skill-v0.2.1.tar.gz \
| tar -xz -C ~/.codex/skills
OMP の場合は、インストール先として ~/.omp/agent/skills を使用してください。Claude 対応クライアントの場合は、~/.claude/skills を使用してください。Hermes では生のファイルもインストールできますが、これは対応クライアントの 1 つにすぎず、配布形式ではありません。
このフォルダーには、充電器のワークフローのほか、充電開始前のチェックリストとプロファイルの例が含まれています。これはガイダンスにすぎません。強制力のある安全境界は引き続き Rust MCP サーバーが担います。
CLI
デフォルトのコマンドは MCP stdio を起動します。読み取り専用の診断も直接実行できます。
mc3000-mcp --version
mc3000-mcp scan --timeout 8
mc3000-mcp status --address AA:BB:CC:DD:EE:FF
mc3000-mcp --backend fake scan
CLI ではスロットのスキャンと読み取りができます。プロファイルの書き込み、設定の変更、充電の開始はできません。
安全なワークフロー
- スロットの状態を読み取ります。
- バッテリープロファイルを検証します。
- ドライランとして表示します。
confirmation_token=APPLY_PROFILE_SLOT_<slot>を指定して適用します。- 別の
confirmation_token=START_SLOT_<slot>を指定して開始します。 - 電圧、電流、温度、状態を監視します。
- 問題があるように見えたら、直ちに
charger.stop_slot/charger.stop_allを使用します。
物理スロット 4/API スロット 3 のドライランの例:
{
"name": "charger.apply_profile",
"arguments": {
"slot": 3,
"profile_id": "nimh-aa-conservative-charge"
}
}
開始には、2 回目の明示的な確認が必要です。
{
"name": "charger.start",
"arguments": {
"slot": 3,
"confirmation_token": "START_SLOT_3"
}
}
緊急停止では、意図的にトークンを不要としています。
{"name": "charger.stop_all", "arguments": {}}
ツール
本番環境でのインターフェイスは charger.* 名前空間を使用します。
| ツール | 用途 |
|---|---|
scan_devices | 読み取り専用の BLE スキャン。 |
connect / disconnect | 充電器への接続を管理します。 |
get_status、read_slots | スロットの化学系、モード、電圧/電流、温度、状態を確認します。 |
get_voltage_curve、export_voltage_curve | 充電器に保存された電圧系列を JSON/CSV 形式で出力します。 |
list_profiles、validate_profile | 同梱プロファイルと強制される安全チェック。 |
apply_profile | デフォルトではドライランです。実際の書き込みにはスロットのトークンが必要です。 |
start | 準備済みのスロットを開始します。別のトークンが必要です。 |
stop_slot、stop_all | 即時の緊急停止。 |
export_session_log | 範囲が制限され、機密情報が除去された監査ログ。 |
プロトコルのデバッグ作業用に、14 個のレガシーな mc3000_* ツールも残されています。緊急時以外の書き込みには、同じ確認ポリシーが適用されます。生の書き込みによってスロットが暗黙的に開始されることはなく、工場出荷時設定/キャリブレーションの復元オペコードは常にブロックされます。
安全モデル
- API スロットは 0 から始まる
0..3、物理スロットは1..4です。 apply_profileのデフォルトはdry_run=trueです。- プロファイルを実際に書き込むには、正確に
APPLY_PROFILE_SLOT_<slot>を指定する必要があります。 - 開始するには、正確に
START_SLOT_<slot>を指定する必要があります。 - バックエンドを呼び出す前に安全性チェックを実行します。サポート対象外の化学組成はフェイルクローズします。
- NiMH/Eneloop/NiCd、LiIon、LiFe には制限が適用されます。
- 不明な充電器モデルと MC5000 接続は読み取り専用です。
- セッションログではアドレスと確認トークンがマスキングされ、メモリ内のサイズにも上限があります。
モデルの詳細:docs/safety-model.md。
プロファイルのスキーマと同梱の例:docs/profile-schema.md。
互換性
実機での動作確認済み:SKYRC MC3000 ファームウェア 1.23、ハードウェア 2.20。
プロトコルの詳細は、公式 Android アプリとハードウェアのテストに基づき、docs/ble-protocol-notes.md および
docs/reverse-notes.md に記載されています。MC5000 の書き込みは、
実機で検証されるまで意図的に読み取り専用としています。
充電器のファームウェアによって動作が異なる場合があります。プロファイルの書き込み確認応答は、充電器に適用されたことを証明するものではありません。スロットを開始し、モード/電流/状態を確認してください。
開発
cargo fmt --all -- --check
cargo clippy --all-targets --all-features --locked -- -D warnings
cargo test --all-features --locked
cargo audit && cargo deny check
フェイクバックエンドにより、通常のテストや CI でハードウェアを使わずに済みます。ワークフロー全体とハードウェア安全ルールについては、
CONTRIBUTING.md を参照してください。
ドキュメント
- セキュリティと脆弱性の報告:
SECURITY.md - 安全モデル:
docs/safety-model.md - 対応デバイス:
docs/supported-devices.md - 例:
docs/examples.md - リリース/公開チェックリスト:
docs/publishing.md - エージェントスキル:
skill/SKILL.md
ライセンス
Apache-2.0。LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。