Back to Browse

Mc3000 MCP Server

Developer ToolsLow Risk10.0MCP RegistryLocal
Free

Server data from the Official MCP Registry

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

About

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

Security Report

10.0
Low Risk10.0Low Risk

Valid MCP server (2 strong, 2 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry. Trust signals: trusted author (3/3 approved).

5 files analyzed · No issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

Documentation

View on GitHub

From the project's GitHub 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.

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

# 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.4 --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.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:

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

  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:

{
  "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.*:

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

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

License

Apache-2.0. See LICENSE.

Reviews

No reviews yet

Be the first to review this server!