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.

C
Caution
68/100

VICE C64 Emulator MCP Server

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

Code Verified⚡ Live Monitored: not connected

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

Is this your MCP?

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.

// key findings
⚠️
Known vulnerabilities in dependencies: 2 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
// tools this server exposes26 tools

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.

status

Get 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

connect

Connect 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

disconnect

Disconnect from the VICE emulator instance. Cleanly closes the connection. Safe to call even if not connected. Related tools: connect, status

readMemory

Read 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

writeMemory

Write 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

getRegisters

Get 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),

continue

Resume C64 execution after a breakpoint or pause. Starts the emulator running until the next breakpoint, manual stop, or error. Related tools: step, status, setBreakpoint

step

Execute 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

reset

Reset 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

setBreakpoint

Set 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

deleteBreakpoint

Delete a breakpoint by its ID. Use listBreakpoints to see current breakpoint IDs. Related tools: setBreakpoint, listBreakpoints

listBreakpoints

List 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

toggleBreakpoint

Enable or disable a breakpoint without deleting it. Use this to temporarily disable breakpoints while keeping their configuration. Related tools: setBreakpoint, deleteBreakpoint, listBreakpoints

setWatchpoint

Set 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

listWatchpoints

List all active memory watchpoints. Shows watchpoint IDs, address ranges, type (load/store), and status. Related tools: setWatchpoint, deleteBreakpoint, listBreakpoints

runTo

Run 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)

disassemble

Disassemble 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

saveSnapshot

Save 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

loadSnapshot

Load 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

loadProgram

Load 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,

readScreen

Read 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

readColorRam

Read 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

readVicState

Read 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

readSprites

Read 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

screenshot

Capture 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

renderScreen

Render 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

// known CVEs in dependencies2 high

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

high@modelcontextprotocol/sdk@1.25.1GHSA-345p-7cg4-v4c7

@modelcontextprotocol/sdk has cross-client data leak via shared server/transport instance reuse

high@modelcontextprotocol/sdk@1.25.1GHSA-8r9q-7v3j-jr4g

Anthropic's MCP TypeScript SDK has a ReDoS vulnerability

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// quality suggestions

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.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 6 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/simen/vice-mcp?variant=verified)](https://m8ven.ai/mcp/simen/vice-mcp)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: d06d2ef71d31e7b5cb4876cdb2c8e6e28c665aeb
code hash: 3abd34607487238051351bb8a930702d6805a5cf4779f28cca0a9177d945cea1
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

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
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client