MC3000 Charger

io.github.nietonchique由 GitHub 帳號 nietonchique 發布v0.2.4更新於 Oct 25, 2026

Safe MCP server for SKYRC MC3000-compatible battery chargers over Bluetooth Low Energy.

已驗證STDIO僅桌面位置與生活開發者工具

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理透過低功耗藍牙掃描、讀取並安全控制相容於 SKYRC MC3000 的電池充電器。

可以做什麼
  • 掃描附近的充電器並透過藍牙連線或中斷連線
  • 讀取槽位狀態、電池化學類型、模式、電壓、電流、溫度與狀態
  • 列出並驗證電池設定檔,先以試跑方式呈現,再進行實際寫入
  • 套用設定檔與啟動槽位各自需要獨立的依槽位確認權杖
  • 立即停止單一槽位或全部槽位,並將電壓曲線匯出為 JSON 或 CSV
  • 匯出有容量上限且已去識別化的工作階段稽核日誌
適用情境
適合擁有相容於 SKYRC MC3000 充電器、希望助理查看槽位狀態、準備並驗證充電設定檔,並在明確確認下執行充電且隨時可緊急停止的使用者。
執行需求
以本機 Rust 二進位檔透過 stdio 執行(可用 cargo、AUR 或 Linux x86_64 的 MCPB 套件安裝),不需 Python 執行環境。需要藍牙低功耗適配器,Linux 上還需 BlueZ/D-Bus。未宣告任何帳號、API 金鑰或環境變數。提供假後端,可在沒有硬體時試用。
安裝前請注意
它會控制真實的充電硬體:化學類型、電流、電壓或槽位選錯,或無人看管地充電,可能損壞電芯甚至引發火災,請讓充電器保持在視線內。實際寫入設定檔和啟動都需要依槽位的確認權杖,伺服器本身被描述為安全界線而非模型。未知型號與 MC5000 連線為唯讀,且寫入確認並不代表充電器已實際套用。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 MC3000 Charger,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

mc3000-mcp

[CI] [License] [MCP]

Safe local MCP control for SKYRC MC3000-compatible chargers.

mc3000-mcp connects an AI agent to a battery charger without handing it an unsupervised hardware API. BLE control is local. Charging is dry-run by default. Live writes and starts need explicit per-slot confirmation. Emergency stop is always one call away.

text
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
ImplementationRust binary; no Python runtime
MCPstdio, 27 tools, resources and prompts
Safetycode-enforced validation, dry-run first, explicit confirmation
HardwareMC3000 read/write; MC5000 read-only
Live-testedMC3000 firmware 1.23, hardware 2.20, NiMH modes
Registrycrates.io, MCP Registry MCPB, AUR

Hardware warning. Wrong chemistry, current, voltage, slot, or unsupervised charging can damage cells or start a fire. The MCP server is the safety boundary, not the LLM. Keep the charger in sight. See SECURITY.md.

Install

bash
# crates.iocargo install mc3000-mcp --locked
# Arch Linuxparu -S mc3000-mcp
# released tag, if you prefer installing from sourcecargo install --git https://github.com/nietonchique/mc3000-mcp.git --tag v0.2.4 --locked

A Linux x86_64 MCPB bundle is attached to each release for MCPB-compatible clients.

Linux BLE requires BlueZ/D-Bus:

bash
bluetoothctl show# If the adapter is off:sudo rfkill unblock bluetooth && bluetoothctl power on

Connect an MCP client

json
{  "mcpServers": {    "mc3000": {      "command": "mc3000-mcp",      "args": []    }  }}

Client-specific examples are in examples/.

Try it without hardware:

json
{  "mcpServers": {    "mc3000": {      "command": "mc3000-mcp",      "args": ["--backend", "fake"]    }  }}

Agent skill

charger-agent uses the portable Agent Skills layout: one folder with a SKILL.md manifest. No vendor-specific installer is required.

Install it for Codex:

bash
mkdir -p ~/.codex/skillscurl -fsSL https://github.com/nietonchique/mc3000-mcp/releases/download/v0.2.4/mc3000-mcp-skill-v0.2.4.tar.gz \  | tar -xz -C ~/.codex/skills

For OMP, use ~/.omp/agent/skills as the destination. For Claude-compatible clients, use ~/.claude/skills. Hermes can also install the raw file, but it is just one compatible client—not the distribution format.

The folder contains the charger workflow plus a pre-start checklist and example profile. It is guidance only; the Rust MCP server remains the enforced safety boundary.

CLI

The default command starts MCP stdio. Read-only diagnostics are also available directly:

bash
mc3000-mcp --versionmc3000-mcp scan --timeout 8mc3000-mcp status --address AA:BB:CC:DD:EE:FFmc3000-mcp --backend fake scan

The CLI can scan and read slots. It cannot write profiles, change settings, or start charging.

Safe workflow

  1. Read slot status.
  2. Validate a battery profile.
  3. Render it as a dry run.
  4. Apply it with confirmation_token=APPLY_PROFILE_SLOT_<slot>.
  5. Start it with a separate confirmation_token=START_SLOT_<slot>.
  6. Monitor voltage, current, temperature, and status.
  7. Use charger.stop_slot / charger.stop_all immediately if anything looks wrong.

Example dry run for physical slot 4 / API slot 3:

json
{  "name": "charger.apply_profile",  "arguments": {    "slot": 3,    "profile_id": "nimh-aa-conservative-charge"  }}

Start requires a second explicit confirmation:

json
{  "name": "charger.start",  "arguments": {    "slot": 3,    "confirmation_token": "START_SLOT_3"  }}

Emergency stop is deliberately tokenless:

json
{"name": "charger.stop_all", "arguments": {}}

Tools

Production surface is namespaced as charger.*:

ToolPurpose
scan_devicesRead-only BLE scan.
connect / disconnectManage the charger connection.
get_status, read_slotsSlot chemistry, mode, voltage/current, temperature, state.
get_voltage_curve, export_voltage_curveCharger-stored voltage series as JSON/CSV.
list_profiles, validate_profileBundled profiles and enforced safety checks.
apply_profileDry-run by default; live write requires its slot token.
startStart a prepared slot; requires a separate token.
stop_slot, stop_allImmediate emergency stop.
export_session_logBounded, redacted audit log.

Fourteen legacy mc3000_* tools remain for protocol/debugging work. They use the same confirmation policy for non-emergency writes. Raw writes cannot implicitly start slots and always block factory/calibration restore opcodes.

Safety model

  • API slots are zero-based 0..3; physical slots are 1..4.
  • apply_profile defaults to dry_run=true.
  • Live profile writes require exactly APPLY_PROFILE_SLOT_<slot>.
  • Starts require exactly START_SLOT_<slot>.
  • Safety checks run before any backend call; unsupported chemistry fails closed.
  • NiMH/Eneloop/NiCd, LiIon, and LiFe have enforced limits.
  • Unknown charger models and MC5000 connections are read-only.
  • Session logs redact addresses and confirmation tokens and are bounded in memory.

Full model: docs/safety-model.md. Profile schema and bundled examples: docs/profile-schema.md.

Compatibility

Confirmed live: SKYRC MC3000 firmware 1.23, hardware 2.20.

Protocol details are documented from the official Android app and hardware testing in docs/ble-protocol-notes.md and docs/reverse-notes.md. MC5000 support is intentionally read-only until writes are verified on real hardware.

Charger firmware behavior can differ. A profile write acknowledgement is not proof that the charger applied it—start the slot and verify mode/current/status.

Development

bash
cargo fmt --all -- --checkcargo clippy --all-targets --all-features --locked -- -D warningscargo test --all-features --lockedcargo audit && cargo deny check

The fake backend keeps hardware out of normal tests and CI. See CONTRIBUTING.md for the full workflow and hardware-safety rule.

Documentation

License

Apache-2.0. See LICENSE.

來源:README.md,提交 73a4acd

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:該軟體包類型無法在沙箱中執行。

版本歷史

2
  1. v0.2.4最新Oct 25, 2026
  2. v0.2.1Oct 23, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分