mc3000-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| mc3000_scanC | Scan BLE devices and return devices whose advertised name matches the official MC3000 app filters. |
| mc3000_connectC | Connect to MC3000 by BLE address, or scan and connect to the first matching charger if address is omitted. |
| mc3000_disconnectA | Disconnect from charger. |
| mc3000_statusA | Poll slot status. Slot is zero-based 0..3; omit slot to poll all four. |
| mc3000_startC | Start charging/program on a zero-based slot 0..3. |
| mc3000_stopC | Stop a zero-based slot 0..3. |
| mc3000_get_versionB | Read firmware/hardware version. |
| mc3000_get_basicB | Read basic device settings. |
| mc3000_set_basicC | Set basic device settings. |
| mc3000_get_voltage_curveB | Read voltage curve for a zero-based slot. Response is parsed into millivolt points. |
| mc3000_mc5000_statusA | Read slot status using MC5000 frame layout (opcode 0x91). |
| mc3000_build_profileA | Build a 40-byte MC3000 profile/program frame without sending it. |
| mc3000_apply_profileB | Apply a profile/program. Pass profile_hex from mc3000_build_profile or pass the same profile fields directly. Optionally start selected slots. |
| mc3000_send_rawC | Send a raw hex frame. Escape hatch for protocol experiments. |
| charger.scan_devicesC | Read-only BLE scan for supported chargers. |
| charger.connectC | Connect to a selected charger. Prefer an explicit address from scan_devices. |
| charger.get_statusA | Read current charger status for all slots. |
| charger.read_slotsB | Read one slot or all slot statuses. Slot is zero-based 0..3. |
| charger.get_voltage_curveB | Read the charger-stored app-style voltage time-series for one slot. No polling. |
| charger.export_voltage_curveC | Export the charger-stored voltage curve as JSON or CSV. |
| charger.list_profilesC | List bundled safe example profiles. |
| charger.validate_profileB | Validate a battery profile against enforced chemistry/device/safety limits. |
| charger.apply_profileB | Validate and apply a profile to a slot. Dry-run is default; live write requires token. |
| charger.startC | Start the already-applied operation on a slot. Requires START_SLOT_ token. |
| charger.stop_slotA | Emergency stop for one slot; bypasses profile validation. |
| charger.stop_allA | Emergency stop for all slots; bypasses profile validation. |
| charger.export_session_logA | Export in-memory session log with redacted device identifiers. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| charger_regular_charge | Collect chemistry, capacity_mAh, slot, nominal voltage, charge current, cutoff voltage, temperature policy, and source. Run charger.validate_profile, show dry-run, then ask for explicit START_SLOT_<slot> confirmation before charger.start. |
| charger_refresh_nimh | For NiMH refresh: verify NiMH chemistry/capacity/slot, use conservative currents, validate, dry-run, require explicit confirmation, then monitor status and temperature. |
| charger_break_in_nimh | Use only for known NiMH/NiCd cells that need forming. Ask why break-in is needed, validate C/10 charge and C/5 discharge, dry-run, confirm, monitor. |
| charger_lipo_storage | Refuse multi-cell packs unless the charger supports per-cell/balance handling. Validate cell count and storage voltage, dry-run by default, require explicit confirmation. |
| charger_emergency_stop | Call charger.stop_slot or charger.stop_all immediately; do not wait for profile validation. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| profiles | |
| profile-schema | |
| safety-limits | |
| device-capabilities | |
| session-log/latest |
TDQS
Scored across 27 tools
Many tools have overlapping purposes, e.g., charger.connect vs mc3000_connect, charger.get_status vs mc3000_status, charger.get_voltage_curve vs mc3000_get_voltage_curve. This duplication makes it difficult for agents to choose the correct tool.
Two inconsistent naming conventions are used: 'charger.' prefix with dot notation and 'mc3000_' prefix with underscore notation. Within each set, names are consistent, but mixing them is confusing. Also, 'mc3000_mc5000_status' is an outlier.
27 tools is excessive for a charger control server. Much of this is due to duplication between the two tool sets. The server would be better served with a single, streamlined set of around 10-15 tools.
Despite the duplication, the server covers most essential operations: connect, disconnect, scan, apply profiles, start/stop, get status, get voltage curve, and export logs. Minor gaps like firmware update are present but not critical.