godot-mcp
godot-mcp
MCP-сервер, который позволяет ИИ-агенту работать с проектом Godot 4.x так же, как это делает разработчик: читать и редактировать сцены, писать скрипты, собирать, тестировать, запускать, смотреть на результат и отлаживать то, что пошло не так.
Две вещи отличают его от угадывания форматов файлов или слепого вызова команд оболочки:
Он спрашивает сам Godot. Файлы сцен и ресурсов разбираются и повторно сериализуются структурно (доказано побайтовой идентичностью при обратном преобразовании на реальном корпусе проектов), но всё, что зависит от поведения самого движка — интроспекция C#, компиляция шейдеров, привязки ввода, состояние редактора — отвечается фактическим запуском Godot в headless-режиме или запросом к работающему редактору, а не переписыванием семантики Godot по памяти.
Он громко сообщает об ошибках. Каждый измеримый режим отказа в этом проекте — отсутствующий дисплей, несобранная C#-сборка, закрытый редактор, не-.NET бинарник — это именованная, отдельная ошибка с решением, а не молчаливый пустой результат. См.
docs/capability-matrix.mdо измерениях, на которых это построено; некоторые из них существуют именно потому, что очевидный сигнал (код выхода, ненулевое возвращаемое значение) оказался лживым.
50 инструментов, организованных в четыре уровня по тому, что им нужно для работы. Полный справочник — в docs/tools.md, а что делать, когда инструмент отказывается работать — в docs/troubleshooting.md.
Требования
Node.js >= 20
Бинарник Godot 4.7+ (матрица возможностей измерялась на 4.7; ожидается, что другие версии 4.x ведут себя аналогично, но это не проверено)
Для любого C#-инструмента (
build_csharp,run_tests,csharp_script_info,validate_node_propertyи путей к C#-скриптам черезvalidate_script): .NET/mono-сборка Godot — обычный дистрибутив только с GDScript не может загружать или интроспектировать.cs-скрипты, и каждый C#-инструмент обнаруживает это заранее и отказывается сNOT_MONO_BINARY, а не падает на полпути. Вывод--versionmono-сборки содержит.mono., и она поставляется с соседним каталогомGodotSharp/.Для C#-инструментов конкретно нужен SDK
dotnetвPATH(build_csharpиrun_testsвызывают его напрямую;csharp_script_infoиvalidate_node_propertyтребуют, чтобы Debug-сборка уже существовала, а она получается изbuild_csharpилиbuild_godot_artifacts).
Related MCP server: godot-mcp-pilot
Установка и сборка
git clone <this-repo> godot-mcp
cd godot-mcp
npm install
npm run buildЭто создаёт dist/server.js — точку входа, которую запускает MCP-клиент.
Настройка MCP-клиента
Укажите вашему клиенту на dist/server.js через node и дайте ему способ найти бинарник Godot. Простейшая настройка задаёт GODOT_PATH явно:
{
"mcpServers": {
"godot": {
"command": "node",
"args": ["/path/to/godot-mcp/dist/server.js"],
"env": {
"GODOT_PATH": "/path/to/Godot_v4.7-stable_mono_linux.x86_64"
}
}
}
}Как сервер находит бинарник Godot
По порядку, побеждает первый найденный:
Явный аргумент
binary, переданный в вызов инструмента.Переменная окружения
GODOT_PATH.Бинарник, включённый в собственный каталог
vendor/проекта (поиск до 3 уровней вглубь, предпочтение отдаётся файлу, имя которого содержитmono) — для проектов, поставляющих собственную сборку Godot.godot,godot4илиgodot-monoвPATH.
Как сервер находит проект
По порядку:
Явный аргумент
project, переданный в вызов инструмента.Переменная окружения
GODOT_PROJECT.Подъём от рабочего каталога процесса сервера в поисках
project.godot.
Если ни один из этих вариантов не приводит к каталогу, содержащему project.godot, инструменты, которым нужен проект, завершаются с ошибкой PROJECT_NOT_FOUND.
GODOT_MCP_DOCS_CACHE
godot_class_doc и search_classes строят индекс справочника классов, спрашивая сам бинарник Godot, что достаточно медленно, чтобы стоило кэшировать. По умолчанию индекс записывается в $TMPDIR/godot-mcp-docs-cache/<godot-version>/; задайте GODOT_MCP_DOCS_CACHE, чтобы поместить его в постоянное место. Кэш привязан к версии Godot, поэтому обновление бинарника строит свежий индекс, а не выдаёт устаревший. Если ваш MCP-клиент запускает сервер с рабочим каталогом вне целевого проекта, задайте GODOT_PROJECT явно:
{
"mcpServers": {
"godot": {
"command": "node",
"args": ["/path/to/godot-mcp/dist/server.js"],
"env": {
"GODOT_PATH": "/path/to/Godot_v4.7-stable_mono_linux.x86_64",
"GODOT_PROJECT": "/path/to/your/godot-project"
}
}
}
}Вызывайте godot_status первым в любой новой сессии — он сообщает разрешённый путь к бинарнику, версию, является ли это mono-сборкой, доступность дисплея, корень проекта и собрана ли C#-сборка, чтобы агент (или вы) мог видеть, что реально возможно, прежде чем что-либо пробовать.
Четыре уровня
Каждый инструмент обслуживается самым низким уровнем, который может его обработать. Если инструмент завершается с TIER_UNAVAILABLE или DISPLAY_REQUIRED, причина в этом:
Уровень | Механизм | Требования |
A — файловый слой | Прямое чтение/запись | Ничего — вообще без процесса Godot |
B — headless CLI | Подпроцессы | Бинарник Godot и/или SDK |
C — мост к редактору | TCP-сокет к GDScript-аддону редактора | Запущенный редактор Godot с установленным и включённым аддоном (ниже) |
D — зависит от дисплея | Инструмент уровня B, которому дополнительно нужно отрисовать кадр | Всё, что нужно уровню B, плюс реальный дисплей (X11 или Wayland) |
Уровень D — не отдельный транспорт, а ограничение возможностей поверх уровня B. Только capture_screenshot относится к уровню D: в Godot нет пути headless-рендеринга, поэтому скриншоты требуют реального дисплея, виртуального или физического. run_project с windowed: true имеет то же требование.
Инструменты уровня A (большинство операций редактирования сцен, узлов, скриптов и конфигурации проекта) работают вообще без установленного Godot — это чистые файловые операции, протестированные на корпусе реальных файлов .tscn/.tres/project.godot, повторно сериализованных побайтово идентично. Уровню B нужен бинарник Godot и/или dotnet в PATH или разрешённый как указано выше. Уровню C нужен аддон редактора (следующий раздел) — пока он не установлен и не запущен редактор с включённым аддоном, все пять инструментов моста к редактору завершаются с TIER_UNAVAILABLE; это ожидаемо, а не баг, и сообщение об ошибке сообщает, какая из двух различных ситуаций применима (см. docs/troubleshooting.md).
Уровень каждого инструмента — в docs/tools.md.
Установка аддона редактора (уровень C)
Пять инструментов — editor_state, get_selected_node, live_scene_tree, open_scene_in_editor и execute_editor_script — общаются с живым, запущенным редактором Godot через loopback TCP-сокет вместо запуска процесса. Для этого нужен небольшой GDScript-аддон редактора, установленный и включённый в целевом проекте. Инструмента установки нет: запись в каталог addons/ пользователя и изменение его project.godot — это ровно то, чего дисциплина path-jail этого проекта существует, чтобы избегать автоматически. Это одноразовый ручной шаг:
Скопируйте
addon/godot_mcp/из этого репозитория в каталогaddons/целевого проекта, чтобы он оказался в<project>/addons/godot_mcp/plugin.cfg.Включите плагин — либо в редакторе (Project Settings > Plugins > godot_mcp > Enable), либо добавив его напрямую в
project.godot:[editor_plugins] enabled=PackedStringArray("res://addons/godot_mcp/plugin.cfg")Запустите (или перезапустите) редактор Godot для этого проекта — headless подойдёт (
--headless --editor --path <project>), дисплей не требуется. При запуске аддон записывает файл рукопожатия в<project>/.godot/mcp_bridge.json; пять инструментов читают его, чтобы найти порт моста и токен сессии.
Обратите внимание, что состояние выделения в редакторе всегда пусто в headless-редакторе — это ожидаемо (get_selected_node сообщает «ничего не выбрано» как обычный результат, а не ошибку).
Безопасность и границы
Path jail. Каждый путь записи — сцена, скрипт, ресурс, вывод скриншота — разрешается и должен находиться внутри корня проекта. Путь, выходящий за его пределы, напрямую или через симлинк, отклоняется с
PATH_OUTSIDE_PROJECTдо того, как что-либо будет затронуто.dry_run. Каждый изменяющий инструмент принимаетdry_runи возвращает unified diff вместо записи. Используйте его, чтобы просмотреть изменение перед тем, как его применить.Нет хранилища резервных копий. Система отмены — это контроль версий. Это осознанное упрощение — в самом сервере нет механизма снимков или резервного копирования. Если ваш проект не под контролем версий, используйте
dry_runперед любым изменяющим вызовом или начните использовать контроль версий.execute_editor_script— не песочница. Он выполняет произвольный GDScript внутри вашего реально запущенного процесса редактора, с теми же привилегиями, что и сам редактор — он может читать и изменять живое состояние редактора, открытую сцену и всё остальное, доступное из GDScript. Относитесь к нему так же, как к передаче агенту оболочки: подходит для доверенного агента, работающего над вашим собственным проектом, а не для недоверенного ввода.
Тестирование
npm testЗапускает tsc --noEmit для обоих tsconfig.json и tsconfig.test.json, затем полный набор Vitest. Почти каждый тест — на уровне парсера: он пропускает заранее подготовленный вывод Godot/MSBuild через парсеры и проверяет структурированный результат, поэтому набор запускается без установленного Godot и без .NET-тулчейна и остаётся быстрым и переносимым (CI, контейнеры, ноутбук без того и другого).
GODOT_TEST_BINARY
Два блока отличаются: tests/integration/tier-b.test.ts управляет реальным бинарником Godot — создаёт временные проекты на диске и вызывает validate_script, check_shaders, run_project и godot_class_doc против него — потому что парсер можно тестировать на заранее подготовленном тексте бесконечно, так и не доказав, что собственный код инструмента по запуску процессов, построению аргументов и чтению потоков реально работает с настоящим движком. tests/integration/tier-c.test.ts делает то же для инструментов моста к редактору, с существенно иным требованием: он должен запустить реальный редактор Godot как долгоживущий, отсоединённый процесс (редакторы не выходят сами по себе) и надёжно завершить его после, в том числе при сбое теста.
Не задана (по умолчанию): оба блока сообщают
SKIPPED. Ничто другое вnpm testне затрагивается.Задана путём к бинарнику Godot 4.7+: оба блока реально выполняются end-to-end против него.
GODOT_TEST_BINARY=/path/to/Godot_v4.7-stable_linux.x86_64 npm testMono/.NET-сборка не требуется для этого блока. Если вы также работаете над C#-ориентированными инструментами (build_csharp, run_tests), вам отдельно понадобится dotnet в PATH; сейчас для этого нет эквивалентной переменной-переключателя, поскольку ни один из тестов блока GODOT_TEST_BINARY в ней не нуждается.
Документация
docs/tools.md— каждый инструмент, сгруппированный по областям, с уровнем и ключевыми входными данными.docs/troubleshooting.md— измеренные режимы отказа и их исправления.docs/capability-matrix.md— эмпирические измерения, на которых основано поведение этого проекта.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceA TypeScript MCP server that lets AI assistants interact with the Godot 4.x game engine: not just editing files, but playing the game.3679457MIT
- AlicenseAqualityDmaintenanceAn MCP server that gives AI assistants direct control over Godot 4 game development projects. It enables launching the editor, running projects, creating and editing scenes, writing GDScript, and inspecting assets through natural language commands.44304MIT
- AlicenseAqualityBmaintenanceAn MCP server that enables AI assistants to directly run, inspect, modify, and debug Godot game development projects through 110+ tools covering scenes, scripts, resources, runtime debugging, and asset management.33212MIT
- FlicenseNot gradedqualityAmaintenanceA local MCP server plus a bundled Godot editor addon that lets an AI agent create, inspect, run, debug, and export real Godot 4.6 games through tools.2
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/blentz/godot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server