LabscoMCP early access ↗
barrywMCP SERVER

VICE MCP

A Commodore 64 you can debug from an agent — breakpoints, memory, sprites, SID registers and the keyboard.

by barryw ↗Runtime Debugging & Crash AnalysisCommunity

LABSCO SUMMARY

A modern debugging workflow for an 8-bit machine.

Loading symbol files and setting breakpoints by label is what turns this from a novelty into a workflow — you debug by name, not by address. Two things to know before you plan around it: the events endpoint exists but currently returns 501 Not Implemented, so state has to be polled, and the Windows build is headless only because GTK3 cross-compilation is not in place. Binding to all interfaces without a token is permitted for compatibility, but VICE logs a warning, and it deserves one.

What it is

The VICE emulator with an MCP server compiled into it. Not a wrapper around the monitor and not a screen-scraper: tool calls are dispatched through VICE's own trap mechanism onto the emulator's main thread, and read the actual register values rather than a cached copy.

What you get

  • Tools grouped by category, every one JSON Schema validated
  • Execution and registers: vice.execution.run, vice.execution.pause, vice.execution.step, vice.run_until, vice.registers.get, vice.registers.set
  • Memory: vice.memory.read, vice.memory.write, vice.memory.banks, vice.memory.search with wildcard patterns, vice.memory.fill, vice.memory.compare
  • Breakpoints and watchpoints with conditions, ignore counts, grouping and auto-snapshots, through the vice.checkpoint.* family
  • Chip state: vice.sprite.inspect renders a sprite bitmap as ASCII art, vice.vicii.get_state and vice.sid.get_state read the video and sound chips, vice.cia.get_state covers the timer chips
  • Disks and machine control: vice.disk.attach, vice.disk.read_sector, vice.autostart, vice.machine.reset, vice.machine.config.get
  • Interaction and capture: vice.keyboard.type, vice.joystick.set, vice.display.screenshot
  • Debugging support: vice.disassemble, vice.symbols.load for KickAssembler or VICE symbol files, vice.backtrace, vice.cycles.stopwatch, and tracing with vice.trace.start and vice.interrupt.log.start
  • The tool surface adapts to the machine: C64, C128, SCPU64, C64 DTV, VIC-20, Plus/4 and C16, PET and CBM-II are all covered, and the config call reports which chips and memory banks the running machine actually has

Requirements

Either a pre-built binary from the project's releases, or a source build of VICE configured with the MCP server enabled — which needs libmicrohttpd, GTK3, autoconf, automake, pkg-config and the xa assembler. Start any VICE machine with the MCP flag and clients connect to http://127.0.0.1:6510/mcp; the port and bind host are flags. A bearer token flag is available and is mandatory once CORS is configured, where wildcard origins are rejected.

Setup effort

Follow the published steps — git clone https://github.com/barryw/vice-mcp.git