buspirate-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@buspirate-mcpprobe UART baud rate on target device"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
buspirate-mcp
MCP server for BusPirate 6 hardware security testing. Exposes UART, SPI, I2C, 1-Wire, power supply, GPIO, and logic analyzer operations as Model Context Protocol tools over stdio transport. 33 tools across 4 bus protocols + logic analyzer.
Built for use with Claude Code but works with any MCP client.
What it does
UART probing: detect baud rates, capture serial output, interact with debug consoles
SPI flash: probe JEDEC ID, read/dump/write SPI flash chips (W25Q series, SOIC-8 clip)
I2C bus: scan for devices, read/write registers, dump EEPROM contents
1-Wire: enumerate devices, read ROM codes (DS18B20, iButton)
Power control: voltage/current management with safety tiers
GPIO control: toggle pins for bootloader entry (ESP32, ESP8266, etc.)
Flash extraction: dump firmware through UART bridge via esptool
Logic analyzer: follow-along capture at 75 MHz on all 8 IO pins with protocol identification
Engagement logging: per-protocol logs (UART text, SPI/I2C/1-Wire JSONL), per-engagement folders
Related MCP server: mcp-sigrok
Requirements
Python 3.11+
BusPirate 6 with BPIO2 binary mode enabled
User in
dialoutgroup for serial access (sudo usermod -aG dialout $USER)
Install
git clone --recurse-submodules https://github.com/mplogas/buspirate-mcp.git
cd buspirate-mcp
pip install -e ".[dev]"MCP Client Configuration
Copy the example config and adjust paths for your machine:
cp .mcp.json.example .mcp.json
# Edit .mcp.json with the absolute path to your venv's pythonThe .mcp.json is gitignored since paths are machine-specific. Example config:
{
"mcpServers": {
"buspirate": {
"command": "/path/to/.venv/bin/python",
"args": ["-m", "buspirate_mcp"]
}
}
}Set PIDEV_ENGAGEMENTS_DIR environment variable to control where engagement logs are written. Defaults to ./engagements/ relative to the package root.
Tools
Tool | Safety Tier | Description |
| read-only | Find BusPirate devices on USB |
| read-only | Check for signal activity on pins |
| read-only | Auto-detect baud rate |
| read-only | Read UART data from target |
| allowed-write | Open persistent UART session with logging |
| allowed-write | Send command and capture response |
| allowed-write | Close session, finalize logs |
| allowed-write | GPIO toggle for bootloader entry |
| allowed-write | Dump flash via esptool through UART bridge |
| approval-write | Set PSU voltage (requires confirmation) |
| approval-write | Enable/disable PSU (requires confirmation) |
SPI | ||
| allowed-write | Configure SPI mode, create session |
| read-only | Read JEDEC ID + status register, decode chip |
| read-only | Read N bytes from SPI flash address |
| read-only | Full flash dump to binary file |
| approval-write | Erase + program + verify SPI flash (requires confirmation) |
| read-only | Raw SPI transfer (hex in/out) |
| allowed-write | Close SPI session, reset mode |
I2C | ||
| allowed-write | Configure I2C mode, create session |
| read-only | Scan bus for devices (0x00-0x7F) |
| read-only | Read bytes from device + register |
| approval-write | Write bytes to device + register (requires confirmation) |
| read-only | Dump EEPROM contents to file |
| allowed-write | Close I2C session, reset mode |
1-Wire | ||
| allowed-write | Configure 1-Wire mode, create session |
| read-only | Reset bus, Read ROM, decode family code |
| read-only | Raw 1-Wire transaction |
| allowed-write | Close 1-Wire session, reset mode |
Logic Analyzer | ||
| allowed-write | Switch to FALA mode, enter bus protocol for capture |
| read-only | Execute bus command and capture signal data |
| read-only | Analyze capture for signal characteristics |
| read-only | Auto-identify bus protocols from capture |
| allowed-write | Restore BPIO2 mode |
Safety Model
Three tiers enforced at the MCP server boundary:
read-only: full autonomy, no side effects
allowed-write: autonomous execution, all calls logged
approval-write: blocks until human confirms via
_confirmedparameter. Wrong voltage fries chips. SPI flash writes and I2C writes overwrite data irreversibly.
BusPirate 6 Setup
Enable BPIO2 binary mode
Connect to the BP6 terminal port (ACM0) and run:
binmode -> select 2 (BPIO2 flatbuffer interface) -> y to saveThis persists across reboots.
Pin mapping
UART mode uses IO4 (TX->) and IO5 (RX<-). The BP6 display is the authoritative source for pin assignment.
Free pins (IO0-IO3, IO6-IO7) can be used for GPIO control (bootloader entry, reset) while UART is active.
Project integration
The open_uart tool accepts an optional engagement_path parameter. When provided (from project-mcp's open_engagement), engagement data is written to <engagement_path>/uart/ instead of creating a standalone folder. Omit it for standalone use.
Known limitations
Bridge mode exit: after flash dump operations, bridge mode stays active. Press the physical BP6 button or USB-replug to exit.
Dual-port operation: BPIO2 (binary port) and bridge mode (terminal port) cannot operate simultaneously.
Baud scan timing: fast-booting targets may finish output before the scan reaches the correct rate.
Port numbering: the binary port number may change after USB replug (ACM1 -> ACM2). The server auto-detects.
Tests
pytest # 203 tests, no hardware needed
pytest -m hardware # integration tests, BP6 must be connectedLicense
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for progressive tool usage at any scale (see https://klavis.ai)
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server exposing pwntools 4.15.0 functionality for binary exploitation tasks.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that exposes all functionality of sigrok-cli as MCP tools, enabling hardware initialization, signal acquisition, and protocol decoding for logic analyzers.2MIT
- FlicenseBqualityDmaintenanceMCP server for controlling MicroPython devices (ESP32, RP2040, etc.) via USB Serial or WebREPL, enabling code execution, file operations, and device management from MCP clients.299-
- AlicenseNot gradedqualityBmaintenanceMCP server for Raspberry Pi peripheral bus access, enabling AI agents to interact with CAN, I2C, SPI, UART, and GPIO directly through natural language.2MIT