Skip to content

Changelog

All notable changes to MCP/U are documented in this file.


Released: 2026-05-15

  • mcpu-client runtime version reporting - package 1.2.0 still advertised client/server runtime version 1.1.0; 1.2.1 reports 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 McpPollConfig struct and McpPolling(interval_ms) helper
    • Register a tool with mcp.add_tool("name", "desc", handler, McpPolling(2000))
    • Firmware emits "polling": {"enabled": true, "interval_ms": N} in list_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
  • writeResource crash on startup (mcpu-client) — missing unit, data_type, sampling_enabled, and metadata_json fields caused "Missing named parameter unit" error
  • sql_readonly_query and memory_status tools not registering — previously gated on memory && 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_events schemapin parameter was declared as "string" which caused MCP Inspector and clients to send "34" instead of 34, failing the _find_pin() lookup; now correctly declared as "integer"

Released: 2025-11-01

  • SQLite memory subsystem (mcpu-client)
    • Local mcpu-memory.db stores all sensor observations, tool calls, and buffer drains
    • sql_readonly_query MCP tool — LLM can query history with raw SQL (SELECT/WITH only)
    • memory_status MCP tool — returns driver status, row counts, poller health
    • mcu://cache/schema, mcu://cache/status, mcu://cache/examples MCP resources
  • Buffer Drain Poller — automatically drains pin ring buffers from ESP32 into memory based on capabilities.buffer + sampling metadata discovered via list_tools
  • Env-var auto-poll (MCPU_AUTO_POLL_<TOOLNAME>=<ms>) — workaround for custom tools before firmware-declared polling was available (superseded by McpPolling in v1.2.0)
  • Retention configMCPU_RAW_RETENTION_HOURS, MCPU_TOOL_CALL_RETENTION_DAYS

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
  • 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
  • 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