MC3000 Charger
Safe MCP server for SKYRC MC3000-compatible battery chargers over Bluetooth Low Energy.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
https://github.com/nietonchique/mc3000-mcp/releases/download/v0.2.4/0.2.4-x86_64-unknown-linux-gnu.mcpbDocumentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
mc3000-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.
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
| Implementation | Rust binary; no Python runtime |
| MCP | stdio, 27 tools, resources and prompts |
| Safety | code-enforced validation, dry-run first, explicit confirmation |
| Hardware | MC3000 read/write; MC5000 read-only |
| Live-tested | MC3000 firmware 1.23, hardware 2.20, NiMH modes |
| Registry | crates.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
# 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
A Linux x86_64 MCPB bundle is attached to each release for MCPB-compatible clients.
Linux BLE requires BlueZ/D-Bus:
bluetoothctl show
# If the adapter is off:
sudo rfkill unblock bluetooth && bluetoothctl power on
Connect an MCP client
{
"mcpServers": {
"mc3000": {
"command": "mc3000-mcp",
"args": []
}
}
}
Client-specific examples are in examples/.
Try it without hardware:
{
"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:
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
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:
mc3000-mcp --version
mc3000-mcp scan --timeout 8
mc3000-mcp status --address AA:BB:CC:DD:EE:FF
mc3000-mcp --backend fake scan
The CLI can scan and read slots. It cannot write profiles, change settings, or start charging.
Safe workflow
- Read slot status.
- Validate a battery profile.
- Render it as a dry run.
- Apply it with
confirmation_token=APPLY_PROFILE_SLOT_<slot>. - Start it with a separate
confirmation_token=START_SLOT_<slot>. - Monitor voltage, current, temperature, and status.
- Use
charger.stop_slot/charger.stop_allimmediately if anything looks wrong.
Example dry run for physical slot 4 / API slot 3:
{
"name": "charger.apply_profile",
"arguments": {
"slot": 3,
"profile_id": "nimh-aa-conservative-charge"
}
}
Start requires a second explicit confirmation:
{
"name": "charger.start",
"arguments": {
"slot": 3,
"confirmation_token": "START_SLOT_3"
}
}
Emergency stop is deliberately tokenless:
{"name": "charger.stop_all", "arguments": {}}
Tools
Production surface is namespaced as charger.*:
| Tool | Purpose |
|---|---|
scan_devices | Read-only BLE scan. |
connect / disconnect | Manage the charger connection. |
get_status, read_slots | Slot chemistry, mode, voltage/current, temperature, state. |
get_voltage_curve, export_voltage_curve | Charger-stored voltage series as JSON/CSV. |
list_profiles, validate_profile | Bundled profiles and enforced safety checks. |
apply_profile | Dry-run by default; live write requires its slot token. |
start | Start a prepared slot; requires a separate token. |
stop_slot, stop_all | Immediate emergency stop. |
export_session_log | Bounded, 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 are1..4. apply_profiledefaults todry_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
cargo fmt --all -- --check
cargo clippy --all-targets --all-features --locked -- -D warnings
cargo test --all-features --locked
cargo 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
- Security and disclosure:
SECURITY.md - Safety model:
docs/safety-model.md - Supported devices:
docs/supported-devices.md - Examples:
docs/examples.md - Release/publishing checklist:
docs/publishing.md - Agent skill:
skill/SKILL.md
License
Apache-2.0. See LICENSE.
Questions fréquentes
Qu'est-ce que MC3000 Charger ?
Safe MCP server for SKYRC MC3000-compatible battery chargers over Bluetooth Low Energy.
Comment installer MC3000 Charger ?
Suivez les étapes d'installation de sa documentation, affichée sur cette page et dans son dépôt.
Faut-il une clé API pour MC3000 Charger ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
MC3000 Charger est-il open source ?
Oui. Son code est sur GitHub sous licence Apache-2.0.
Qui maintient MC3000 Charger ?
Il est publié par nietonchique. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.