AtariHackerMCP
A local MCP server for reverse-engineering Atari 8-bit binaries and ATR disk images.
Requirements
- .NET SDK 10.0+
- Linux, macOS, or Windows
Build
Restore packages and compile:
dotnet build
Publish a release build if needed:
dotnet publish -c Release -o publish
Run
This server uses MCP stdio transport, so it is normally launched by an MCP client rather than run interactively.
For local testing:
dotnet run --no-build
Or run the published executable:
./publish/AtariHackerMCP
MCP Client Configuration
Example stdio server entry:
{
"mcpServers": {
"atari-hacker": {
"command": "dotnet",
"args": [
"run",
"--project",
"/absolute/path/to/AtariHackerMCP/AtariHackerMCP.csproj",
"--no-build"
]
}
}
}
If you prefer using a published build:
{
"mcpServers": {
"atari-hacker": {
"command": "/absolute/path/to/AtariHackerMCP/publish/AtariHackerMCP",
"args": []
}
}
}
Available Tools
File and disk tools
load_romrom_infoatr_infoatr_headerload_atr_fileload_atr_bootlist_atr_directoryanalyze_boot_sectorsector_dumpsearch_boot_sector
Inspection and disassembly
hex_dumpdisassemble
Utility tools
calculatehex_to_decimaldecimal_to_hex
Symbol and zero-page tools
define_symbolremove_symbollookup_symbollist_symbolsannotate_zero_pageshow_zero_page_map
Analysis tools
x_reffind_patternfind_stringstrace_control_flow
Typical Workflow
- Load a file with
load_rom,load_atr_file, orload_atr_boot. - Inspect structure with
rom_infooratr_info. - For ATR disk images: use
atr_headerfor container metadata,list_atr_directoryfor DOS file listings,analyze_boot_sectorto decode the boot header,sector_dumpto inspect raw sectors, andsearch_boot_sectorto compare boot code across images. - Review bytes with
hex_dump. - Decode code with
disassemble. - Add labels with
define_symbolandannotate_zero_page. - Search with
x_ref,find_pattern,find_strings, andtrace_control_flow.
Persistence
User-defined symbols and zero-page annotations are saved automatically to a sidecar JSON file next to the loaded target:
<rom-or-synthetic-path>.atarihacker.json
This file is loaded automatically the next time the same target is opened.
Example MCP Smoke Test
This sends initialize and tools/list directly over stdio:
(
printf '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test-client","version":"1.0"}}}\n'
sleep 0.2
printf '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}\n'
sleep 1
) | dotnet run --no-build
Notes
- Logs are written to stderr so stdout remains clean for MCP JSON-RPC traffic.
- The current build may show a NuGet compatibility warning for
NCalc, but the server builds and runs successfully.