Atlas / MCP servers / chrisgleissner / C64 Bridge

C64 BridgeCAUTION

mcp/chrisgleissner/c64-bridge

MCP server to control and program the Commodore 64 Ultimate, Ultimate 64, Ultimate II, or VICE.

Verdict
CAUTION
Grade
B
Trust score
86 /100
Exposed tools
128 86r · 34w · 8d
Transport
stdio · streamable-http
License
GPL-2.0
Stars
37
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Your AI Command Bridge for the Commodore 64.

[](https://www.npmjs.com/package/c64bridge) [](https://github.com/chrisgleissner/c64bridge/actions/workflows/ci.yaml) [](https://codecov.io/github/chrisgleissner/c64bridge) [](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) [](doc/developer.md)

[](https://vscode.dev/redirect/mcp/install?name=io.github.chrisgleissner%2Fc64bridge&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22c64bridge%22%5D%2C%22env%22%3A%7B%22C64MODE%22%3A%22c64u%22%2C%22C64UHOST%22%3A%22c64u%22%2C%22VICEBINARY%22%3A%22%2Fusr%2Flocal%2Fbin%2Fx64sc%22%2C%22VICEDIRECTORY%22%3A%22%2Fusr%2Flocal%2Fshare%2Fvice%22%2C%22VICEVISIBLE%22%3A%22true%22%2C%22VICEWARP%22%3A%22false%22%7D%7D) [](https://insiders.vscode.dev/redirect/mcp/install?name=io.github.chrisgleissner%2Fc64bridge&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22c64bridge%22%5D%2C%22env%22%3A%7B%22C64MODE%22%3A%22c64u%22%2C%22C64UHOST%22%3A%22c64u%22%2C%22VICEBINARY%22%3A%22%2Fusr%2Flocal%2Fbin%2Fx64sc%22%2C%22VICEDIRECTORY%22%3A%22%2Fusr%2Flocal%2Fshare%2Fvice%22%2C%22VICEVISIBLE%22%3A%22true%22%2C%22VICEWARP%22%3A%22false%22%7D%7D&quality=insiders) [![Install in Visual Studio](https://img.shields.io/badge/I

Read from source at commit 4b9fb918def5OBSERVED · 2026-10-08
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add c64bridge --env C64U_PASSWORD=${C64U_PASSWORD} --env GITHUB_TOKEN=${GITHUB_TOKEN} -- npx -y [email protected]
03

Exposed tools (128)

86 read · 34 write · 8 destructive. Blast radius: 8 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
Examplereaddesc
HealthcheckreadBasic firmware readiness
MenureadToggle menu
PausereadHalt CPU
ResumereadContinue CPU
SilencewriteStop all voices
alphareadAlpha
analyze_audioreadAutomatically analyze SID playback when the user requests verification feedback.
assembly-programreadRoute 6502/6510 routine requests to the canonical assembly skill.
basic-programreadRoute bespoke Commodore BASIC v2 requests to the canonical BASIC skill.
batch_run_with_assertionswriteRun multiple programs with post-condition assertions; produce junit-like results.
betareadBeta
bundle_run_artifactswriteGather screen capture, memory snapshots, and debugreg into a structured bundle for a run.
c64_batchwriteExecute multiple c64bridge tool calls in a single request. Reduces latency for multi-step workflows.
c64_configreadGrouped entry point for configuration reads/writes, diagnostics, and snapshots.
c64_customreadCustom grouped tool.
c64_debugreadGrouped entry point for VICE debugger operations (breakpoints, registers, stepping).
c64_diskreadGrouped entry point for disk mounts, listings, image creation, and program discovery.
c64_drivedestructiveGrouped entry point for drive power, mode, reset, and ROM operations.
c64_emptyreadUngrouped placeholder.
c64_extractreadGrouped entry point for sprite/charset extraction, memory dumps, filesystem stats, and firmware health checks.
c64_flattenedreadFlattened grouped tool.
c64_flattened_metadatareadFlattened grouped tool with operation metadata.
c64_inputreadCross-platform PETSCII typing plus native Ultimate keyboard and joystick events.
c64_memoryreadGrouped entry point for memory I/O, screen reads, and screen polling.
c64_printerreadGrouped entry point for Commodore and Epson printing helpers.
c64_programwriteGrouped entry point for program upload, execution, and batch workflows.
c64_ragreadGrouped entry point for BASIC and assembly RAG lookups.
c64_select_backendreadSwitch the active backend between C64U/U64 hardware, U2-family cartridges, and the VICE emulator at runtime.
c64_soundreadGrouped entry point for SID control, playback, composition, and analysis workflows.
c64_streamreadGrouped entry point for starting and stopping Ultimate streaming sessions.
c64_systemdestructiveGrouped entry point for power, reset, menu, and background task control.
c64_testreadtest grouped tool
c64_vicereadGrouped entry point for reading and updating selected VICE resources.
compile_run_verify_cyclewriteCompile source (BASIC/ASM/SIDWAVE), run, verify via screen/audio, and archive artifacts.
config_batch_updatewriteApply multiple configuration changes in a single request.
config_getreadRead a configuration category or specific item.
config_listreadList configuration categories available on the Ultimate firmware.
config_load_from_flashreadLoad configuration settings from flash storage.
config_reset_to_defaultdestructiveReset configuration categories to their factory defaults.
config_save_to_flashwritePersist current configuration settings to flash storage.
config_setwriteSet a configuration value within a category.
config_snapshot_and_restorewriteRead all configuration categories and write a versioned snapshot, or restore from a snapshot; supports diff mode.
create_d64writeCreate a blank D64 disk image on the Ultimate filesystem.
create_d71writeCreate a blank D71 disk image on the Ultimate filesystem.
create_d81writeCreate a blank D81 disk image on the Ultimate filesystem.
create_dnpwriteCreate a blank DNP disk image on the Ultimate filesystem.
cross-platform-demoreadRoute quick visible demo requests to the cross-platform demo skill.
cross_platform_greetingreadRender a customized greeting on VICE and/or C64U, capture screenshots, and verify both results in one workflow.
debugreg_readreadRead the Ultimate debug register ($D7FF).
debugreg_writewriteWrite a value into the Ultimate debug register ($D7FF).
define_printer_charsreadDefine custom characters on Commodore MPS printers using DLL mode.
drive-managerreadRoute disk-image and drive-state requests to the canonical drive skill.
drive_load_romreadTemporarily load a custom ROM into an Ultimate drive slot.
drive_modewriteSet the emulation mode for an Ultimate drive slot (1541/1571/1581).
drive_mountreadMount a disk image onto a specific Ultimate drive slot.
drive_mount_and_verifyreadMount a disk image with retry logic and verification. Powers on drive if needed, mounts image, resets drive, and verifies state.
drive_offreadPower off a specific Ultimate drive slot.
drive_onreadPower on a specific Ultimate drive slot.
drive_removedestructiveRemove the currently mounted disk image from an Ultimate drive slot.
drive_resetdestructiveReset the selected Ultimate drive slot.
drives_listreadList Ultimate drive slots and their currently mounted images. Read c64://guide/bootstrap for drive safety.
extract_sprites_from_ramwriteScan a RAM region, detect sprite blobs, and optionally save them as .spr files.
file_inforeadInspect metadata for a file on the Ultimate filesystem.
filesystem_stats_by_extensionreadWalk the filesystem (and container contents) under a root and compute counts plus size statistics grouped by extension.
find_and_run_program_by_namewriteSearch under a root for the first PRG/CRT whose name contains a substring and run it.
find_paths_by_namereadReturn device paths whose names contain a substring; supports simple extension filters and wildcard-aware firmware search.
firmware_info_and_healthcheckreadFetch firmware version and info, probe zero-page read, and return readiness with latencies.
graphics-demoreadRoute graphics requests to the canonical graphics skill.
hardwarereadOptional focus area for the routine (sid, vic, cia, or multi for combined work).
hello-worldreadRoute ultra-fast hello-world and smoke-test requests to the canonical greeting skill.
inforeadRetrieve hardware or emulator information and status.
known_toolreadknown
list_background_tasksreadList known background tasks and their status.
load_prgreadLoad a PRG into C64 memory without executing it.
memory-debugreadRoute reversible memory inspection or patching work to the canonical memory skill.
memory_dump_to_filereadChunked memory dump with retries; optional pause/resume; writes hex or binary and a manifest.
menu_buttonreadToggle the Ultimate 64 menu button.
modereadTarget VIC-II technique (text, multicolour, bitmap, or sprite).
modplay_filereadPlay a MOD tracker module stored on the Ultimate filesystem.
music_compile_and_playreadCompile a SIDWAVE composition to PRG or SID and optionally play it immediately.
music_compile_play_analyzereadCompile a SIDWAVE score, play it on the C64, capture the output, and analyze the recording.
music_generatewriteGenerate a lightweight arpeggio and schedule playback on SID voice 1.
music_play_presetreadCompile and play a built-in SID preset, with optional multi-backend routing and verification.
pausereadPause the machine on Ultimate hardware. See memory safety checklist in c64://guide/bootstrap.
performance_reportreadSummarize MCP session timings, span hot spots, and tool latencies from diagnostics logs.
power_cyclereadReturn the active system to a fresh state: C64U/U64 uses verified Tool Menu navigation, U2-family reboots through REST, and managed VICE restarts.
poweroffreadPower off the machine via Ultimate firmware. See safety notes in c64://guide/bootstrap.
preset-music-demoreadRoute quick recognizable tune requests to the SID music skill.
print_bitmap_commodorereadPrint a Commodore MPS bit-image row using BIM BASIC helpers.
print_bitmap_epsonreadPrint an Epson FX bit-image row using ESC/P commands.
print_textreadPrint text on device 4 using Commodore or Epson workflows. See c64://printer/spec.
printer-jobreadRoute printer work to the canonical printer skill.
printerTypereadSelect Commodore (device 4) or Epson FX workflow helpers.
program_shuffledestructiveDiscover and run PRG/CRT programs under a root path, capturing screens and resetting between runs.
readreadRead a range of bytes from main memory and return the data as hexadecimal. Consult c64://assembly/6510-spec and docs index.
read_menu_screenreadRead the raw character and colour matrix for the currently visible Ultimate menu screen.
read_screenreadRead the current text screen (40x25) and return its ASCII representation. For PETSCII details, see c64://basic/spec.
reboot_c64readReboot the Ultimate firmware and C64. See c64://guide/bootstrap.
record_and_analyze_audioreadRecord audio and analyze SID playback characteristics. On the c64u backend the audio comes from the Ultimate audio stream; on other backends it is recorded from the host default input device (microphone).
render_bitmapwriteImport an image file, convert it to a VIC-II bitmap, write it into RAM, and display it.
render_petscii_artwriteCreate PETSCII art from prompts, text, or bitmap input, and optionally display it on the C64. Returns metadata including PETSCII codes and glyphs. See c64://basic/spec, c64://graphics/vic/spec, and c64://graphics/character-set.
render_petscii_textreadDisplay PETSCII text with optional border and background colours. See c64://basic/spec.
render_spritereadDisplay supplied 63-byte sprite data at the requested position and colour by writing memory and patching VIC-II registers directly. See c64://graphics/vic/spec for registers.
reset_c64destructiveReset the C64 via Ultimate firmware. Review c64://guide/bootstrap safety rules.
resumereadResume the machine after an Ultimate hardware pause.
rip_charset_from_ramreadLocate and extract 2KB character sets from RAM by structure and entropy checks. Exports as binary.
run_crtwriteRun a cartridge image stored on the Ultimate filesystem.
run_prgwriteRun a PRG located on the Ultimate filesystem without uploading source.
sid-musicreadRoute SID playback and composition work to the canonical SID skill.
sid_note_offreadRelease a SID voice by clearing its GATE bit.
sid_note_onwriteTrigger a SID voice with configurable waveform, pulse width, and ADSR envelope. See c64://sound/sid/spec.
sid_resetdestructiveReset the SID chip either softly (silence) or with a full register scrub.
sid_silence_allreadSilence all SID voices by clearing control and envelope registers.
sid_volumewriteSet the SID master volume register at $D418. See c64://sound/sid/spec.
sidplay_filereadPlay a SID file stored on the Ultimate filesystem via the firmware player.
silence_and_verifyreadSilence all SID voices, capture a short sample, and ensure the output is below an RMS threshold.
start_background_taskwriteStart a background task that runs an operation at a fixed interval for N iterations or indefinitely.
stop_all_background_taskswriteStop all active background tasks.
stop_background_taskwriteStop a named background task.
stream_startwriteStart an Ultimate streaming session (video/audio/debug) targeting a host:port destination. See c64://guide/index for usage notes.
stream_stopwriteStop an Ultimate streaming session (video/audio/debug).
upload_run_asmwriteAssemble 6502/6510 source code, upload the PRG, and run it immediately. See c64://assembly/6510-spec.
upload_run_basicwriteUpload a BASIC program to the C64 and execute it immediately. Refer to c64://basic/spec for syntax and device I/O.
verify_and_write_memorywritePause → read → verify (optional) → write → read-back → resume. Aborts on mismatch unless override.
versionreadRetrieve firmware or emulator version information.
wait_for_screen_textreadPoll screen until a regex or substring matches, within a timeout.
writewriteWrite a hexadecimal byte sequence into main memory at the specified address. See c64://guide/bootstrap for safety rules.
04

Trust audit

CAUTIONgrade B · trust 86/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (13 observation(s))
Network
declared (6 observation(s))
Shell
declared (4 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (17)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/compare-rest-apis.mjs:25
const REAL_BASE = process.env.C64_REAL_BASE ?? "http://192.168.1.13";
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/mockC64Server.mjs:957
baseUrl: `http://127.0.0.1:${address.port}`,
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/mcp-server.ts:510
console.error(`c64bridge MCP server running on HTTP at http://127.0.0.1:${port}/mcp`);
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
c64_drive, c64_system, config_reset_to_default, drive_remove, drive_reset, program_shuffle, reset_c64, sid_reset
Why it matters. 8 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.binary · CWE-1104
data/sound/examples/Biosphere.sid
Biosphere.sid
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.c8rc.json
.c8rc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.codecov.yml
.codecov.yml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/rag/discover.ts:66
return crypto.createHash('sha1').update(input).digest('hex');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/vice/vice-bm-bench.ts:12
import { ViceClient } from "../../src/vice/viceClient.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/vice/vice-bm-bench.ts:13
import { buildReadyPattern, waitForBasicReady, waitForScreenPattern, asciiToScreenCodes, type TimingSink } from "../../src/vice/readiness.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/mcp/metadata.ts:24
const packageJson = readJsonFile<PackageJsonMetadata>(new URL("../../package.json", import.meta.url));
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/mcp/metadata.ts:25
const manifestJson = readJsonFile<ManifestMetadata>(new URL("../../mcp.json", import.meta.url));
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/tools/meta/artifacts.ts:6
import { getPlatformStatus } from "../../platform.js";
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
doc/troubleshooting-mcp.md:132
curl -s http://192.168.1.13/v1/info
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
test/c64Client.test.mjs:824
const client = new C64Client("http://127.0.0.1:65535");
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
README.md:16
[![Install in Cursor](https://img.shields.io/badge/Install_in-Cursor-000000?style=flat-square&logoColor=white)](https://cursor.com/en/install-mcp?name=io.github.chrisgleissner%2Fc64bridge&config=eyJjb
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, axios, date-fns, fastify, jimp, meyda, octokit, pitchfinder
Why it matters. 14 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha 4b9fb918def5full audit observations/trust-audit/mcp-server/chrisgleissner__c64-bridge.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-084b9fb918def5CAUTIONB86first audit
06

Questions

What is the C64 Bridge MCP server?

MCP server to control and program the Commodore 64 Ultimate, Ultimate 64, Ultimate II, or VICE.

What tools does C64 Bridge expose?

128 in total: 86 read-only, 34 that write, and 8 that can delete or overwrite (c64_drive, c64_system, config_reset_to_default, drive_remove, drive_reset). Every one is listed on this page with its risk.

Is C64 Bridge safe to connect to an agent?

With care. The audit graded it B (86/100) and found 17 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 8 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does C64 Bridge need?

It reads C64U_PASSWORD, GITHUB_TOKEN and U2_PASSWORD from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does C64 Bridge run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as c64bridge at 1.0.4.

How current is this page?

The grade is for one exact copy of the source (4b9fb918def5), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement