Meow Godot MCP
English
零依赖的 Godot MCP Server 插件 — 让 AI 直接控制 Godot 编辑器。
以 C++ GDExtension 形式构建,无需 Node.js/Python 等外部运行时。AI 工具(Claude、Cursor 等)通过标准 MCP 协议 与 Godot 编辑器通信,实现场景操作、脚本管理、运行时控制等能力。
特性
- 50 个 MCP 工具,覆盖完整编辑器 + 游戏运行时工作流:
- 场景 CRUD:查询场景树、创建/修改/删除节点(支持 Ctrl+Z 撤销) - 场景文件管理:保存/打开/列出/创建场景,实例化 PackedScene - 脚本管理:读/写/编辑 GDScript,附加/分离脚本 - 项目查询:文件列表、项目设置、资源信息 - 运行时控制:启动/停止游戏、捕获日志输出、自动等待桥接连接 - 信号管理:查询/连接/断开节点信号 - UI 系统:布局预设、主题覆盖、StyleBox 创建、容器配置、UI 属性查询 - 动画系统:创建动画、添加轨道、关键帧 CRUD、动画属性设置 - 视口截图:捕获编辑器 2D/3D 视口截图(MCP ImageContent) - 游戏桥接:输入注入(键盘/鼠标/Action)、按路径点击 UI 节点、游戏视口截图 - 运行时查询:读取游戏节点属性、执行 GDScript 表达式、获取运行时场景树 - 集成测试:批量测试步骤执行与断言 - TileMap 操作:批量放置/擦除瓦片、查询瓦片信息 - 碰撞形状:一步创建 CollisionShape2D/3D 并配置形状 - 资源属性:通过 res:// 路径加载贴图/音频、new:ClassName() 内联创建资源
- 编辑器 Dock 面板:实时连接状态、Godot 版本检测、启动/停止/重启控制、一键配置 Claude Code MCP
- 7 个 Prompt 模板:创建玩家控制器、设置场景结构、调试物理、创建 UI 界面、构建 UI 布局、设置动画、测试游戏 UI
- 游戏桥接:通过 EditorDebuggerPlugin 与运行中的游戏双向通信,注入输入、捕获截图
- 版本自适应:运行时检测 Godot 版本,动态启用/禁用对应工具
- 完整 MCP 协议:JSON-RPC 2.0、tools、resources、prompts、ImageContent(spec 2025-03-26)
架构
AI Client (Claude/Cursor)
↕ stdio (JSON-RPC)
Bridge 可执行文件 (~50KB)
↕ TCP localhost:6800
GDExtension 插件 (Godot 进程内)
↕ Godot API
Godot 编辑器
为什么需要 Bridge? GDExtension 是 Godot 进程内的共享库,无法被 AI 客户端直接作为子进程启动,且共享 Godot 的 stdout。Bridge 作为轻量级中继,解决了这两个问题。
安装
从 Release 安装(推荐)
- 从 或 Gitee Releases 下载对应平台的 zip
- 解压到 Godot 项目根目录(会创建
addons/meow_godot_mcp/ 目录) - 打开 Godot → 项目设置 → 插件 → 启用 "Godot MCP Meow"
从源码编译
# 克隆仓库(含 godot-cpp 子模块)
git clone --recursive https://github.com/MeowMeowZi/meow-godot-mcp.git
cd meow-godot-mcp
# 编译 GDExtension 插件
scons platform=windows target=template_debug -j8 # Windows
scons platform=linux target=template_debug -j8 # Linux
scons platform=macos target=template_debug -j8 # macOS
# 编译 Bridge
scons bridge
编译产物在 project/addons/meow_godot_mcp/bin/ 目录下。
配置 AI 客户端
Claude Code(推荐)
- 在 Godot 编辑器右下角 Dock 面板点击 「配置 Claude Code MCP」 按钮
- 配置命令自动复制到剪贴板
- 在 Claude Code 终端粘贴执行
- 重启 Claude Code 即可连接
或手动执行:
claude mcp add --transport stdio --scope project godot -- "path/to/addons/meow_godot_mcp/bin/godot-mcp-bridge"
Claude Desktop
在 claude_desktop_config.json 中添加:
{
"mcpServers": {
"godot": {
"command": "path/to/addons/meow_godot_mcp/bin/godot-mcp-bridge",
"args": []
}
}
}
其他 MCP 客户端
Bridge 使用标准 stdio 传输,兼容任何支持 MCP 协议的 AI 客户端。默认连接 localhost:6800。
工具列表
场景操作(v1.0)
| 工具 | 说明 |
|---|
get_scene_tree | 获取当前场景树结构 |
create_node | 创建新节点(支持撤销) |
set_node_property | 设置节点属性(支持 res:// 资源加载和 new: 内联创建) |
delete_node | 删除节点(支持撤销) |
脚本管理(v1.0)
| 工具 | 说明 |
|---|
read_script | 读取 GDScript 文件 |
write_script | 创建新 GDScript 文件 |
edit_script | 编辑现有脚本 |
attach_script | 将脚本附加到节点 |
detach_script | 从节点分离脚本 |
项目查询(v1.0)
| 工具 | 说明 |
|---|
list_project_files | 列出项目文件结构 |
get_project_settings | 读取项目设置 |
get_resource_info | 查询资源信息 |
运行时与信号(v1.0)
| 工具 | 说明 |
|---|
run_game | 启动游戏(支持自动等待桥接连接) |
stop_game | 停止游戏 |
get_game_output | 获取游戏日志输出(支持 level/keyword/since 过滤) |
get_node_signals | 查询节点信号 |
connect_signal | 连接信号 |
disconnect_signal | 断开信号 |
场景文件管理(v1.1)
| 工具 | 说明 |
|---|
save_scene | 保存当前场景(支持另存为) |
open_scene | 打开 .tscn 文件 |
list_open_scenes | 列出编辑器中所有打开的场景 |
create_scene | 创建新场景并打开 |
instantiate_scene | 实例化 PackedScene 为子节点 |
UI 系统(v1.1)
| 工具 | 说明 |
|---|
set_layout_preset | 设置 Control 布局预设(full_rect、center 等) |
set_theme_override | 批量设置主题覆盖(颜色、字体、字号) |
create_stylebox | 创建 StyleBoxFlat 并应用到节点 |
get_ui_properties | 查询 Control 的 UI 属性(anchors、size_flags 等) |
set_container_layout | 配置 Container 布局参数 |
get_theme_overrides | 查询节点的所有主题覆盖 |
动画系统(v1.1)
| 工具 | 说明 |
|---|
create_animation | 创建 AnimationPlayer + AnimationLibrary + Animation |
add_animation_track | 添加动画轨道(value/position/rotation/scale) |
set_keyframe | 插入/修改/删除关键帧 |
get_animation_info | 查询动画列表、轨道结构、关键帧数据 |
set_animation_properties | 设置动画时长、循环模式、步长 |
视口截图(v1.1)
| 工具 | 说明 |
|---|
capture_viewport | 捕获编辑器 2D/3D 视口截图(返回 MCP ImageContent) |
游戏桥接与输入(v1.1 + v1.2)
| 工具 | 说明 |
|---|
inject_input | 向运行中的游戏注入输入(键盘/鼠标/Action) |
capture_game_viewport | 捕获运行中游戏的视口截图 |
get_game_bridge_status | 查询游戏桥接连接状态 |
click_node | 按节点路径点击运行中游戏的 UI 控件 |
get_node_rect | 获取 Control 节点的屏幕矩形坐标 |
运行时状态查询(v1.2)
| 工具 | 说明 |
|---|
get_game_node_property | 读取运行中游戏的节点属性 |
eval_in_game | 在运行中的游戏执行 GDScript 表达式 |
get_game_scene_tree | 获取运行中游戏的完整场景树 |
集成测试(v1.2)
| 工具 | 说明 |
|---|
run_test_sequence | 执行测试步骤序列并断言结果 |
TileMap 操作(v1.4)
| 工具 | 说明 |
|---|
set_tilemap_cells | 批量放置瓦片到指定网格坐标 |
erase_tilemap_cells | 批量擦除指定坐标的瓦片 |
get_tilemap_cell_info | 查询指定坐标的瓦片信息 |
get_tilemap_info | 查询 TileMapLayer 元信息(TileSet、已用格数等) |
碰撞形状(v1.4)
| 工具 | 说明 |
|---|
create_collision_shape | 一步创建 CollisionShape2D/3D 并配置形状(支持 9 种形状类型) |
编辑器控制(v1.4)
| 工具 | 说明 |
|---|
restart_editor | 重启 Godot 编辑器(适用于 DLL 重编译后重载) |
系统要求
- Godot 4.3+(godot-cpp v10 最低要求)
- Windows x86_64 / Linux x86_64 / macOS universal
技术栈
- C++17, godot-cpp v10+
- nlohmann/json 3.12.0
- SCons 构建系统
- GoogleTest 单元测试 (82 tests) + Python UAT (23 tests)
许可证
MIT