C64 Bridge について
C64 Bridge は、AI クライアントから Commodore 64 の実機と VICE エミュレーターを操作するための MCP サーバーです。C64 Ultimate、Ultimate 64、U2 系カートリッジに対応し、1 つの MCP セッションで実機とエミュレーターを切り替えられます。
主な機能
- 01BASIC、6510 アセンブリ、PRG/CRT プログラムの実行
- 02メモリの読み書きと画面のポーリング
- 03グラフィック描画とサウンド再生のツール
- 04SID 音楽の再生と生成のツール
- 05実行時のハードウェアと VICE バックエンドの切り替え
活用シーン
- 01AI クライアントから実機で C64 プログラムを起動
- 02デバッグ中の C64 メモリの確認と書き込み
- 03VICE エミュレーターでのプログラムの開発とテスト
MCP 対応
本プロジェクトは公式 TypeScript SDK で構築された MCP サーバーで、stdio 経由で MCP クライアントと接続し、C64 の操作機能をグループ化されたツール、リソース、プロンプトとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y c64bridgeLOG_LEVELLogger verbosity.C64BRIDGE_CONFIGPath to the C64 Bridge configuration file.C64_MODEActive backend.C64U_HOSTUltimate 64 host name or IP address.C64U_PORTUltimate 64 REST port.C64U_PASSWORDシークレットUltimate 64 network password sent as X-Password.VICE_BINARYVICE emulator binary to launch.VICE_VISIBLELaunch VICE with a visible window when possible.VICE_WARPEnable VICE warp mode.GITHUB_TOKENシークレットGitHub token for optional RAG discovery against GitHub.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
C64 Bridge

Commodore 64 用の AI コマンドブリッジです。
C64 Bridge は、AI クライアントから Commodore 64 を制御し、操作するための MCP サーバーです。
C64 Ultimate、Ultimate 64、またはU2ファミリーのカートリッジ上で、プログラムの実行、メモリの読み書き、グラフィックスの描画、サウンドの再生ができます。また、VICE エミュレーターのセッションに切り替えることもできるため、1 つの MCP 会話で実機とエミュレーションの両方を扱えます。
公式の TypeScript @modelcontextprotocol/sdk を基盤としており、ローカルの AI 連携向けの stdio と、手動での確認に使えるオプションの HTTP ブリッジの両方をサポートしています。
C64 Bridge は公式 MCP レジストリに掲載されています。
目次
- C64 Bridge
概要
C64 Bridge を使うと、AI エージェントは Commodore 64 環境でのプログラム実行、メモリアクセス、グラフィックス、サウンド、ストレージ、プリンターのワークフロー、ナレッジ検索を一元的に操作できます。
基本的なワークフローはシンプルです。
- MCP サーバーを起動します。
- C64U/U64 ハードウェア、U2 ファミリーのカートリッジ、VICE、または設定済みの組み合わせを指定します。
- クライアントから
c64_program、c64_memory、c64_graphics、c64_soundなど、グループ化された MCP ツールを呼び出します。 - 両方のバックエンドが設定されている場合は、
c64_select_backendを使って実行時に切り替えます。
機能
- BASIC、6510 アセンブリ、PRG または CRT の実行に対応したプログラムランナー
- 生の読み書きや画面のポーリングを含む、完全なメモリアクセス
- ドライブ、ファイル、プリンター、タスクのオーケストレーションを行うシステム連携
- 再生、作曲、生成、検証に対応した SID 音楽ツール
- LLM のワークフローをより安全にする、組み込みのナレッジリソースとプロンプト
c64u(C64U/U64)、u2(U2/U2+/U2+L)、viceの混在した実行環境をサポート
クイックスタート
最短で始めるには、次の 4 つを行います。
- Node.js 24+ と npm をインストールします。
- サーバーを起動します。
- C64U/U64、U2 ファミリー、VICE、または任意の組み合わせのバックエンド設定を追加します。
- VS Code または別の MCP クライアントから接続します。
1. Node.js 24+ と npm をインストールする
Linux(Ubuntu または Debian):
推奨:
sudo apt update
sudo apt install -y curl ca-certificates
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt install -y nodejs
代替手段:
sudo apt install -y nodejs npm
macOS:
brew install node@24
brew link --overwrite node@24
Windows:
# winget
winget install OpenJS.NodeJS.LTS
# or Chocolatey
choco install nodejs-lts -y
インストールを確認します。
node --version
期待される結果:v24.x
2. サーバーを起動する
次のいずれかのエントリーポイントを使用します。
セットアップなしで npx から実行します。
npx -y c64bridge@latest
ローカルの npm インストールから実行します。
mkdir -p ~/c64bridge && cd ~/c64bridge
npm init -y
npm install c64bridge
node ./node_modules/c64bridge/dist/index.js
開発またはテスト用にソースから実行します。
git clone https://github.com/chrisgleissner/c64bridge.git
cd c64bridge
./build install
npm start
起動時に、サーバーは選択したターゲットを確認し、接続チェックを実行した後、stdio で実行中であることを通知します。
3. バックエンド設定を追加する
サーバーは、次のいずれか、または複数を対象に実行できます。
- C64U/U64 ハードウェア(
c64u) - U2、U2+、または U2+L(
u2) - VICE(
vice)
詳細な参照順序、マージルール、バックエンドの例、上書きの仕組みについては、以下の設定セクションをご覧ください。
4. MCP クライアントから接続する
C64 Bridge には、すべての MCP クライアントが使用する、標準の stdio エントリーポイントが 1 つあります。
- VS Code(GitHub Copilot) — VS Code MCP のセットアップをご覧ください。
- Claude Code(CLI および VS Code プラグイン) — Claude Codeをご覧ください。
- Cursor、Visual Studio、VS Code Insiders — この README の上部にあるインストールバッジを使用してください。
- その他の MCP クライアント — 同じ
stdioサーバーを指定し、ランタイム環境変数リファレンスに記載されている環境変数と、mcp.json のレジストリマニフェストを使用してください。
起動コマンドは、どのクライアントでも同じです。公開済みパッケージの場合は npx -y c64bridge@latest、ローカルのチェックアウトから実行する場合は node scripts/start.mjs を使用します。共通の設定で c64u、u2、または vice を選択します。クライアント側で必要なのはコマンドだけです。
設定
設定ファイルの順序
サーバーは次の順序で設定を読み込みます。
- 設定ファイルを指している場合は
C64BRIDGE_CONFIG - プロジェクトのルートにある
.c64bridge.json - ホームディレクトリにある
~/.c64bridge.json
設定のマージルール
設定ファイルを順に確認し、バックエンドセクションごとに設定をマージします。
- 各バックエンドセクション(
c64u、u2、またはvice)を含む最初のファイルが、そのバックエンドの設定を提供します。 - これにより、プロジェクトローカルの
.c64bridge.jsonでc64uを定義し、~/.c64bridge.jsonでu2またはviceを定義できます。
バックエンド設定:C64 Ultimate
C64 Ultimate または Ultimate 64 には、次の設定を使用します。
{
"c64u": {
"host": "c64u",
"port": 80,
"networkPassword": "secret"
}
}
- ファイルが見つからない場合、デフォルトのターゲットは
c64u:80で、ネットワークパスワードは設定されません。 networkPasswordが必要なのは、C64 Ultimate のネットワーク設定でパスワードを有効にした場合のみです。C64U_HOST、C64U_PORT、およびC64U_PASSWORDは、設定済みのホスト、ポート、およびネットワークパスワードを上書きします。
ネイティブ入力とメニュースクリーンのファームウェア要件
次の操作には、最近追加された Ultimate REST エンドポイントが必要です。C64 Bridge は、利用できないエンドポイントを検出するか、その理由を説明します。生のファームウェアエラーが表示されることはありません。
エンドポイントに依存する操作を選ぶ前に、c64://platform/status を読み取ってください。安全に machine:input を調査し、利用可能かどうかを報告します。ネイティブ入力を利用できない場合は、通常の C64 入力には物理マトリクスイベントではなく、key または write_text を使用してください。machine:menu_screen の利用可否を確認できるのは、Ultimate のメニューが表示されている場合に限られます。マトリクスを読み取れない場合、このツールはトランスポートエラーではなく、フォールバックの案内を返します。
c64_inputのkeyboard、release_all、stateと、ハードウェアのjoystickはmachine:inputを使用します。これらには、このエンドポイントに対応する C64U ファームウェア、または U64 ファームウェア 3.15 以降が必要です。machine:inputは U2 ファミリーのカートリッジでは利用できません。c64_systemのread_menu_screenはmachine:menu_screenを使用します。これには、このエンドポイントに対応する C64U ファームウェア、または U64/U2 ファームウェア 3.15 以降が必要です。- C64U/U64 では、
c64_systemのpower_cycleはmachine:menu_screenを使って Tool Menu の移動を確認するため、同じファームウェア要件があります。U2 ファミリーのpower_cycleは、代わりに REST の再起動を使用します。
バックエンド構成:U2 ファミリー
U2、U2+、U2+L カートリッジには、このプロファイルを使用します。
{
"u2": {
"host": "u2",
"port": 80,
"networkPassword": "secret"
}
}
C64_MODE=u2 を設定すると、これが初期バックエンドになります。U2_HOST、U2_PORT、U2_PASSWORD を設定すると、このプロファイルの値が上書きされます。U2 ファミリーのファームウェアでは、共通の REST サブセットが公開されますが、マシン入力、デバッグレジスターへのアクセス、電源オフ、ストリーミングには対応していません。read_menu_screen には U2 ファームウェア 3.15 以降が必要です。
バックエンド構成:VICE
C64 Bridge は、起動済みの VICE Binary Monitor に接続することも、ローカルの VICE プロセスを管理することもできます。通常の管理対象セットアップでは、エミュレーターのバイナリと、自動検出で見つからない場合は VICE リソースディレクトリだけが必要です。
{
"vice": {
"exe": "/usr/bin/x64sc",
"directory": "/usr/local/share/vice"
}
}
exeは、x64scまたはx64がPATH上にある場合は省略できます。明示的なバイナリが設定されていない場合、ランタイムはまず/usr/local/bin/x64scがあればそれを優先し、次にPATH上のx64scまたはx64を使用します。directoryは省略できます。省略した場合、C64 Bridge はエミュレーターのバイナリ付近や一般的なシステム上の場所で標準の C64 ROM セットを探し、VICE リソースディレクトリを自動検出します。hostとportは省略可能で、省略した場合は127.0.0.1:6502が使用されます。これは、C64 Bridge が管理対象のローカルセッション用に起動する Binary Monitor エンドポイントです。ローカルエンドポイントでは、C64 Bridge は自身のプロセスを起動する前に、起動済みのモニターの再利用を試みます。visible、warp、argsは省略可能なランタイム制御設定です。JSON 構成に含めることもできますが、セッションごとの設定であるため、ほとんどのユーザーは MCP クライアントから対応する環境変数を設定します。- デフォルトでは、VICE は初回アクセス時に遅延起動されます。環境変数
VICE_PREWARM=1を設定すると、C64 Bridge は MCP の起動中にバックグラウンドで VICE を起動または接続します。 VICE_BINARY、VICE_DIRECTORY、VICE_HOST、VICE_PORT、VICE_VISIBLE、VICE_WARP、VICE_ARGS、VICE_PREWARMを設定すると、構成ファイルを編集せずに JSON の値を上書きできます。
VICE のウィンドウモード
MCP サーバーの実行場所に応じて、ウィンドウモードを選択します。
| モード | 構成 | 動作 | 使用する場面 |
|---|---|---|---|
| 表示 | VICE_VISIBLE=true | VICE が通常のデスクトップウィンドウを開きます。Warp はデフォルトでオフです。 | ローカルで開発しており、エミュレーターを見たり操作したりしたい場合。 |
| 最小化 | VICE_VISIBLE=true、VICE_ARGS="-minimized" | VICE は通常のデスクトップアプリとして動作しますが、ウィンドウは最小化された状態で起動します。Binary Monitor の操作、画面の読み取り、フレームのキャプチャ、キーボード入力は引き続き機能します。 | ローカルでエージェントを使用しており、エミュレーターにフォーカスを奪われたくないものの、必要に応じてウィンドウを復元したい場合。 |
| ヘッドレス/Xvfb | VICE_VISIBLE=false | C64 Bridge は、無効にされていない限り Xvfb を使用して、ユーザーが操作するデスクトップウィンドウなしで VICE を起動します。Warp はデフォルトでオンです。 | CI、無人テスト、サーバー、またはエミュレーターのウィンドウを確認する必要がないセッション。 |
最小化とヘッドレスは同じではありません。最小化は、実際の VICE ウィンドウを備えた、表示可能なデスクトップセッションです。起動時にウィンドウマネージャーによって非表示にされるだけです。ヘッドレス/Xvfb にはユーザーが操作するウィンドウがないため、自動化には適していますが、エミュレーターを目で見てデバッグする場合には不便です。
通常のローカル MCP 利用では、VICE の最小化を推奨します。フォーカスを奪うことなく、目視確認が必要なときにウィンドウを復元できます。CI やリモート環境、ディスプレイのない環境では、ヘッドレス/Xvfb を推奨します。
FORCE_XVFB=1 を設定すると、グラフィカルセッションが利用可能な場合でも Xvfb が強制されます。DISABLE_XVFB=1 を設定すると、このフォールバックが無効になり、現在のディスプレイが使用されます。これは主にディスプレイ検出のトラブルシューティングに役立ちます。
推奨される VICE の設定
ローカルのエージェントセッションで、VICE を最小化して起動する場合:
{
"servers": {
"c64bridge": {
"command": "npx",
"args": ["-y", "c64bridge@latest"],
"env": {
"C64_MODE": "vice",
"VICE_VISIBLE": "true",
"VICE_ARGS": "-minimized",
"VICE_WARP": "false"
}
}
}
}
ヘッドレス自動化で、デスクトップウィンドウを表示せずに VICE を実行する場合:
{
"servers": {
"c64bridge": {
"command": "npx",
"args": ["-y", "c64bridge@latest"],
"env": {
"C64_MODE": "vice",
"VICE_VISIBLE": "false",
"VICE_WARP": "true"
}
}
}
}
VICE が通常の検索パス以外にインストールされている場合は、どちらかの例に VICE_BINARY を追加してください。ROM/リソースの自動検出に失敗する場合は、VICE_DIRECTORY も追加してください。
メモ
VICE は、MCP API リファレンスで VICE のチェックマークが付いた操作のみをサポートします。サポートされていない操作は
unsupported_platformを返します。
ランタイムバックエンドの切り替え
c64u、u2、vice は任意の組み合わせで設定できます。C64 Bridge は C64_MODE(デフォルトは c64u)で起動し、c64_select_backend で選択できるよう、設定済みのすべてのバックエンドを使用可能な状態に保ちます。
| プロファイル | 対象 | 主な制限 |
|---|---|---|
c64u | C64 Ultimate、Ultimate 64 | マシン入力やストリーミングを含む、Ultimate REST API の全機能を利用できます。 |
u2 | U2、U2+、U2+L | 共通の REST サブセットを利用できます。マシン入力、デバッグレジスタ、電源オフ、ストリーミングには対応していません。 |
vice | VICE エミュレーター | Binary Monitor ベースのエミュレーター制御に対応します。Ultimate REST API は利用できません。 |
c64://platform/status を使って、アクティブなバックエンドと利用可能なツールを確認できます。同じプロンプト内で対象を指定してください。例:u2: list drives、c64u: run this PRG、vice: write HELLO。U2 ファミリーのカートリッジでは、c64_system の power_cycle は REST による再起動を使用します。C64U/U64 では、検証済みの Tool Menu 操作を使用し、VICE は新規起動します。
プロンプトの例(GPT 5.4 Medium を使用し、VS Code の Copilot から実行):
c64u: write a small BASIC program that clears the screen and prints HELLO C64U
vice: write a small BASIC program that clears the screen and prints HELLO VICE
以下のスクリーンショットは、フレームキャプチャに対応する 2 つのバックエンドで利用できます。C64U は動画フレームをストリーミングし、VICE は画面をキャプチャして正規化します。U2 ファミリーのカートリッジはファームウェアストリーミングに対応していないため、スクリーンショットの行はありません。
| バックエンド | スクリーンショット |
|---|---|
| C64 Ultimate | ![]() |
| U2 ファミリー | フレームキャプチャは利用できません(ファームウェアストリーミングには非対応)。 |
| VICE | ![]() |
VS Code MCP のセットアップ
このセクションでは、VS Code に付属する GitHub Copilot の連携について説明します。Claude Code の VS Code プラグインについては、Claude Code を参照してください。こちらは .vscode/mcp.json ではなく .mcp.json を読み込みます。
このリポジトリをローカルにチェックアウトしている場合は、用意されている .vscode/mcp.json を開いてください。
それ以外の場合は、以下の内容を独自の .vscode/mcp.json に記述してください。
{
"servers": {
"c64bridge": {
"command": "npx",
"args": [
"-y",
"c64bridge@latest"
]
}
}
}
次に、c64bridge の項目の上に表示される開始ボタンをクリックします。
MCP サーバーが起動します。

詳細については、公式の VS Code MCP サーバーのドキュメントを参照してください。
C64 エージェントを有効にする
サーバーの起動後、VS Code で C64 エージェントに切り替えてください。
このエージェントは Commodore 64 の作業向けにあらかじめ設定されています。Copilot が、BASIC、6502 アセンブリ、SID オーディオ、VIC-II グラフィックス、メモリの調査、ディスク操作、印刷、ストリーミング、デバイス制御に関する c64bridge のワークフローを優先するように誘導します。

オプションのオーバーライド
.vscode/mcp.json に env エントリを追加すると、設定ファイルの選択、C64 Ultimate の接続情報の上書き、初期バックエンドの強制指定ができます。
{
"servers": {
"c64bridge": {
"command": "npx",
"args": [
"-y",
"c64bridge@latest"
],
"env": {
"C64BRIDGE_CONFIG": "/home/you/.c64bridge.json",
"C64U_HOST": "192.168.1.99",
"C64U_PORT": "80",
"C64U_PASSWORD": "secret",
"C64_MODE": "c64u",
"LOG_LEVEL": "debug"
}
}
}
}
C64BRIDGE_CONFIGは特定の設定ファイルを指定します。C64U_HOST、C64U_PORT、C64U_PASSWORDは、設定ファイルを編集せずに C64 Ultimate の接続情報を上書きします。C64_MODEは初期バックエンドをc64u、u2、viceのいずれかに固定します。U2_HOST、U2_PORT、U2_PASSWORDは、選択した U2 プロファイルの接続情報を上書きします。LOG_LEVEL=debugは詳細なログを有効にします。
VICE_ARGS=-minimized、VICE_VISIBLE=false、カスタム VICE パスなど、VICE 固有のオーバーライドについては、バックエンドの設定:VICEのパターンを使用してください。
MCP クライアント設定の環境変数
ルートの mcp.json に記載されているすべてのランタイム環境変数は、servers.c64bridge.env 配下の .vscode/mcp.json を含め、MCP クライアント設定から指定できます。
環境変数が JSON 設定フィールドに対応する場合、上書きの優先順位は常に次のとおりです。
- MCP クライアント設定またはシェルで明示的に指定された環境変数
C64BRIDGE_CONFIG、リポジトリの.c64bridge.json、~/.c64bridge.jsonの順に読み込まれた JSON 設定セクションをマージしたもの- サーバーに組み込まれたデフォルト値
環境変数に対応する JSON 設定がない場合、優先順位は次のとおりです。
- MCP クライアント設定またはシェルで明示的に指定された環境変数
- デフォルト値
このルールは、以下に記載するすべてのランタイム環境変数に一律に適用されます。
例:最小化した VICE を特定の ROM またはリソースディレクトリで起動し、さらに実行時にすぐ選択できるハードウェアのフォールバックを指定します。
{
"servers": {
"c64bridge": {
"command": "node",
"args": ["${workspaceFolder}/scripts/start.mjs"],
"type": "stdio",
"env": {
"C64_MODE": "vice",
"C64U_HOST": "c64u",
"C64U_PORT": "80",
"VICE_BINARY": "/usr/local/bin/x64sc",
"VICE_DIRECTORY": "/usr/local/share/vice",
"VICE_VISIBLE": "true",
"VICE_ARGS": "-minimized",
"VICE_WARP": "false"
}
}
}
}
例:バックエンドのエンドポイントには JSON 設定ファイルを使いながら、診断、ポーリング、RAG の動作を VS Code から上書きします。
{
"servers": {
"c64bridge": {
"command": "node",
"args": ["${workspaceFolder}/scripts/start.mjs"],
"type": "stdio",
"env": {
"C64BRIDGE_CONFIG": "/home/you/.c64bridge.json",
"LOG_LEVEL": "debug",
"C64BRIDGE_POLL_MAX_MS": "8000",
"C64BRIDGE_POLL_INTERVAL_MS": "200",
"RAG_BUILD_ON_START": "1",
"RAG_EMBEDDINGS_DIR": "/home/you/c64bridge-data"
}
}
}
}
ランタイム環境変数リファレンス
mcp.json に記載されているすべてのランタイム環境変数は、servers.c64bridge.env 配下の .vscode/mcp.json を含め、MCP クライアント設定で指定できます。
サーバーのランタイム
| 変数 | デフォルト | JSON 設定キー | 説明 |
|---|---|---|---|
C64_MODE | c64u | — | アクティブなバックエンドを選択します(c64u/U64 ハードウェア、u2/U2 ファミリーのカートリッジ、または vice エミュレーター) |
C64_TASK_STATE_FILE | auto | — | MCP バックグラウンドタスクの状態を永続化するパスを上書きします |
C64BRIDGE_CONFIG | ~/.c64bridge.json | 設定パス | 設定 JSON へのパス |
C64BRIDGE_DIAGNOSTICS_DIR | ~/.c64bridge/diagnostics | — | MCP の診断ファイルを永続的に書き込むディレクトリを上書きします |
C64BRIDGE_DISABLE_DIAGNOSTICS | 0 | — | 1 に設定すると、診断ログの永続化を無効にします |
C64BRIDGE_POLL_INTERVAL_MS | 200 | — | 通常のランタイムモードでプログラム出力を検証する際に、画面をポーリングする間隔 |
C64BRIDGE_POLL_MAX_MS | 2000 | — | 通常のランタイムモードでプログラム出力を検証する際に、タイムアウトまでポーリングする最大時間 |
C64BRIDGE_POLL_STABILIZE_MS | 100 | — | ポーリングが正常に一致した後、出力が安定したとみなすまでの追加待機時間 |
LOG_LEVEL | info | — | ロガーの詳細度(debug、info、warn、error) |
C64 Ultimate
| 変数 | デフォルト | JSON 設定キー | 説明 |
|---|---|---|---|
C64U_HOST | c64u | c64u.host | C64 Ultimate のホスト名または IP アドレスを上書きします |
C64U_PASSWORD | c64u.networkPassword | X-Password として送信する C64 Ultimate のネットワークパスワードを上書きします | |
C64U_PORT | 80 | c64u.port | C64 Ultimate の REST ポートを上書きします |
U2 ファミリー
| 変数 | デフォルト | JSON 設定キー | 説明 |
|---|---|---|---|
U2_HOST | u2.host | C64_MODE=u2 の場合に、U2/U2+/U2+L のホスト名または IP アドレスを上書きします | |
U2_PASSWORD | u2.networkPassword | C64_MODE=u2 の場合に、X-Password として送信する U2 ファミリーのネットワークパスワードを上書きします | |
U2_PORT | u2.port | C64_MODE=u2 の場合に、U2 ファミリーの REST ポートを上書きします |
VICE ランタイム
| 変数 | デフォルト | JSON 設定キー | 説明 |
|---|---|---|---|
DISABLE_XVFB | 0 | — | 1 に設定すると、Xvfb へのフォールバックを無効にして、現在のディスプレイのみを使用します |
FORCE_XVFB | 0 | — | 1 に設定すると、グラフィカルセッションが検出されている場合でも、管理対象の VICE 起動で Xvfb を強制的に使用します |
VICE_ARGS | vice.args | 管理対象の VICE 起動に渡す追加のコマンドライン引数です。たとえば、ウィンドウを表示したままアイコン化して起動する -minimized などです | |
VICE_BINARY | x64sc | vice.exe | 管理対象のエミュレーターセッションと音声キャプチャで起動する VICE バイナリーです。この設定が未指定または無効な場合にのみ、自動検索が使用されます |
VICE_DIRECTORY | 自動検出 | vice.directory | ROM と UI アセットの検出に使用する VICE リソースディレクトリを指定します。この設定が未指定または無効な場合にのみ、自動検索が使用されます |
VICE_HOST | 127.0.0.1 | vice.host | VICE バイナリーモニターのホストを指定します |
VICE_PORT | 6502 | vice.port | VICE バイナリーモニターのポートを指定します |
VICE_PREWARM | 0 | vice.prewarm | 1 に設定すると、MCP の起動中にバックグラウンドで VICE を起動して接続します。デフォルトでは無効になっており、初回使用時に VICE が遅延起動します |
VICE_VISIBLE | true | vice.visible | true の場合、VICE をデスクトップウィンドウとして起動します。false の場合、ヘッドレス/Xvfb による管理起動を使用します |
VICE_WARP | 可視時は false、ヘッドレス時は true | vice.warp | 管理対象の VICE セッションでワープモードを有効にします |
VICE_XVFB_DISPLAY | :99 | — | 管理対象の VICE を Xvfb で起動する際に使用するディスプレイ番号です |
VICE 音声キャプチャ
| 変数 | デフォルト | JSON 設定キー | 説明 |
|---|---|---|---|
VICE_LIMIT_CYCLES | 120000000 | — | VICE が音声を生成する際にレンダリングする CPU サイクルの最大数です |
VICE_MODE | ntsc | — | VICE の音声キャプチャで使用するデフォルトの映像規格です(ntsc|pal) |
VICE_RUN_TIMEOUT_MS | 10000 | — | ヘッドレス VICE の実行タイムアウト(ミリ秒)です |
SID 再生
| 変数 | デフォルト | JSON 設定キー | 説明 |
|---|---|---|---|
SIDPLAY_BINARY | sidplayfp | — | 音声生成時に起動する sidplayfp バイナリーです |
SIDPLAY_LIMIT_CYCLES | 120000000 | — | sidplayfp が音声を生成する際にレンダリングする CPU サイクルの最大数です |
SIDPLAY_MODE | ntsc | — | デフォルトの SID 再生モードです(ntsc|pal) |
SIDPLAYFP_BINARY | — | SIDPLAY_BINARY の旧式の別名です(sidplayfp 実行ファイル名) |
RAG
| 変数 | デフォルト | JSON 設定キー | 説明 |
|---|---|---|---|
GITHUB_TOKEN | — | GitHub での任意の RAG 検出に使用する個人アクセストークンです | |
RAG_BUILD_ON_START | 0 | — | 1 に設定すると、サーバー起動時に埋め込みを再構築します |
RAG_DISCOVER_FORCE_REFRESH | 0 | — | 1 に設定すると、外部ドキュメントの取得時にキャッシュされた検出結果を無視します |
RAG_DOC_FILES | — | RAG に含める追加ドキュメントをカンマ区切りで指定します | |
RAG_EMBEDDINGS_DIR | data | — | RAG の埋め込み JSON ファイルを格納するディレクトリです |
RAG_REINDEX_INTERVAL_MS | 0 | — | 定期的な再インデックスの間隔(ミリ秒)です(0 で無効) |
テスト
| 変数 | デフォルト | JSON 設定キー | 説明 |
|---|---|---|---|
C64_TEST_TARGET | — | 統合テストの接続先として、モックまたは実機を指定します(mock|real) |
Claude Code
Claude Code は、第一級の MCP クライアントとしてサポートされています。他のすべてのクライアントと同じ標準の起動コマンド、バックエンドの Configuration ファイル、環境変数を使用し、異なるのは検出ファイルのみです。
Claude Code CLI — 公開済みのサーバーを、次の 1 つのコマンドで登録します。
claude mcp add c64bridge -- npx -y c64bridge@latest
すべてのプロジェクトで使用できるようにするには --scope user を指定するか、現在のリポジトリの隣に .mcp.json を作成するには --scope project を指定します。バックエンドの選択(c64u、u2、または vice)、ホスト、ポート、パスワードには、Configuration で説明しているものと同じファイルが使用されます。シェルごとのオーバーライドには、Runtime Environment Variable Reference に記載された変数を使用します。
プロジェクトスコープの検出 — このリポジトリには、node scripts/start.mjs を介して Claude Code をローカルソースに接続する、チェックイン済みの .mcp.json が含まれています。claude(CLI または VS Code プラグイン)でリポジトリを開くと、初回起動時に Claude Code がプロジェクトスコープのサーバーを有効にするよう求めます。一度承認すると、そのワークスペースで c64_* ツールを検出できるようになります。
Claude Code VS Code プラグイン — プラグインは CLI と同じ .mcp.json と、ユーザースコープの claude mcp add 登録を読み込みます。プラグインをインストールし、プロジェクトサーバーの確認を承認すれば、追加の設定は必要ありません。既存の .vscode/mcp.json は GitHub Copilot が読み込むものであり、Claude Code は読み込みません。対象とするクライアントと設定スキーマが異なるため、2 つのファイルは競合せずに共存します。
動作を確認する — 登録後、claude mcp list(CLI)を実行するか、MCP パネル(プラグイン)を開き、c64bridge を探します。次に、Claude Code に 「vice を使って、画面をクリアして HELLO CLAUDE と表示する小さな BASIC プログラムを書いて」 のように頼みます。Claude Code が c64_select_backend と c64_program を直接呼び出せば成功です。ツールが表示されない場合は、Node 24+ が PATH に含まれていること、要求されたスコープでサーバーが承認されていること、Configuration のセクションに従ってバックエンドに接続できることを確認してください。
ワークフローの例
ChatGPT と VS Code を使って子ども向けの歌を作成します。

次に、歌に合わせた PETSCII アートを描画します。

これは、想定されるワークフローの一例です。
- MCP クライアントに、C64 向けのコンテンツの生成または改善を依頼します。
c64_program、c64_graphics、c64_soundなどのグループ化されたツールを使って実行します。- 画面の読み取り、フレームのキャプチャ、メモリの検査、または音声の分析を通じて結果を確認します。
HTTP 呼び出し
- 推奨されるトランスポートは
stdioです。 - HTTP ブリッジはデフォルトで無効になっており、手動テストのみを想定しています。
- 以下の curl コマンドは、HTTP 経由でグループ化された MCP 呼び出しをどのように行うかを示す例です。
# Upload and run BASIC
curl -s -X POST -H 'Content-Type: application/json' \
-d '{"op":"upload_run_basic","program":"10 PRINT \"HELLO\"\n20 GOTO 10"}' \
http://localhost:8000/tools/c64_program | jq
# Read current screen (PETSCII→ASCII)
curl -s -X POST -H 'Content-Type: application/json' \
-d '{"op":"read_screen"}' \
http://localhost:8000/tools/c64_memory | jq
# Reset the machine
curl -s -X POST -H 'Content-Type: application/json' \
-d '{"op":"reset"}' \
http://localhost:8000/tools/c64_system
ビルドとテスト
プロジェクトルートにある ./build スクリプトは、開発タスクをすべて、自己文書化された単一のインターフェースで実行できるようにします。
./build --help # full command reference
./build # install + build + test matrix (full CI run)
./build --skip-tests # install + build only
./build build # TypeScript compile + doc generation
./build test # integration tests (mock backend)
./build test --real # test against real hardware
./build test --platform vice --target mock # single test leg
./build test:matrix # full matrix (c64u/mock · vice/mock · vice/device)
./build coverage # merged coverage report
./build coverage:single --platform c64u --target mock
./build check # build + test matrix (no install)
./build rag:rebuild # rebuild RAG embeddings
./build release --version 1.2.3 # prepare a release
MCP サーバーの起動は
./buildでは管理されません。上記のクイックスタートのセクションにあるように、(ソースから起動する場合は)npm start、または(公開パッケージを使用する場合は)npx -y c64bridge@latestを使用してください。
ドキュメント
- DeepWiki - アーキテクチャと実装の概要
- doc/developer.md - 開発ワークフローと RAG の詳細
- data/context/bootstrap.md - プロンプトの前に挿入される入門資料
- doc/c64u/c64-openapi.yaml - REST インターフェース(OpenAPI 3.1)
- AGENTS.md - LLM 向けのクイックセットアップ、使用方法、ペルソナ
静的 MCP インターフェース
このリポジトリには、MCP サーバーインターフェースを自動生成した静的なミラーが ./mcp フォルダーに含まれています。
これにより、エージェントはサーバーに接続せずに、利用可能なツール、リソース、プロンプト、スキーマを確認できます。
MCP API リファレンス
この MCP サーバーは、Commodore 64 を制御するための 17 個のツール、27 個のリソース、10 個のプロンプトを公開します。
ツール
アドレス範囲の表記規則:address + length は開始アドレスとバイト数を表し、startAddress + endAddress は両端を含む範囲を表します。
c64_batch
複数の c64bridge ツール呼び出しを 1 回のリクエストで実行します。複数ステップのワークフローでレイテンシを低減します。
操作は定義されていません。
c64_config
設定の読み取り/書き込み、診断、スナップショットのための統合エントリーポイントです。
| 操作 | 説明 | 必須入力 | 任意入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
batch_update | 複数の設定更新を 1 回のリクエストで適用します。 | — | — | ✅ | ✅ | ✅ |
diff | 現在の設定とスナップショットを比較します。 | path | — | ✅ | ✅ | ✅ |
get | 設定カテゴリーまたは特定の項目を読み取ります。 | category | item | ✅ | ✅ | ✅ |
info | Ultimate ハードウェアの情報と状態を取得します。 | — | — | ✅ | ✅ | ✅ |
list | ファームウェアが報告する設定カテゴリーを一覧表示します。 | — | — | ✅ | ✅ | ✅ |
load_flash | フラッシュストレージから設定を読み込みます。 | — | — | ✅ | ✅ | |
read_debugreg | Ultimate デバッグレジスター($D7FF)を読み取ります。 | — | — | ✅ | ||
reset_defaults | ファームウェアの設定を工場出荷時のデフォルトにリセットします。 | — | — | ✅ | ✅ | |
restore | スナップショットファイルから設定を復元します。 | path | applyToFlash=false | ✅ | ✅ | ✅ |
save_flash | 現在の設定をフラッシュストレージに保存します。 | — | — | ✅ | ✅ | |
set | 選択したカテゴリーの設定値を書き込みます。 | category, item, value | — | ✅ | ✅ | ✅ |
shuffle | PRG/CRT ファイルを検出し、オプションで画面をキャプチャしながら各ファイルを実行します。 | — | root="/", extensions=["prg","crt"], durationMs=5000, captureScreen=true, maxPrograms=10, outputPath, resetDelayMs=100 | ✅ | ✅ | |
snapshot | 後で復元または差分比較できるよう、設定のスナップショットをディスクに保存します。 | path | — | ✅ | ✅ | ✅ |
version | ファームウェアのバージョン詳細を取得します。 | — | — | ✅ | ✅ | ✅ |
write_debugreg | 16 進数値を Ultimate デバッグレジスター($D7FF)に書き込みます。 | value | — | ✅ |
c64_debug
VICE デバッガー操作(ブレークポイント、レジスター、ステップ実行)のための統合エントリーポイントです。
| 操作 | 説明 | 必須入力 | 任意入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
continue_execution | Binary Monitor を終了し、CPU の実行を再開します(BM 0xAA Exit)。 | — | — | ✅ | ||
create_checkpoint | VICE に新しいチェックポイント(ブレークポイント)を作成します。 | address | endAddress, stopOnHit=true, enabled=true, temporary=false, label, operations, memspace | ✅ | ||
delete_checkpoint | ID を指定してチェックポイントを削除します。 | id | — | ✅ | ||
get_checkpoint | ID を指定して単一のチェックポイントを取得します。 | id | — | ✅ | ||
get_monitor_state | CPU レジスターを読み取り、現在のモニター状態を返します。 | — | memspace | ✅ | ||
get_registers | レジスター値を読み取ります。名前または ID で絞り込むこともできます。 | — | memspace, registers | ✅ | ||
list_checkpoints | 有効な VICE チェックポイント(ブレークポイント)をすべて一覧表示します。 | — | — | ✅ | ||
list_registers | 使用可能なレジスターを一覧表示します(メタデータ)。 | — | memspace | ✅ | ||
nuclear_reset | VICE プロセスを終了して再起動します(管理対象のインスタンスのみ)。 | — | — | ✅ | ||
set_condition | チェックポイントに条件式を設定します。 | id, expression | — | ✅ | ||
set_registers | レジスター値を書き込みます。 | writes | memspace | ✅ | ||
step | CPU を 1 ステップ実行します。 | — | count=1, mode | ✅ | ||
step_return | 現在のルーチンが戻るまで実行を続けます。 | — | — | ✅ | ||
toggle_checkpoint | ID を指定してチェックポイントを有効または無効にします。 | id, enabled | — | ✅ | ||
wait_for_state | PC が expectedPC と一致するか、タイムアウトするまで CPU レジスターをポーリングします。 | — | expectedPC, timeoutMs=5000, pollMs=100 | ✅ |
c64_disk
ディスクのマウント、一覧表示、イメージの作成、プログラムの検出を行うためのグループ化されたエントリーポイントです。
| 操作 | 説明 | 必須の入力 | 任意の入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
create_image | 指定した形式の空のディスクイメージを作成します。 | format、path | diskname、tracks | ✅ | ✅ | |
file_info | Ultimate ファイルシステム上のファイルのメタデータを確認します。 | path | — | ✅ | ✅ | |
find_and_run | 名前の部分文字列で PRG/CRT を検索し、最初に一致したものを実行します。 | nameContains | root="/"、extensions、caseInsensitive=true、sort="discovered"、waitMs=0、captureCandidates=10 | ✅ | ✅ | |
list_drives | Ultimate のドライブスロットと、マウントされているイメージを一覧表示します。 | — | — | ✅ | ✅ | ✅ |
mount | 検証と再試行のオプションを指定してディスクイメージをマウントします。検証に対応しています。 | drive、image | type、attachmentMode、driveMode、verify=false、powerOnIfNeeded=true、resetAfterMount=true、maxRetries=2、retryDelayMs=500 | ✅ | ✅ | ✅ |
unmount | Ultimate のドライブスロットからマウント済みイメージを取り外します。 | drive | — | ✅ | ✅ |
c64_drive
ドライブの電源、モード、リセット、ROM 操作を行うためのグループ化されたエントリーポイントです。
| 操作 | 説明 | 必須の入力 | 任意の入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
load_rom | カスタム ROM を Ultimate のドライブスロットに一時的に読み込みます。 | drive、path | — | ✅ | ✅ | |
power_off | 指定した Ultimate のドライブスロットの電源を切ります。 | drive | — | ✅ | ✅ | ✅ |
power_on | 指定した Ultimate のドライブスロットの電源を入れます。 | drive | — | ✅ | ✅ | ✅ |
reset | 選択したドライブスロットに IEC リセットを実行します。 | drive | — | ✅ | ✅ | ✅ |
set_mode | ドライブスロットのエミュレーションモード(1541/1571/1581)を設定します。 | drive、mode | — | ✅ | ✅ | ✅ |
c64_extract
スプライト/文字セットの抽出、メモリダンプ、ファイルシステム統計、ファームウェアの健全性チェックを行うためのグループ化されたエントリーポイントです。
| 操作 | 説明 | 必須の入力 | 任意の入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
charset | RAM 内の 2KB 文字セットを検出して抽出します。 | — | address、scanRange="common"、outputPath、pauseDuringRead=true、minNonEmptyChars=32、minEntropy=0.3 | ✅ | ✅ | ✅ |
firmware_health | ファームウェアの準備状況をチェックし、ステータス指標を報告します。 | — | — | ✅ | ✅ | ✅ |
fs_stats | ファイルシステムを走査し、拡張子ごとに件数とバイト数を集計します。 | — | root="/"、extensions、includeContainers=true、maxSamplesPerExtension=3 | ✅ | ✅ | |
memory_dump | RAM の範囲を、マニフェストメタデータとともに 16 進数またはバイナリファイルにダンプします。 | address、length、outputPath | format="hex"、chunkSize=512、pauseDuringRead=true、retries=1 | ✅ | ✅ | ✅ |
sprites | RAM を走査してスプライトを検出し、オプションで .spr ファイルにエクスポートします。 | address、length | stride=64、maxSprites=16、minNonZeroRows=4、minSetBits=12、includeBase64=true、outputDir、pauseDuringRead=true | ✅ | ✅ | ✅ |
c64_graphics
フレームのキャプチャとグラフィックス描画のワークフローをまとめたエントリーポイントです。
| 操作 | 説明 | 必須入力 | 任意入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
capture_frame | アクティブなバックエンドから、1つ以上の完全なビデオフレームをキャプチャします。 | — | count=1、includePixels=true、encoding="base64" | ✅ | ✅ | |
get_display_state | VIC-II および CIA2 のレジスターを読み取り、現在のグラフィックスモードとメモリレイアウトを特定します。C64U/U64、U2 ファミリーのハードウェア、VICE では同じ共有メモリーパスを使用するため、レスポンスの形式は同一です。 | — | — | ✅ | ✅ | ✅ |
render_bitmap | 画像ファイルを読み込み、VIC-II ビットマップメモリー形式に変換して RAM に書き込み、表示します。 | imagePath、format | bitmapAddress=8192、screenAddress=1024、borderColor=0、backgroundColor=0、preserveAspect=true | ✅ | ✅ | ✅ |
render_petscii_art | プロンプト、テキスト、または明示的なビットマップデータから PETSCII アートを作成し、必要に応じて C64 に表示します。 | — | prompt、text、maxWidth、maxHeight、borderColor、backgroundColor、foregroundColor、dryRun=false、bitmap | ✅ | ✅ | ✅ |
render_petscii_text | オプションの枠線色と背景色を指定して、PETSCII テキストを表示します。 | text | borderColor、backgroundColor | ✅ | ✅ | ✅ |
render_sprite | 指定された63バイトのスプライトデータをメモリーに書き込み、VIC-II レジスターを直接パッチして、指定位置と色で表示します。 | sprite | index=0、x=100、y=100、color=1、multicolour=false | ✅ | ✅ | ✅ |
c64_input
クロスプラットフォームの PETSCII 入力に加え、ネイティブの Ultimate キーボードおよびジョイスティックイベントに対応します。
| 操作 | 説明 | 必須入力 | 任意入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
joystick | ジョイスティック入力をシミュレートします。C64U/U64 では machine:input を使用します。VICE では、押している間、VICE の I/O シミュレーション joyport デバイスを接続します。このデバイスは CIA のライン5~7も Low にするため、ポート1では偽のキー入力(例:SHIFT+C=)が発生し、ポート2では上方向の値として $7E ではなく $1E が読み取られます。VICE ではポート2を優先し、ビット0~4をテストしてください。 | port、controls、action | durationMs=80 | ✅ | ✅ | |
key | 1つのキーを押すか、指定した時間だけ押し続けます。 | key | durationMs=0、count=1 | ✅ | ✅ | ✅ |
keyboard | machine:input を通じて、物理 C64 キーボードのマトリックスイベントを送信します(対応する C64U ファームウェアバージョン、または U64 3.15 以降が必要です)。 | inputs、transition | — | ✅ | ||
release_all | machine:input を通じて入力されたすべてのキーとジョイスティック操作を解除します(対応する C64U ファームウェアバージョン、または U64 3.15 以降が必要です)。 | — | — | ✅ | ||
state | machine:input を通じて押されているキーとジョイスティック操作を読み取ります(対応する C64U ファームウェアバージョン、または U64 3.15 以降が必要です)。 | — | — | ✅ | ||
write_text | PETSCII トークンを展開して、テキスト文字列をキーボードバッファーに送信します。 | text | delayMs=0 | ✅ | ✅ | ✅ |
c64_memory
メモリの読み書き、画面の読み取り、画面のポーリングをまとめたエントリーポイントです。
| 操作 | 説明 | 必須入力 | 任意入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
compare_memory | 2つのメモリ領域をバイト単位で比較し、差異を報告します。 | address1, address2, length | maxDiffs=10 | ✅ | ✅ | ✅ |
copy_memory | RAM 領域を別のアドレスにコピーします。 | source, dest, length | — | ✅ | ✅ | ✅ |
disassemble | メモリ領域を、非公式オペコードを正式名称とともに含む注釈付きの 6502/6510 命令に逆アセンブルします。利用可能な場合は、.vs ファイルのシンボル注釈が適用されます。C64U/U64、U2 ファミリーのハードウェア、VICE で動作します。 | address | length=64, instructionCount | ✅ | ✅ | ✅ |
fill_memory | メモリ範囲を繰り返しのバイトパターンで埋めます。 | address, length, pattern | — | ✅ | ✅ | ✅ |
read | バイト範囲を読み取り、アドレス情報付きのヘックスダンプを返します。 | address | length=256 | ✅ | ✅ | ✅ |
read_screen | 現在の 40x25 テキスト画面を ASCII に変換して返します。 | — | — | ✅ | ✅ | ✅ |
save_memory | メモリ範囲をローカルファイルにダンプします。オプションで PRG ロードアドレスヘッダーを付加できます。 | startAddress, endAddress, filePath | asPrg=true | ✅ | ✅ | ✅ |
search_memory | メモリ範囲内でバイトパターンを検索し、一致するアドレスを返します。 | startAddress, endAddress, pattern | maxResults=10 | ✅ | ✅ | ✅ |
wait_for_text | 部分文字列または正規表現が画面に表示されるか、タイムアウトするまで画面をポーリングします。 | pattern | isRegex=false, caseInsensitive=true, timeoutMs=3000, intervalMs=100 | ✅ | ✅ | ✅ |
write | 16 進数のバイト列を RAM に書き込みます。検証に対応しています。 | address, bytes | verify=false, expected, mask, abortOnMismatch=true | ✅ | ✅ | ✅ |
c64_printer
Commodore および Epson の印刷ヘルパーをまとめたエントリーポイントです。
| 操作 | 説明 | 必須入力 | 任意入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
define_chars | カスタムプリンター文字を定義します(Commodore DLL モード)。 | firstChar, chars | secondaryAddress | ✅ | ✅ | |
print_bitmap | Commodore(BIM)または Epson ESC/P のワークフローでビットマップの行を印刷します。 | printer="commodore", columns | repeats, useSubRepeat, secondaryAddress, ensureMsb=true, mode, density, timesPerLine | ✅ | ✅ | |
print_text | デバイス 4 にテキストを印刷する BASIC を生成します。 | text | target="commodore", secondaryAddress, formFeed=false | ✅ | ✅ |
c64_program
プログラムのアップロード、実行、バッチ処理のためのグループ化されたエントリーポイントです。
| 操作 | 説明 | 必須入力 | 任意の入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
batch_run | 複数の PRG/CRT プログラムを実行し、実行後のアサーションを行います。 | programs | continueOnError=false, durationMs=2000, outputPath, resetDelayMs=100 | ✅ | ✅ | ✅ |
bundle_run | 画面、メモリ、デバッグレジスターをアーティファクトバンドルにキャプチャします。 | runId, outputPath | captureScreen=true, memoryRanges, captureDebugReg | ✅ | ✅ | ✅ |
cross_platform_greeting | 1 つ以上の設定済みバックエンドで、プラットフォームに合わせた挨拶を表示し、スクリーンショットをキャプチャして、結果を検証します。検証に対応しています。 | — | platforms, messageTemplate="HAVE A GREAT DAY, {PLATFORM}!", verify=true, captureScreenshot=true, outputPath, restoreActiveBackend=true, timeoutMs=1500, pollIntervalMs=100 | ✅ | ✅ | ✅ |
load_prg | Ultimate ストレージから PRG を読み込みますが、実行はしません。 | path | symbolsFile | ✅ | ✅ | |
run_crt | CRT カートリッジイメージをマウントして実行します。 | path | — | ✅ | ✅ | |
run_prg | C64U/U64 または U2 ファミリーのハードウェアでは Ultimate から参照可能なストレージから、VICE ではホスト上のローカルパスから PRG を読み込んで実行します。 | path | symbolsFile | ✅ | ✅ | ✅ |
upload_run_asm | 6502/6510 のソースをアセンブルし、PRG をアップロードして実行します。検証に対応しています。 | program | verify=false | ✅ | ✅ | ✅ |
upload_run_basic | Commodore BASIC v2 のソースをアップロードして、ただちに実行します。検証に対応しています。 | program | verify=false | ✅ | ✅ | ✅ |
c64_rag
BASIC およびアセンブリの RAG 検索のためのグループ化されたエントリーポイントです。
| 操作 | 説明 | 必須入力 | 任意の入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
asm | ローカルのナレッジベースから 6502/6510 アセンブリのリファレンスを取得します。 | q | k=3 | ✅ | ✅ | ✅ |
basic | ローカルのナレッジベースから BASIC のリファレンスとコードスニペットを取得します。 | q | k=3 | ✅ | ✅ | ✅ |
c64_select_backend
実行時に、アクティブなバックエンドを C64U/U64 ハードウェア、U2 ファミリーのカートリッジ、VICE エミュレーター間で切り替えます。
| 操作 | 説明 | 必須入力 | 任意の入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
select | MCP サーバーを再起動せずに、アクティブな実行バックエンドを切り替えます。 | backend | — | ✅ | ✅ | ✅ |
c64_sound
SID の制御、再生、作曲、分析のワークフローをまとめたエントリーポイントです。
| 操作 | 説明 | 必須入力 | 任意入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
analyze | 検証が要求されたときに、SID の再生を自動的に分析します。 | request | durationSeconds, expectedSidwave | ✅ | ✅ | ✅ |
capture_samples | C64 Ultimate のオーディオ UDP ストリームから、未加工のステレオ PCM サンプルをキャプチャします。 | — | count=256, encoding="base64" | ✅ | ||
compile_play | SIDWAVE または CPG のソースをコンパイルし、必要に応じてすぐに再生します。 | — | sidwave, cpg, format, output="prg", dryRun=false | ✅ | ✅ | ✅ |
generate | 軽量な SID アルペジオ再生シーケンスを生成します。 | — | root="C4", pattern="0,4,7", steps=16, tempoMs=120, waveform="tri", preset="classic" | ✅ | ✅ | ✅ |
note_off | ゲートビットをクリアして SID ボイスをリリースします。 | voice | — | ✅ | ✅ | ✅ |
note_on | 波形、ADSR、ピッチを設定して SID ボイスをトリガーします。 | — | voice=1, note, frequencyHz, system="PAL", waveform="pulse", pulseWidth=2048, attack=1, decay=1, sustain=15, release=3 | ✅ | ✅ | ✅ |
pipeline | SIDWAVE のスコアをコンパイルして再生し、録音を分析します。検証に対応しています。 | — | sidwave, cpg, output="prg", waitBeforeCaptureMs=500, analysisDurationSeconds=3, expectedSidwave, verifySilenceBefore=true, verifySilenceAfter=true, silenceDurationSeconds=1.5, silenceRmsThreshold=0.02, postSilenceWaitMs=200, silenceWaitMs=150 | ✅ | ✅ | ✅ |
play_mod_file | Ultimate SID プレーヤーで MOD トラッカーモジュールを再生します。 | path | — | ✅ | ✅ | |
play_preset | ベートーヴェンの「エリーゼのために」など、組み込み SID プリセットをコンパイルして再生します。検証に対応しています。 | — | preset="fuer_elise", platforms, verify=true, analysisDurationSeconds=4, waitBeforeCaptureMs=400, restoreActiveBackend=true | ✅ | ✅ | ✅ |
play_sid_file | Ultimate のファイルシステムに保存された SID ファイルを再生します。 | path | songnr | ✅ | ✅ | |
record_analyze | 指定した時間だけオーディオを録音し、SID の分析メトリクスを返します。c64u では Ultimate のオーディオストリームを使用し、それ以外のバックエンドではホストのマイクを使用します。 | durationSeconds | expectedSidwave | ✅ | ✅ | ✅ |
reset | 不具合を解消するために、SID レジスターをソフトリセットまたはハードリセットします。 | — | hard=false | ✅ | ✅ | ✅ |
set_volume | $D418 の SID マスターボリュームレジスターを設定します(0~15)。 | volume | — | ✅ | ✅ | ✅ |
silence_all | 必要に応じてオーディオを検証しながら、すべての SID ボイスを無音にします。検証に対応しています。 | — | verify=false | ✅ | ✅ | ✅ |
c64_stream
Ultimate のストリーミングセッションを開始および停止するためのエントリーポイントです。
| 操作 | 説明 | 必須入力 | 任意入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
start | Ultimate のストリーミングセッションを、host:port の宛先に向けて開始します。 | stream, target | — | ✅ | ||
stop | 実行中の Ultimate のストリーミングセッションを停止します。 | stream | — | ✅ |
c64_system
電源、リセット、メニュー、バックグラウンドタスクを制御するためのグループ化されたエントリーポイントです。
| 操作 | 説明 | 必須入力 | 任意入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
list_tasks | ステータスメタデータとともに、既知のバックグラウンドタスクを一覧表示します。 | — | — | ✅ | ✅ | ✅ |
menu | ナビゲーション用に Ultimate メニューボタンを切り替えます。 | — | — | ✅ | ✅ | |
pause | 再開されるまでマシンを一時停止します。 | — | — | ✅ | ✅ | |
performance_report | 現在または最新の MCP セッションから、診断スパンとツールのレイテンシを要約します。 | — | scope="current", includeTimeline=true, maxEntries=25 | ✅ | ✅ | ✅ |
power_cycle | アクティブなバックエンドを初期状態に戻します。C64U/U64 Tool Menu の検証には machine:menu_screen が必要です(対応する C64U ファームウェアバージョン、または U64 3.15 以降)。U2 ファミリーは REST 経由で再起動します。 | — | — | ✅ | ✅ | ✅ |
poweroff | C64U/U64 の電源を切るか、VICE を終了します。U2 ファミリーのハードウェアでは電源を切れません。 | — | — | ✅ | ✅ | |
read_menu_screen | machine:menu_screen を通じて、アクティブな Ultimate メニューの生の文字および色のマトリックスを読み取ります(対応する C64U ファームウェアバージョン、または U64/U2 3.15 以降)。 | — | — | ✅ | ✅ | |
reboot | 障害から復旧するためにファームウェアの再起動を実行します。 | — | — | ✅ | ✅ | ✅ |
reset | 電源を切らずにソフトリセットを実行します。 | — | — | ✅ | ✅ | ✅ |
resume | 一時停止後に CPU の実行を再開します。 | — | — | ✅ | ✅ | |
start_task | 指定した間隔で実行する名前付きバックグラウンドタスクを開始します。 | name, operation | arguments={}, intervalMs=1000, maxIterations | ✅ | ✅ | ✅ |
stop_all_tasks | 実行中のすべてのバックグラウンドタスクを停止し、状態を永続化します。 | — | — | ✅ | ✅ | ✅ |
stop_task | 特定のバックグラウンドタスクを停止し、タイマーを解除します。 | name | — | ✅ | ✅ | ✅ |
c64_vice
選択した VICE リソースの読み取りと更新を行うためのグループ化されたエントリーポイントです。
| 操作 | 説明 | 必須入力 | 任意入力 | C64U | U2 | VICE |
|---|---|---|---|---|---|---|
resource_get | VICE 設定リソースを読み取ります(安全なプレフィックスのみ)。 | name | — | ✅ | ||
resource_set | VICE 設定リソースに書き込みます(安全なプレフィックスのみ)。 | name, value | — | ✅ |
リソース
| 名前 | 概要 |
|---|---|
c64://guide/index | 各ナレッジバンドルの活用方法と、参照するタイミングを説明します。 |
c64://guide/bootstrap | C64 で安全に自動化、検証、ロールバックを行うための手順を説明します。 |
c64://guide/fast-paths | 1 回の呼び出しでデモを行う方法、バックエンドの切り替え、手動でツールを組み合わせるよりオーケストレーションを優先すべき状況をまとめた簡潔なルーティングガイドです。 |
c64://vice/binary-monitor-spec | VICE を利用するすべての操作に影響する、転送フレーミング、単一クライアントの制約、コマンドの動作、モニターの副作用について説明します。 |
c64://basic/spec | BASIC v2 のトークン定義、構文規則、デバイス I/O のガイダンスについて説明します。 |
c64://basic/pitfalls | 引用符の扱い、行の長さ、トークン化、変数名、その他の BASIC の落とし穴をまとめたクイックリファレンスです。 |
c64://assembly/6510-spec | 6510 CPU の公式オペコード一覧、アドレッシングモード、ゼロページの活用方法について説明します。 |
c64://sound/sid/spec | 表現力豊かな SID 再生のためのレジスターマップ、波形の挙動、ADSR エンベロープについて説明します。 |
c64://sound/sidwave/spec | SID 作曲ワークフローで使用する SIDWAVE 交換フォーマットを定義します。 |
c64://sound/sid/file-format | インポートした音楽の PSID/RSID ヘッダー、メタデータブロック、互換性に関する注意事項を説明します。 |
c64://sound/sid/best-practices | 心地よい SID 音楽を作るために実証された波形、ADSR プリセット、フレージング、検証ワークフローをまとめています。 |
c64://graphics/vic/spec | VIC-II のラスタータイミング、スプライト制御、カラー RAM、ビットマップモードについて説明します。 |
c64://graphics/character-set | PETSCII コードをスクリーンコード、グリフ、キーボード入力に対応付ける文字コード表です。 |
c64://graphics/petscii/style-guide | 芸術的で読みやすい PETSCII 表示を作成するためのカラーパレット、読みやすさのプリセット、ディザリングパターン、ベストプラクティスについて説明します。 |
c64://graphics/sprite-charset/best-practices | ハードウェアアクセラレーションによるグラフィックスのための、スプライトと文字セットのワークフロー、メモリレイアウト、VIC-II の設定、よくある落とし穴、実証された手法について説明します。 |
c64://memory/map | ハードウェア、ROM、RAM の領域を含む 64 KB アドレス空間を、ページごとに解説します。 |
c64://memory/zero-page-and-workspace | ゼロページ変数、BASIC ポインター、KERNAL ワークスペースのアドレスについて説明します。 |
c64://basic/rom-routines | BASIC ROM の主要箇所、再利用可能なインタープリタールーチン、数値ヘルパー、文字列ヘルパー、C64 固有の BASIC 継続エントリーポイントをまとめています。 |
c64://kernal/rom-routines | KERNAL ROM のベクター、ジャンプテーブルエントリー、内部ルーチン、シリアル/テープ/画面サービス、リセットハンドラーについて説明します。 |
c64://io/spec | VIC-II、SID、CIA、システム制御レジスターについて、アドレス範囲と使用上の注意を含めて説明します。 |
c64://io/cia/spec | CIA 1/2 のレジスター、タイマー、割り込み、キーボードマトリックスの配置について詳しく説明します。 |
c64://printer/spec | プリンターのデバイス設定、制御コード、Ultimate 64 との連携について説明します。 |
c64://printer/commodore/text | Commodore MPS のテキスト出力に使用する文字セット、制御コード、書式設定について説明します。 |
c64://printer/commodore/bitmap | MPS のビットマップ印刷におけるビットマップモード、グラフィックスコマンド、データ配置について詳しく説明します。 |
c64://printer/epson/text | Epson FX のテキスト出力に使用する ESC/P 制御コードと書式設定のアドバイスをまとめています。 |
c64://printer/epson/bitmap | Epson のビットマップ印刷ジョブにおけるビットイメージモード、密度オプション、データのパッキングについて説明します。 |
c64://printer/prompt-guide | MCP サーバーを介して複雑なプリンタージョブを実行するために再利用できるプロンプトテンプレートです。 |
プロンプト
| 名前 | 説明 |
|---|---|
assembly-program | 6502/6510 のルーチンに関するリクエストを、標準のアセンブリスキルに振り分けます。 |
basic-program | 独自の Commodore BASIC v2 に関するリクエストを、標準の BASIC スキルに振り分けます。 |
cross-platform-demo | すぐに目で見て確認できるデモに関するリクエストを、クロスプラットフォームデモスキルに振り分けます。 |
drive-manager | ディスクイメージやドライブの状態に関するリクエストを、標準のドライブスキルに振り分けます。 |
graphics-demo | グラフィックスに関するリクエストを、標準のグラフィックススキルに振り分けます。 |
hello-world | すぐに実行できる Hello World やスモークテストに関するリクエストを、標準の挨拶スキルに振り分けます。 |
memory-debug | 元に戻せるメモリの検査やパッチ適用に関する作業を、標準のメモリスキルに振り分けます。 |
preset-music-demo | すぐに認識できる曲に関するリクエストを、SID 音楽スキルに振り分けます。 |
printer-job | プリンターに関する作業を、標準のプリンタースキルに振り分けます。 |
sid-music | SID の再生や作曲に関する作業を、標準の SID スキルに振り分けます。 |
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。

