Skip to main content
Glama

godot-mcp

一个 MCP 服务器,让 AI 智能体像开发者一样在 Godot 4.x 项目上工作:读取和编辑场景、编写脚本、构建、测试、运行、查看结果,并调试出错的地方。

有两件事让它区别于猜测文件格式或盲目执行外部命令:

  • 它直接询问 Godot 本身。 场景和资源文件会被结构化地解析并重新序列化(在真实项目语料库上经过往返验证,证明字节级一致),但任何依赖引擎自身行为的东西——C# 内省、着色器编译、输入绑定、编辑器状态——都是通过实际以无头模式运行 Godot 或查询正在运行的编辑器来回答的,而不是凭记忆重新实现 Godot 的语义。

  • 它会大声失败。 这个项目中每一个可测量的失败模式——缺少显示、未构建的 C# 程序集、已关闭的编辑器、非 .NET 二进制——都是一个有名称、可区分的错误,并附有解决方法,而不是静默的空结果。关于本项目所依据的测量,请参阅 docs/capability-matrix.md;其中几个测量之所以存在,正是因为显而易见的信号(退出码、非 null 返回值)被证明会撒谎。

50 个工具,按照它们运行所需的条件分为四个层级。完整参考请参阅 docs/tools.md,工具拒绝工作时该怎么做请参阅 docs/troubleshooting.md

要求

  • Node.js >= 20

  • 一个 Godot 4.7+ 二进制(能力矩阵是针对 4.7 测量的;其他 4.x 版本预计行为类似,但未经验证)

  • 对于任何 C# 工具(build_csharprun_testscsharp_script_infovalidate_node_property,以及通过 validate_script 处理的 C# 脚本路径):需要 .NET/mono 构建的 Godot——普通的仅 GDScript 发行版无法加载或内省 .cs 脚本,每个 C# 工具都会提前检测到这一点,并以 NOT_MONO_BINARY 拒绝,而不是中途失败。mono 构建的 --version 输出包含 .mono.,并且附带一个同级的 GodotSharp/ 目录。

  • 具体到 C# 工具,还需要 PATH 上有一个 dotnet SDK(build_csharprun_tests 会直接调用它;csharp_script_infovalidate_node_property 需要已经存在 Debug 构建,这来自 build_csharpbuild_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 客户端

node 将你的客户端指向 dist/server.js,并让它能够找到 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 二进制

按顺序,先找到的优先:

  1. 工具调用中显式传入的 binary 参数。

  2. GODOT_PATH 环境变量。

  3. 项目自身 vendor/ 目录下捆绑的二进制(最多向下搜索 3 层,优先选择文件名包含 mono 的)——适用于自带 Godot 构建的项目。

  4. PATH 上的 godotgodot4godot-mono

服务器如何查找项目

按顺序:

  1. 工具调用中显式传入的 project 参数。

  2. GODOT_PROJECT 环境变量。

  3. 从服务器进程的工作目录向上逐级查找 project.godot

如果这些都无法解析到包含 project.godot 的目录,需要项目的工具就会以 PROJECT_NOT_FOUND 失败。

GODOT_MCP_DOCS_CACHE

godot_class_docsearch_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_UNAVAILABLEDISPLAY_REQUIRED 失败,原因就在于此:

层级

机制

要求

A — 文件层

直接读写 .tscn.tres.cs.gdproject.godot

什么都不需要——完全不需要 Godot 进程

B — 无头 CLI

godot --headless …dotnet … 子进程

一个 Godot 二进制,和/或一个 dotnet SDK

C — 编辑器桥接

与 GDScript 编辑器插件的 TCP 套接字

正在运行的 Godot 编辑器,并已安装和启用该插件(见下文)

D — 依赖显示

一个额外需要渲染帧的 Tier B 工具

Tier B 所需的一切,外加一个真实显示(X11 或 Wayland)

Tier D 不是独立的传输机制——它是叠加在 Tier B 之上的能力约束。只有 capture_screenshot 属于 Tier D:Godot 没有无头渲染路径,因此截图需要真实的显示,无论是虚拟的还是物理的。run_project 配合 windowed: true 也有同样的要求。

Tier A 工具(大多数场景、节点、脚本和项目配置编辑)在完全未安装 Godot 的情况下也能工作——它们是纯粹的文件操作,并针对一组真实的 .tscn/.tres/project.godot 文件进行了字节级一致的重新序列化测试。Tier B 需要 PATH 上有一个 Godot 二进制和/或 dotnet,或按上述方式解析得到。Tier C 需要编辑器插件(下一节)——在它被安装并且启用了该插件的编辑器正在运行之前,所有五个编辑器桥接工具都会以 TIER_UNAVAILABLE 失败;这是预期行为,不是 bug,错误消息会告诉你适用的是两种不同情况中的哪一种(参见 docs/troubleshooting.md)。

每个工具所属的层级请参阅 docs/tools.md

安装编辑器插件(Tier C)

五个工具——editor_stateget_selected_nodelive_scene_treeopen_scene_in_editorexecute_editor_script——通过回环 TCP 套接字与正在运行的 Godot 编辑器通信,而不是启动一个进程。这需要在目标项目中安装并启用一个小的 GDScript 编辑器插件。没有安装工具:写入用户的 addons/ 目录并修改他们的 project.godot,正是本项目的路径监狱纪律要避免自动做的事情。这是一次性手动步骤:

  1. 将此仓库中的 addon/godot_mcp/ 复制到目标项目的 addons/ 目录中,使其最终位于 <project>/addons/godot_mcp/plugin.cfg

  2. 启用插件——要么在编辑器中(Project Settings > Plugins > godot_mcp > Enable),要么直接将其添加到 project.godot

[editor_plugins]

enabled=PackedStringArray("res://addons/godot_mcp/plugin.cfg")
  1. 为该项目启动(或重启)Godot 编辑器——无头模式即可(--headless --editor --path <project>),不需要显示。插件在启动时会将握手文件写入 <project>/.godot/mcp_bridge.json;五个工具读取该文件以找到桥接的端口和每会话令牌。

请注意,无头编辑器中的编辑器选中状态始终为空——这是预期行为(get_selected_node 会将"未选中任何内容"报告为正常结果,而不是错误)。

安全性与范围

  • 路径监狱。 每个写入路径——场景、脚本、资源、截图输出——都会被解析并要求位于项目根目录之内。任何直接或通过符号链接逃逸出项目根目录的路径,都会在触碰任何内容之前以 PATH_OUTSIDE_PROJECT 被拒绝。

  • dry_run 每个会修改数据的工具都接受 dry_run,并返回统一 diff 而不是写入。在提交更改之前用它来预览变更。

  • 没有备份存储。 版本控制就是撤销系统。这是一个刻意的简化——服务器本身没有快照或备份机制。如果你的项目不在版本控制之下,请在每次修改调用之前使用 dry_run,或者开始使用版本控制。

  • execute_editor_script 不是沙箱。 它在你实际运行的编辑器进程内执行任意 GDScript,拥有与编辑器本身相同的权限——它可以读取和修改实时的编辑器状态、打开的场景,以及从 GDScript 可以访问的任何其他内容。对待它就像对待把 shell 交给一个智能体一样:适合在你自己的项目上工作的可信智能体,不适合不可信的输入。

测试

npm test

tsconfig.jsontsconfig.test.json 都运行 tsc --noEmit,然后运行完整的 Vitest 测试套件。几乎每个测试都是解析器级别的:它将预设的 Godot/MSBuild 输出喂给解析器,并对结构化结果进行断言,因此测试套件在未安装 Godot 且没有 .NET 工具链的情况下也能运行,并且保持快速和可移植(CI、容器、两者都未安装的笔记本电脑)。

GODOT_TEST_BINARY

有两个测试块不同:tests/integration/tier-b.test.ts 驱动真实的 Godot 二进制——在磁盘上构建临时项目,并针对它调用 validate_scriptcheck_shadersrun_projectgodot_class_doc——因为解析器可以永远针对预设文本进行测试,却永远无法证明工具自身的进程启动、参数构建和流读取代码在真实引擎上确实能工作。tests/integration/tier-c.test.ts 对编辑器桥接工具做同样的事情,但有一个实质不同的要求:它必须将真实的 Godot 编辑器作为长期运行的、分离的进程启动(编辑器不会自行退出),并在之后可靠地回收它,包括在测试失败时也是如此。

  • 未设置(默认):两个测试块都报告为 SKIPPEDnpm test 中的其他内容不受影响。

  • 设置为 Godot 4.7+ 二进制的路径:两个测试块都会针对它实际端到端执行。

GODOT_TEST_BINARY=/path/to/Godot_v4.7-stable_linux.x86_64 npm test

此测试块不需要 mono/.NET 构建。如果你同时也在开发面向 C# 的工具(build_csharprun_tests),你还需要 PATH 上有一个 dotnet;目前没有相应的门控变量,因为 GODOT_TEST_BINARY 测试块中的测试都不需要它。

文档

  • docs/tools.md — 每个工具,按领域分组,包含层级和关键输入。

  • docs/troubleshooting.md — 实测的失败模式及其修复方法。

  • docs/capability-matrix.md — 本项目行为所依据的实证测量数据。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    D
    maintenance
    An 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.
    44
    30
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An 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.
    33
    21
    2
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    A 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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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