coco3
=== There is also a [TypeScript and Lua](https://github.com/dbowlin/CoCo3_MCP_Server/) version ===
# CoCo 3 MCP Server PYTHON
This app lets an assistant use a Tandy Color Computer 3. It runs the CoCo in MAME, so the assistant can type, use disks, and look at the screen.
You need:
- Python 3.10 or newer (`python` on your PATH)
- This repo
- [MAME](https://www.mamedev.org/) (`mame.exe`)
- Your own CoCo 3 ROM (`coco3.zip`)
`decb.exe` is only needed if you want the assistant to build a disk.
## Turn it on
In this folder, run:
```bat
install.cmd
```
That sets the app up and starts it. Leave it running.
After you restart the computer, start it again with:
```bat
coco3-mcp.cmd
```
The assistant starts MAME when you ask it to start the CoCo.
## Use it from any app
Once `coco3-mcp.cmd` is running, any program on this computer can use the CoCo at:
```text
http://127.0.0.1:18766/mcp
```
That address is also saved in `server.json` in this folder, and in your user folder at `.coco3-mcp\server.json`.
Open this in a browser to check that it is on:
```text
http://127.0.0.1:18766/
```
You should see `"ok": true`.
## Add it to an IDE
This works the same way in Cursor, VS Code, Antigravity, Visual Studio, and other editors that support MCP. Open the editor’s MCP (or AI tools) settings and add a server.
If you use Cursor, `install.cmd` already adds it. Reload MCP in Cursor’s settings.
For any other editor, add a server with these three settings:
| Setting | Value |
| -------------- | ---------------- |
| Name | `coco3` |
| Command | `python` |
| Arguments | `-m` `coco3_mcp` |
| Working folder | this folder |
Example:
```json
{
"mcpServers": {
"coco3": {
"command": "python",
"args": ["-m", "coco3_mcp"],
"cwd": "C:\\path\\to\\coco3-mcp"
}
}
}
```
Change `C:\\path\\to\\coco3-mcp` to the real path of this folder. Then reload MCP in the editor and ask it to start the CoCo.
## What you can ask for
- Start or stop the CoCo
- Type on the keyboard
- Mount or eject a disk
- Take a picture of the screen
- Read or change memory
- Save or load a state
- Build a disk (needs `decb.exe`)
## Disclosure
Agentic AI was used in some parts of this code.
## License
[MIT](LICENSE)
TDQS
Scored across 14 tools
Each tool has a clearly distinct emulator operation: lifecycle (start/stop/status), media (mount/unmount/list), memory (read/write), state (load/save), input (type), and disk building. There are no overlapping or indistinguishable tools.
All tools use snake_case with a consistent coco_ prefix, which is highly predictable. A few names deviate slightly from the verb_noun pattern (e.g., coco_status as noun, coco_soft_reset as adjective_noun), but the set remains easy to navigate.
14 tools is well-scoped for controlling a MAME CoCo 3 emulator, covering lifecycle, media, memory, state, input, and disk building without unnecessary bloat. Each tool earns its place.
The surface covers core emulator workflows: start/stop/status, reset, snapshot, type, mount/unmount/list images, read/write memory, load/save state, and build disk. Minor gaps exist, such as no explicit hard reset or pause/resume, but agents can work around them.