forked from aburch/simutrans
-
Notifications
You must be signed in to change notification settings - Fork 24
MCP Server
Himeshi edited this page Jun 6, 2026
·
5 revisions
SimutransのゲームループにMCP(Model Context Protocol)サーバが組み込まれており、Claude CodeなどのAIツールからゲームの情報を取得したり操作を行ったりすることができます。
- AIツール(Claude Codeなど)からSquirrelスクリプトをゲーム内で実行できます
- ゲーム内で操作を行うには、AIツールがSimutrans用のSquirrelスクリプトを生成する必要があります。Squirrelスクリプト生成のための補助として、simutrans-agent-skills などをご利用ください。
- Squirrelスクリプトには、SimutransのスクリプトAPI(路線・停留所・車両・都市・工場など)がすべて利用可能です
-
-mcp-portオプションつきで起動した時のみ利用できます。デフォルトでは無効です - 操作はローカルホストのみに公開されます(外部からはアクセスできません)
- OTRP v54以降
SimutransをMCPサーバ付きで起動するには、-mcp-port オプションを指定します。
./sim -mcp-port 13354
| オプション | 説明 |
|---|---|
-mcp-port PORT |
MCPサーバをPORTで起動(デフォルト: 13354) |
起動後、ポートがLISTEN状態になるまで数秒かかります。
ゲームデータディレクトリ(simバイナリと同じ場所)に .mcp.json を作成します。
{
"mcpServers": {
"simutrans": {
"type": "stdio",
"command": "nc",
"args": ["localhost", "13354"]
}
}
}注意: Simutransを先に起動してからAIエージェントを開いてください。Simutransが起動していない状態では接続に失敗します。
Squirrelスクリプトを受け取り、ゲーム内で実行します。
パラメータ:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
code |
string | ○ | 実行するSquirrelコード |
player_nr |
integer | △ | プレイヤー番号(0〜15、デフォルト: 1) |
戻り値: スクリプトが return した値を文字列として返します。
利用可能なAPIの完全なリストはSimutransのソースコード(script/api/ ディレクトリ以下)を参照してください。Simutransのスクリプト機能(AIスクリプト・シナリオスクリプト)と同じAPIが利用できます。
local t = world.get_time()
return t.year + "年" + t.month + "月"local player = player_x(0) // プレイヤー番号は起動時の player_nr と合わせる
local lines = player.get_line_list()
local result = "路線数: " + lines.get_count() + "\n"
foreach(line in lines) {
result += line.get_name() + "\n"
}
return resultlocal result = ""
for(local p = 0; p < 16; p++) {
local player = player_x(p)
if(player.is_valid()) {
result += "Player " + p + ": " + player.get_name() + "\n"
}
}
return result-
ファイル操作・システムコマンドは無効: ファイルの読み書き(
file,loadfileなど)やシステム関数(system,getenvなど)はセキュリティのため使用できません。 - VM は呼び出しごとに初期化: グローバル変数や定義した関数は、呼び出し間で引き継がれません。状態を保持したい場合はゲームオブジェクト(路線名など)に書き込む必要があります。
-
ローカルホストのみ: MCPサーバはループバックアドレス(
127.0.0.1/::1)にbindしています。ファイアウォールのポートを開放しても、OSのTCP/IPスタックがループバック以外からの接続を拒否するため、外部ネットワークからはアクセスできません。
スクリプト実行時のエラーはゲームデータディレクトリの script-mcp.log に記録されます。スクリプトがエラーになった場合はこのファイルを確認してください。