DEFCON MCP Server について
DEFCON MCP Serverは、ゲームのAI APIとLua botを介して、MCP対応AIツールをIntroversion SoftwareのDEFCONに接続します。AIによるプレイ向けにゲーム操作と状態取得を提供しますが、一部コマンドは未対応です。
主な機能
- 01施設と艦隊の操作
- 02艦隊の移動と核ミサイル発射
- 03ゲーム状態とDEFCONレベルの取得
- 04チャット送信とホワイトボード操作
- 05ゲーム分析用プロンプト
活用シーン
- 01AIツールからDEFCONのコマンドを実行
- 02ゲーム状態とDEFCONレベルを確認
- 03施設配置や核攻撃目標の提案を取得
MCP 対応
MCPクライアントにゲーム操作ツール、ゲーム状態リソース、プレイ用プロンプトを提供します。stdioとHTTPのトランスポートに対応しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
DEFCON MCP サーバー
これは、Introversion Software の 2007 年のゲーム DEFCON 用の Model Context Protocol(MCP) サーバーです。お気に入りの AI ツールで GLOBAL THERMONUCLEAR WAR をプレイできます。

(開発中のため、まだ利用できないコマンドがあります!)
セットアップ
- DEFCON をインストールします。CD キーを読み込むため、一度起動してください。
- DEFCON AI API をダウンロードし、v1.57 を DEFCON のインストールフォルダーに展開します。AI API の .exe を
DEFCON_ai.exeに変更してもかまいません。 - LUABOT をダウンロードし、
<defcon installation folder>/AIに展開します。フォルダー名を変更して、<defcon installation folder>/AI/luabot/luabot.dllとなるようにします。 - このリポジトリを
luabotフォルダーに Git clone します。 - MCP サーバーは入力テキストファイルに書き込み、Lua ボットがそれを読み込みます。次に Lua ボットが出力テキストファイルに書き込み、MCP サーバーがそれを読み込みます。ファイルパスは自分で設定する必要があります。デフォルトでは
R:\input.txtとR:\output.txtに書き込むようハードコードされていますが、Defcon にinputfileやoutputfileの CLI 引数を渡して上書きできます。RAMDisk を設定できる場合は、使用をおすすめします。 - このリポジトリのフォルダーで
npm ciを実行し、依存関係をインストールします。 .\Defcon_ai.exe host nowan nolan nowlan luabot="AI\luabot\main.lua" numplayers=2 territory=0 debug inputfile="D://input.txt" outputfile="D://output.txt"でゲームを起動します。「external bot」としてAI/luabot/luabot.dllを選択し、さらに内部 AI プレイヤーも追加します。ゲームは自動的に開始するはずです。開始しない場合は、準備完了にしてゲームを開始してください!- MCP 対応の LLM インターフェースを設定し、
node mcp-server.mjs(stdio トランスポートの場合)またはnode mcp-server.mjs --http(HTTP トランスポートの場合)で MCP サーバーを起動します。--inputfile="D://input.txt"や--outputfile="D://output.txt"などを渡して、入出力テキストファイルの場所を指定できます。 - 戦いの惨状を見届けましょう!
アーキテクチャ
DEFCON MCP サーバーは、AI を活用したゲームプレイを実現するために、多層アーキテクチャを採用しています。
- ゲームレイヤー:AI API 拡張機能を使用して DEFCON ゲームを実行します
- Lua ブリッジ:DEFCON AI API を介してゲームと連携する Lua ボット(
main.lua) - ファイル I/O レイヤー:テキストファイルを介して Lua ボットと MCP サーバーが通信します
input.txt:MCP サーバーからゲームへのコマンドoutput.txt:ゲームから MCP サーバーへのゲーム状態情報
- MCP サーバーレイヤー:Model Context Protocol を実装する Node.js サーバー(
mcp-server.mjs)- LLM とのやり取りに標準化されたツール、リソース、プロンプトを提供します
- stdio と HTTP の両方のトランスポート方式に対応しています
- LLM 統合レイヤー:AI ツールが MCP サーバーに接続し、ゲーム状態を分析してコマンドを発行します
データフロー
- Lua ボットがゲーム状態を読み取り、
output.txtに書き込みます - MCP サーバーが
output.txtを読み取り、現在のゲーム状態を取得します - LLM がゲーム状態を分析し、アクションを決定します
- MCP サーバーが
input.txtにコマンドを書き込みます - Lua ボットが
input.txtを読み取り、ゲーム内でコマンドを実行します
コマンドの対応付け
このシステムでは、コマンドの実行を追跡するために相関 ID を使用します。
- ゲームに送信される各コマンドには、一意の ID が含まれます
- コマンドの結果には、同じ ID が付与されます
- これにより、MCP サーバーはコマンドが正常に実行されたか確認できます
利用可能な MCP ツール
MCP サーバーでは、次のツールを利用できます。
debug-log:ゲームログにデバッグメッセージを送信しますsend-chat:対戦相手にチャットメッセージを送信しますplace-structure:指定した座標に施設(RadarStation、Silo、AirBase)を配置しますplace-fleet:指定した座標に艦隊を配置しますmove-fleet:艦隊を指定した座標に移動しますwhiteboard-draw:ホワイトボードに線を描画しますwhiteboard-clear:ホワイトボード上の線をすべて消去しますlaunch-nuke:サイロから指定した座標の目標に核ミサイルを発射しますset-silo-defensive:サイロを防御モードに設定しますget-command-results:以前に実行したコマンドの結果を取得しますget-game-state:最新のゲーム状態情報を取得しますgenerate-ai-response:現在のゲーム状態に基づいて AI の応答を生成します
利用可能な MCP リソース
MCP サーバーでは、次のリソースを利用できます。
defcon://game-state:現在のゲーム状態を取得しますdefcon://level:現在の DEFCON レベルを取得します
利用可能な MCP プロンプト
MCP サーバーでは、次のプロンプトを利用できます。
analyze-game-state:現在のゲーム状態を分析し、最適な手を提案しますsuggest-structure-placement:施設の配置に最適な場所を提案しますsuggest-nuke-targets:核攻撃に最適な目標を提案します
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。