Changelog
All notable changes to MCP/U are documented in this file.
v1.2.1 - Client Runtime Version Metadata
Section titled “v1.2.1 - Client Runtime Version Metadata”Released: 2026-05-15
mcpu-clientruntime version reporting - package1.2.0still advertised client/server runtime version1.1.0;1.2.1reports the published npm version.
v1.2.0 — Firmware-Driven Polling & Bug Fixes
Section titled “v1.2.0 — Firmware-Driven Polling & Bug Fixes”Released: 2026-05-15
McpPolling(ms)— firmware-declared auto-poll (MCP-U_Arduino)- New
McpPollConfigstruct andMcpPolling(interval_ms)helper - Register a tool with
mcp.add_tool("name", "desc", handler, McpPolling(2000)) - Firmware emits
"polling": {"enabled": true, "interval_ms": N}inlist_tools - Client reads the interval and schedules calls automatically — no env vars needed
- Buffer results (
type: "buffer") from polled tools are written to memory as observations
- New
writeResourcecrash on startup (mcpu-client) — missingunit,data_type,sampling_enabled, andmetadata_jsonfields caused"Missing named parameter unit"errorsql_readonly_queryandmemory_statustools not registering — previously gated onmemory && readonlyAdapter; both tools now always register with null-safe handlers so the LLM can always call them (and get a descriptive error if memory is unavailable)get_pin_summary,get_pin_buffer,get_pin_eventsschema —pinparameter was declared as"string"which caused MCP Inspector and clients to send"34"instead of34, failing the_find_pin()lookup; now correctly declared as"integer"
v1.1.0 — Memory Subsystem
Section titled “v1.1.0 — Memory Subsystem”Released: 2025-11-01
- SQLite memory subsystem (
mcpu-client)- Local
mcpu-memory.dbstores all sensor observations, tool calls, and buffer drains sql_readonly_queryMCP tool — LLM can query history with raw SQL (SELECT/WITH only)memory_statusMCP tool — returns driver status, row counts, poller healthmcu://cache/schema,mcu://cache/status,mcu://cache/examplesMCP resources
- Local
- Buffer Drain Poller — automatically drains pin ring buffers from ESP32 into memory
based on
capabilities.buffer+samplingmetadata discovered vialist_tools - Env-var auto-poll (
MCPU_AUTO_POLL_<TOOLNAME>=<ms>) — workaround for custom tools before firmware-declared polling was available (superseded byMcpPollingin v1.2.0) - Retention config —
MCPU_RAW_RETENTION_HOURS,MCPU_TOOL_CALL_RETENTION_DAYS
v1.0.0 — Initial Release
Section titled “v1.0.0 — Initial Release”Released: 2025-05-01
-
MCP-U Firmware Library (
McpIot)- JSON-RPC 2.0 protocol implementation over Arduino
Stream - Built-in tools:
get_info,list_tools,gpio_write,gpio_read,pwm_write,adc_read - Custom tool registration via
McpDevice::registerTool() - Pin registry with type support (
digital_output,digital_input,pwm_output,adc_input) - JSON Schema generation for all tools
- JSON-RPC 2.0 protocol implementation over Arduino
-
Transport Support
- Serial (UART) — primary transport, USB-UART
- TCP (WiFi) — ESP32 WiFiClient server mode
-
Client (
mcpu-client)- TypeScript MCP server implementation
- Dynamic tool discovery via
list_tools - JSON Schema to Zod conversion at runtime
- Multi-device support with device ID prefixing
- Serial and TCP transport abstraction
-
Platform Support
- ESP32 (all variants) — full support
- ESP8266 — full support
- Arduino AVR (Uno, Mega, Nano) — limited RAM support
- RP2040 (Pico) — experimental
-
Documentation
- Starlight documentation site
- Architecture reference
- Protocol specification
- Client setup guides
- Firmware development guide
- Compatibility matrix
Known Limitations
Section titled “Known Limitations”- No authentication or encryption (local-only use)
- No hot-plug reconnection (restart client to reconnect)
- AVR boards omit JSON Schema for custom tools (memory constraints)
- No nested objects or arrays in JSON Schema (RAM constraints)
- No WebSocket or mDNS support in v1.0