VICE C64 Emulator MCP Server (simen/vice-mcp) is an MCP server listed on the M8ven Trust Index. It scores 68 out of 100, grade C. It declares 26 tools. No publisher has claimed this listing.
Enables autonomous debugging of Commodore 64 programs through the VICE emulator with semantic interpretation of C64-specific data structures, memory layouts, VIC-II states, and PETSCII encoding for AI-assisted 6502 assembly debugging.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
simen
Source: Glama
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
statusGet current VICE connection and emulation state. Returns connection status, whether emulation is running or paused, and host/port if connected. Use this to: - Check if you're connected before running other commands - See if emulation is running or stopped (e.g., at a breakpoint) - Verify connectio…
connectConnect to a running VICE emulator instance via the binary monitor protocol. VICE must be started with the binary monitor enabled: x64sc -binarymonitor -binarymonitoraddress ip4://127.0.0.1:6502 Default connection: 127.0.0.1:6502 Use this first before any debugging operations. Connection persis…
disconnectDisconnect from the VICE emulator instance. Cleanly closes the connection. Safe to call even if not connected. Related tools: connect, status
readMemoryRead memory from the C64's address space. Returns raw bytes plus hex and ASCII representations. C64 memory map highlights: - $0000-$00FF: Zero page (fast access, common variables) - $0100-$01FF: Stack - $0400-$07FF: Default screen RAM (1000 bytes) - $D000-$D3FF: VIC-II registers (graphics) - $D400…
writeMemoryWrite bytes to the C64's memory. Directly modifies memory at the specified address. Changes take effect immediately. Common uses: - Poke values for testing - Patch code at runtime - Modify screen/color RAM directly - Change VIC/SID registers Be careful writing to ROM areas ($A000-$BFFF, $E000-$FF…
getRegistersGet current 6502/6510 CPU register state. Returns all CPU registers with interpreted flags. Registers: - A: Accumulator (arithmetic operations) - X, Y: Index registers (addressing, loops) - SP: Stack pointer ($100-$1FF range) - PC: Program counter (current instruction address) - Flags: N(egative),…
continueResume C64 execution after a breakpoint or pause. Starts the emulator running until the next breakpoint, manual stop, or error. Related tools: step, status, setBreakpoint
stepExecute one or more instructions, then stop. Single-stepping is essential for understanding code flow and debugging. Options: - count: Number of instructions to execute (default: 1) - stepOver: If true, treat JSR as single instruction (don't step into subroutines) After stepping, use getRegisters…
resetReset the C64 machine. Options: - hard: If true, performs hard reset (like power cycle). If false, soft reset (like reset button). A soft reset preserves some memory contents, hard reset clears everything. Related tools: connect, status
setBreakpointSet an execution breakpoint at a memory address. When the PC reaches this address, execution stops. Use to: - Debug code at specific points - Catch when routines are called - Analyze code flow Returns a breakpoint ID for later management. Related tools: deleteBreakpoint, listBreakpoints, continue…
deleteBreakpointDelete a breakpoint by its ID. Use listBreakpoints to see current breakpoint IDs. Related tools: setBreakpoint, listBreakpoints
listBreakpointsList all active breakpoints. Shows breakpoint IDs, addresses, and status for all breakpoints set in this session. Note: This tracks breakpoints set through this MCP session. Breakpoints set through VICE's built-in monitor may not appear. Related tools: setBreakpoint, deleteBreakpoint
toggleBreakpointEnable or disable a breakpoint without deleting it. Use this to temporarily disable breakpoints while keeping their configuration. Related tools: setBreakpoint, deleteBreakpoint, listBreakpoints
setWatchpointSet a memory watchpoint to stop when memory is read or written. Watchpoints are powerful for debugging: - "Why is this value changing?" → Use store watchpoint - "What's reading this address?" → Use load watchpoint - "Track all access to this region" → Use both Range can be single address or addres…
listWatchpointsList all active memory watchpoints. Shows watchpoint IDs, address ranges, type (load/store), and status. Related tools: setWatchpoint, deleteBreakpoint, listBreakpoints
runToRun execution until a specific address is reached. Sets a temporary breakpoint at the target address and continues execution. The breakpoint is automatically deleted when hit. Use for: - "Run until this function" → runTo(functionAddress) - "Skip to the end of this loop" → runTo(addressAfterLoop) …
disassembleDisassemble 6502 machine code at a memory address. Returns human-readable assembly instructions with: - Address and raw bytes - Mnemonic and operand - Branch target addresses (for branch instructions) - Known KERNAL/BASIC labels Options: - address: Start address (default: current PC) - count: Numb…
saveSnapshotSave the complete machine state to a file. Creates a VICE snapshot file containing: - All memory (RAM, I/O states) - CPU registers - VIC-II, SID, CIA states - Disk drive state (if attached) Use to: - Save state before risky debugging - Create restore points - Share exact machine state Related too…
loadSnapshotLoad a previously saved machine state from a file. Restores complete machine state including memory, registers, and peripheral states. Warning: This completely replaces the current state! Related tools: saveSnapshot
loadProgramLoad and optionally run a program file. Supports PRG, D64, T64, and other C64 file formats. For disk images, can specify which file to run. Options: - run: If true (default), starts execution after loading - fileIndex: For disk images, which file to load (0 = first) Related tools: reset, status, …
readScreenRead the C64 screen memory and return it as interpreted text. Converts PETSCII screen codes to readable ASCII. Returns 25 lines of 40 characters. Use this instead of readMemory($0400) when you want to see what's displayed on screen. Note: This reads from the current screen RAM location (may not b…
readColorRamRead color RAM ($D800-$DBE7) and return color values with names. Color RAM determines the foreground color of each character on screen. Returns: - 25x40 grid of color values (0-15) with names - Summary of colors used Related tools: readScreen, readVicState
readVicStateRead the full VIC-II state with interpreted values. Returns all VIC-II registers with semantic meaning: - Border and background colors (with names) - Graphics mode (text, bitmap, multicolor, etc.) - Screen and character memory locations - Scroll values - Raster position - Sprite enable bits This i…
readSpritesRead state of all 8 hardware sprites with interpreted values. Returns for each sprite: - Position (X, Y) with visibility check - Color (with name) - Enable status - Multicolor mode - X/Y expansion (double size) - Priority (in front of / behind background) - Data pointer address Use this to debug s…
screenshotCapture the current VICE display as image data. Returns the raw display buffer with: - Pixel data (indexed 8-bit palette colors) - Display dimensions and visible area - Current palette RGB values The data can be used to understand what's currently on screen visually. For text mode screens, readScr…
renderScreenRender the current screen as ASCII art representation. Creates a visual representation of the screen using ASCII characters to approximate the colors and content visible on the C64 display. This is useful for quick visual debugging without image handling. For actual screen text, use readScreen ins…
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
@modelcontextprotocol/sdk has cross-client data leak via shared server/transport instance reuse
Anthropic's MCP TypeScript SDK has a ReDoS vulnerability
Tool annotations
No tools have read-only/destructive annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
26/26 tools missing one or more hints — status (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); connect (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); disconnect (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +23 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Tool inputs are validated
19/26 tool handlers declare input schemas (73%)
Declare an inputSchema with zod/joi/yup on every tool definition.
License file
No license file
Add a LICENSE file (MIT, Apache-2.0, etc.).
Tool test coverage
17/26 tools referenced in tests (65%)
Write tests that reference each tool by name so every tool has at least one test.
Production dependencies are patched
0 critical, 2 high severity in production deps — @modelcontextprotocol/sdk@1.25.1 (high), @modelcontextprotocol/sdk@1.25.1 (high)
Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/simen/vice-mcp)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check