Skip to main content

MCP server wrapping pymcuprog for AVR/Microchip programming

Project description

pymcuprog-mcp

MCP server wrapping pymcuprog so AI tools (Claude Code, Claude Desktop, etc.) can program Microchip AVR microcontrollers via natural language.

Supports USB HID debuggers (nEDBG, PICkit 4, Atmel-ICE, MPLAB Snap, …) and serial UART UPDI adapters.

Installation

No installation needed if you use uvx — it runs the server directly from PyPI on demand (see .mcp.json examples below).

To install as a persistent tool:

uv tool install pymcuprog-mcp

Or with pip:

pip install pymcuprog-mcp

From source:

git clone https://github.com/lucasgerads/pymcuprog-mcp
cd pymcuprog-mcp
pip install -e .

Configuration

The server is configured via environment variables. The two most important ones are PYMCUPROG_DEVICE (target MCU name, e.g. atmega4808) and PYMCUPROG_TOOL (debugger type, e.g. nedbg).

Variable Description Default
PYMCUPROG_DEVICE Target device name (e.g. atmega4808, attiny416)
PYMCUPROG_TOOL Debugger type (nedbg, pickit4, atmelice, snap, …) any connected
PYMCUPROG_SERIALNUMBER USB serial number substring (to pick a specific tool)
PYMCUPROG_SERIALPORT Serial port for UART UPDI mode (e.g. /dev/ttyUSB0, COM3)
PYMCUPROG_BAUDRATE Baud rate for serial UPDI mode 115200
PYMCUPROG_PROJECT_DIR Default project directory for the build_and_flash tool

Setting PYMCUPROG_SERIALPORT switches the server into serial UPDI mode (uses a plain USB-serial adapter instead of a Microchip debugger).

.mcp.json examples

All examples use uvx, which downloads and runs the server directly from PyPI with no prior installation step.

USB HID debugger (nEDBG / Curiosity Nano)

{
  "mcpServers": {
    "pymcuprog": {
      "command": "uvx",
      "args": ["pymcuprog-mcp"],
      "env": {
        "PYMCUPROG_DEVICE": "atmega4808",
        "PYMCUPROG_TOOL": "nedbg"
      }
    }
  }
}

PICkit 4 or MPLAB Snap

{
  "mcpServers": {
    "pymcuprog": {
      "command": "uvx",
      "args": ["pymcuprog-mcp"],
      "env": {
        "PYMCUPROG_DEVICE": "attiny416",
        "PYMCUPROG_TOOL": "pickit4"
      }
    }
  }
}

Serial UART UPDI (cheap USB-serial adapter)

{
  "mcpServers": {
    "pymcuprog": {
      "command": "uvx",
      "args": ["pymcuprog-mcp"],
      "env": {
        "PYMCUPROG_DEVICE": "avr128da48",
        "PYMCUPROG_SERIALPORT": "/dev/ttyUSB0",
        "PYMCUPROG_BAUDRATE": "115200"
      }
    }
  }
}

Multiple tools on the same machine (select by serial number)

{
  "mcpServers": {
    "pymcuprog-board-a": {
      "command": "uvx",
      "args": ["pymcuprog-mcp"],
      "env": {
        "PYMCUPROG_DEVICE": "atmega4808",
        "PYMCUPROG_TOOL": "nedbg",
        "PYMCUPROG_SERIALNUMBER": "MCHP0001"
      }
    },
    "pymcuprog-board-b": {
      "command": "uvx",
      "args": ["pymcuprog-mcp"],
      "env": {
        "PYMCUPROG_DEVICE": "atmega4808",
        "PYMCUPROG_TOOL": "nedbg",
        "PYMCUPROG_SERIALNUMBER": "MCHP0002"
      }
    }
  }
}

Claude Code (via CLI)

claude mcp add pymcuprog -e PYMCUPROG_DEVICE=atmega4808 -e PYMCUPROG_TOOL=nedbg -- uvx pymcuprog-mcp

Available tools

Tool Description
list_supported_devices All device names pymcuprog knows (no hardware needed)
list_connected_tools USB HID debuggers currently attached
ping Read device ID bytes to verify connectivity
erase Chip erase or erase a specific memory area
flash Erase + write + verify + release in one call (recommended)
build_and_flash Run make in a project directory, then flash the resulting .hex
write_hex Program a .hex file with manual control over erase/verify steps
verify_hex Compare target memory to a .hex file
read_memory Read raw bytes from flash, EEPROM, fuses, etc.
write_memory Write raw hex bytes to fuses, EEPROM, user_row, etc.
hold_in_reset Hold target in reset
release_from_reset Release target from reset
disconnect Close the persistent debugger session
read_target_voltage Measure target VCC
read_supply_voltage Read debugger supply setpoint
set_supply_voltage Set debugger supply voltage output
read_tool_info Read debugger firmware/hardware info

Typical workflow: pingflash or pingbuild_and_flash

All programming tools accept optional device, tool, serialport, etc. parameters to override the environment variables on a per-call basis.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymcuprog_mcp-0.1.3.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pymcuprog_mcp-0.1.3-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file pymcuprog_mcp-0.1.3.tar.gz.

File metadata

  • Download URL: pymcuprog_mcp-0.1.3.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pymcuprog_mcp-0.1.3.tar.gz
Algorithm Hash digest
SHA256 80e06e545699679fc97dcd86a3dec6e41c9eec509f23cd8637de606c44b6960b
MD5 32407960dfee13ae003a109eef9b5caf
BLAKE2b-256 8641f0f4ad13e7c61e0a3b12204f6f1f899ce30aead50c45f05f42b6886df6f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcuprog_mcp-0.1.3.tar.gz:

Publisher: release.yml on lucasgerads/pymcuprog-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcuprog_mcp-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: pymcuprog_mcp-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pymcuprog_mcp-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2fd3ec4701c9cba755e0c3140a97599d93d8b52f6513ec11fbf695966d1a2c67
MD5 c6e1b8292b8fabe8a259aea43dc76482
BLAKE2b-256 b8930bcf6aa43ef9d11679a058d2120afe882cb865625944ea0625ec80f409b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcuprog_mcp-0.1.3-py3-none-any.whl:

Publisher: release.yml on lucasgerads/pymcuprog-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page