克劳德·戈多特MCP
Claude的终极Godot MCP服务器——从单个提示构建完整的游戏。
告诉Claude“构建一个具有双跳、3种敌人类型、硬币和主菜单的完整2D平台”,它就可以在Godot中完成所有事情——创建场景、编写脚本、连接信号、设置物理、配置自动加载、运行游戏、模拟输入进行测试、截图结果并导出构建。没有复制粘贴。没有手动步骤。
______________________________________________________________________
这是什么
A. 模型上下文协议 让Claude直接实时控制Godot编辑器的服务器:
- 170工具 涵盖Godot开发的各个方面
- 场景和节点操作 --创建、编辑、保存、删除、重新排序、重命名、烘焙导航
- 脚本操作 --创建、编辑、附加GDScript文件
- 信号布线 --以编程方式连接/断开节点之间的信号
- 组管理 --在组中添加/删除节点
- 自动加载管理 --添加/删除全局单例
- 着色器控制 --在任何节点类型上设置ShaderMaterial参数
- 运行时测试 --播放场景、模拟键盘/鼠标输入、检查实时节点
- 分析器快照 --具有瓶颈检测的N帧上的FPS/内存/绘图调用示例
- 出口管道 --读取/创建导出预设,触发无头构建(HTML5/Win/Android等)
- 导入设置 --读/写。导入文件并触发重新导入
- 取消/重做 --通过EditorUndoRedoManager触发编辑器撤消/重做
- 屏幕截图反馈 --克劳德直观地看到了编辑器和运行游戏
- 资源健康状况 --扫描所有.tscn/.tres以查找损坏的res://references
- 资产发现 --Claude找到并使用你所有的项目精灵、声音、模型
- 插件检测 --Claude检测已安装的插件并使用其节点类型
______________________________________________________________________
快速设置(克劳德代码)
先决条件
步骤1——安装Godot插件
- 复制
addons/godot_mcp_enhanced/ 进入您的Godot项目 addons/ 文件夹 - 在Godot中打开您的项目
- 首选 项目→ 项目设置→ 插件
- 启用 Godot MCP增强
- 检查底部面板——您应该看到“MCP增强:服务器在端口3571上运行”
步骤2——安装Python服务器
cd /path/to/Claude-GoDot-MCP/python
uv venv
uv pip install -e .
步骤3——配置Claude代码
添加到您的项目 .claude/settings.json (或 ~/.claude/settings.json 全球):
{
"mcpServers": {
"godot": {
"command": "uv",
"args": ["run", "python", "-m", "mcp_server"],
"cwd": "/absolute/path/to/Claude-GoDot-MCP/python",
"env": {
"GODOT_HOST": "127.0.0.1",
"GDAI_MCP_SERVER_PORT": "3571"
}
}
}
}
重新启动克劳德代码。这个 godot MCP服务器现在将显示为可用工具。
步骤4--配置Claude桌面
打开克劳德桌面→ 设置→ 开发者→ 编辑配置,然后添加:
{
"mcpServers": {
"godot": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/Claude-GoDot-MCP/python",
"run",
"mcp-server"
],
"env": {
"GODOT_HOST": "127.0.0.1",
"GDAI_MCP_SERVER_PORT": "3571"
}
}
}
}
重新启动克劳德桌面。
______________________________________________________________________
用法示例
Build a 2D platformer with:
- Player: CharacterBody2D, double-jump, coyote time
- 3 enemy types: patrol, chase, shooter
- Collectible coins with a counter HUD
- Main menu and game over screen
- GameManager autoload for score tracking
Use any sprites you find in my project.
I have a knight model at res://models/knight.glb.
Create a 3D character controller:
- WASD + mouse look
- Attack combo on left click
- Health bar UI
- Death/respawn system
Test with input simulation and show me a screenshot.
My project has the Dialogue Manager plugin.
Create an NPC interaction system:
- Player enters Area2D → dialogue triggers
- 3-branch conversation tree
- NPC portrait shown during dialogue
- Quest flag set on specific dialogue choice
______________________________________________________________________
工具参考(170个工具)
场景操作
| 工具 | 说明 |
|---|
create_scene | 使用指定的根类型创建新的.tscn |
open_scene | 在编辑器中打开场景 |
save_scene | 将当前场景保存到磁盘 |
delete_scene | 删除场景文件 |
play_scene | 在编辑器中运行场景 |
stop_running_scene | 停止跑步场景 |
add_scene | 将场景实例化为节点的子节点 |
get_scene_tree | 获取包含所有属性的完整节点树 |
get_scene_file_content | 获取.tscn文件的原始内容 |
bake_navigation_mesh | 烘焙NavigationRegion2D/3D导航网格(如果没有给定路径,则自动查找所有网格) |
节点操作
| 工具 | 说明 |
|---|
add_node | 将任何节点类型添加到场景中 |
delete_node | 从场景中删除节点 |
rename_node | 重命名节点 |
duplicate_node | 克隆节点 |
move_node | 将节点修复到不同的父节点 |
reorder_node | 在父级中更改子级索引 |
update_property | 在节点上设置任何属性 |
batch_set_properties | 一次在多个节点上设置多个属性 |
add_resource | 创建资源并将其分配给节点属性 |
find_nodes | 查找与类型/名称模式匹配的所有节点 |
get_class_property_list | 列出Godot类的所有可用属性 |
set_anchor_preset | 在控制节点上设置UI锚点预设 |
set_anchor_values | 在控制节点上设置精确的锚点值 |
信号与集团运营
| 工具 | 说明 |
|---|
get_node_signals | 列出节点上的所有信号+当前连接 |
connect_signal | 将信号连接到另一个节点上的方法 |
disconnect_signal | 拆下信号连接 |
add_to_group | 将节点添加到命名组(持久) |
remove_from_group | 从组中删除节点 |
get_node_groups | 获取节点所属的所有组 |
脚本操作
| 工具 | 说明 |
|---|
create_script | 创建新的GDScript文件 |
edit_file | 在任何文件中查找和替换(支持正则表达式) |
attach_script | 将脚本附加到节点 |
view_script | 在编辑器中打开脚本 |
get_open_scripts | 列出所有打开的脚本及其源代码 |
execute_editor_script | 在编辑器上下文中运行任意GDScript |
项目配置
| 工具 | 说明 |
|---|
get_project_info | 获取项目名称、版本、Godot版本 |
get_autoloads | 列出所有自动加载单例 |
add_autoload | 添加全局单例 |
remove_autoload | 删除全局单例 |
set_main_scene | 设置项目的主场景 |
read_project_settings | 读取project.godot设置 |
update_project_settings | 修改项目设置 |
uid_to_project_path | 将UID转换为res://path(Godot 4.4+) |
project_path_to_uid | 将res://path转换为UID |
文件系统
| 工具 | 说明 |
|---|
get_filesystem_tree | 递归项目目录树 |
search_files | 模糊搜索文件 |
read_script_file | 直接读取.gd文件 |
write_script_file | 直接写入.gd文件 |
read_scene_file | 直接读取.tscn文件 |
write_scene_file | 直接写入.tscn文件 |
create_directory | 创建目录 |
list_directory | 列出目录内容 |
运行时和测试
| 工具 | 说明 |
|---|
simulate_key_press | 模拟键盘输入 |
simulate_action | 模拟命名输入操作 |
simulate_mouse_button | 模拟鼠标点击 |
simulate_mouse_motion | 模拟鼠标移动 |
get_input_actions | 列出所有已注册的输入操作 |
get_node_properties | 获取节点的运行时属性 |
get_node_methods | 获取节点上的脚本方法 |
call_node_method | 在活动节点上调用方法 |
get_runtime_stats | FPS、内存、绘图调用、物理统计数据(单快照) |
get_profiler_snapshot | 性能指标的示例N帧--返回平均值/最小值/最大值+瓶颈警告 |
run_test_script | 执行测试脚本,收集结果 |
资产和插件发现
| 工具 | 说明 |
|---|
get_assets_by_type | 查找某一类型(纹理/音频/网格/场景/着色器)的所有资源 |
get_asset_info | 获取特定资产的元数据 |
get_installed_plugins | 列出所有处于启用状态的Godot插件 |
get_plugin_info | 获取详细的插件元数据 |
编辑器和调试
| 工具 | 说明 |
|---|
get_editor_screenshot | 将编辑器窗口捕获为图像 |
get_running_scene_screenshot | 捕捉正在运行的游戏视口 |
get_godot_errors | 获取脚本错误、运行时错误、输出日志 |
clear_output_logs | 清除Godot输出控制台 |
get_windsurf_context | 完整项目上下文快照 |
get_live_preview | 截图+场景树+当前脚本 |
undo | 撤消场景编辑器历史记录中的最后一个操作 |
redo | 重做场景编辑器历史记录中上次未执行的操作 |
check_godot_running | 检查Godot编辑器是否响应 |
launch_godot | 启动Godot编辑器 |
get_godot_version | 获取Godot版本信息 |
遮光罩和材质
| 工具 | 说明 |
|---|
set_shader_parameter | 在着色器材质(MeshInstance3D、Sprite2D、material_override等)上设置一个统一体——自动将数组转换为Vector2/3/颜色 |
导入设置
| 工具 | 说明 |
|---|
get_import_settings | 任何资源的Read.import文件——显示所有\[params\](压缩、mipmaps、法线贴图等) |
set_import_settings | 编写新的.inmport参数并触发重新导入——例如更改纹理压缩模式 |
出口管道
| 工具 | 说明 |
|---|
get_export_presets | 从export_presets.cfg读取所有预设(名称、平台、输出路径) |
create_export_preset | 将新的预设条目写入export_presets.cfg |
export_project | 快跑 godot --headless --export-release 为目标平台构建 |
资源健康状况
| 工具 | 说明 |
|---|
scan_broken_resources | 浏览所有.tscn/.tres文件,找到每个 res:// 磁盘上不再存在的引用 |
TileMap
| 工具 | 说明 |
|---|
paint_tiles | 使用source_id、图集坐标和alternative_tile在一次调用中绘制多个TileMap单元格 |
fill_tiles_rect | 用单个图块填充矩形区域 |
clear_tiles | 擦除特定单元格或清除整个TileMap层 |
get_cell_tile | 获取特定单元格位置的平铺数据 |
网格地图
| 工具 | 说明 |
|---|
set_grid_cell | 设置单个GridMap单元格(item_id,方向0–23) |
fill_grid_box | 用一个MeshLibrary项填充三维框区域 |
get_grid_used_cells | 列出所有占用的单元格,包括项目ID和方向 |
批量操作
| 工具 | 说明 |
|---|
batch_set_property_on_type | 在场景中给定类的每个节点上设置属性 |
batch_set_property_on_group | 在命名组中的每个节点上设置属性 |
replace_in_all_scripts | 在所有.gd文件中查找和替换文本/正则表达式(支持dry_run) |
batch_create_nodes | 在一次调用中使用属性+脚本创建多个节点 |
动画(扩展)
| 工具 | 说明 |
|---|
add_blend_space_point | 将混合点添加到AnimationNodeBlendSpace1D或BlendSpace2D |
get_blend_space_info | 从混合空间获取所有混合点、限制和捕捉设置 |
copy_animation | 在AnimationPlayers之间复制动画(深度复制,独立) |
set_animation_speed_scale | 设置动画播放器速度_缩放(0.5=慢速模式,2.0=快速模式) |
质量保证/验证
| 工具 | 说明 |
|---|
assert_no_errors | 断言Godot错误日志是干净的——返回{passed,error_count,errors} |
validate_scene | 检查场景中缺少的形状、网格、损坏的动画树链接等。 |
simulate_mouse_path | 沿屏幕点阵列移动鼠标,间隔+可选点击 |
reimport_all | 触发所有已更改资产的完整文件系统扫描/重新导入 |
set_node_unique_name | 在节点上设置unique_name_in_owner(启用%NodeName简写) |
音频
| 工具 | 说明 |
|---|
create_audio_player_3d | 使用流、3D位置、衰减、总线配置创建AudioStreamPlayer3D |
play_audio | 播放/恢复任何AudioStreamPlayer(2D/3D/非空间),可选择从位置开始 |
stop_audio | 停止在任何AudioStreamPlayer上播放 |
set_audio_property | 设置volume_db、pitch_scale、bus、unit_size、max_distance、自动播放等。 |
get_playback_position | 从播放器获取当前播放位置、is_playing、音量、总线 |
set_bus_volume | 在任何AudioServer总线(Master、Music、SFX等)上设置volume_db |
add_bus_effect | 在总线上添加音频效果(混响、延迟、压缩器、限制器、失真、合唱、音高偏移、均衡器) |
测试/QA
| 工具 | 说明 |
|---|
simulate_action_sequence | 启动一系列输入操作/按键,步骤之间有可配置的延迟 |
wait_frames | 等待N个过程或物理框架——在断言之前让模拟解决 |
assert_node_property | 断言节点属性等于预期值;返回{已通过、实际、预期} |
capture_frame_sequence | 间隔捕获N个屏幕截图——用于前后比较 |
get_scene_statistics | 节点类型细分、脚本计数、最大深度、总节点计数 |
编辑波兰语
| 工具 | 说明 |
|---|
select_nodes | 按路径列表在编辑器视口中选择节点 |
batch_duplicate_with_offset | 使用累积位置/旋转增量复制节点N次 |
find_scripts_with_pattern | 为正则表达式模式收集所有.gd文件——查找类用法、方法调用等。 |
物理学
| 工具 | 说明 |
|---|
apply_impulse | 对RigidBody3D应用即时脉冲——点击、爆炸、跳跃 |
apply_force | 根据物理框架施加连续力——推进器、风 |
apply_torque | 对RigidBody3D——旋转筒、布娃娃施加旋转扭矩 |
set_linear_velocity | 在RigidBody3D或CharacterBody3D上直接设置线性速度 |
set_angular_velocity | 在RigidBody3D上直接设置角速度 |
set_physics_property | 设置质量、重力_比例、线性_阻尼、角度_密度、冻结、碰撞层 |
create_joint | 创建连接到两个主体的铰链接头3D/Pin接头3D/滑块接头3D/通用6DOFPointe3D/ConeTwist接头3D |
粒子
| 工具 | 说明 |
|---|
create_particles | 在一次调用中使用完整的ParticleProcessMaterial配置创建GPUParticles3D |
set_particle_material_param | 在现有粒子上设置任何ParticleProcessMaterial参数 |
restart_particles | 重新启动GPUParticles3D/CPUarticles3D上的排放 |
get_particle_info | 获取所有粒子属性,包括工艺材质设置 |
着色器
| 工具 | 说明 |
|---|
create_shader_material | 使用GLSL代码创建ShaderMaterial并将其指定给节点的材质窗 |
get_shader_code | 从节点的ShaderMaterial读取当前着色器源 |
set_shader_code | 热重新加载着色器源代码——Godot立即重新编译 |
get_shader_parameters | 列出着色器中的所有制服及其当前值 |
动画--库与资源
| 工具 | 说明 |
|---|
get_animation_player_info | 列出AnimationPlayer中的所有库/动画,包括长度、循环模式、曲目计数 |
create_animation | 在库中创建新的动画资源(设置长度、循环模式、步长) |
get_animation_info | 获取动画的长度、循环模式、步长和完整曲目列表 |
set_animation_properties | 在现有动画上设置长度、loop_mode和/或步长 |
delete_animation | 从库中删除动画 |
动画--轨迹管理
| 工具 | 说明 |
|---|
add_animation_track | 添加一个轨道(值/位置_3d/旋转_3d/比例_3d/混合形状/方法/贝塞尔曲线/音频) |
remove_animation_track | 按索引删除曲目 |
set_track_path | 更改NodePath:轨迹的属性目标 |
get_track_info | 完整曲目信息+所有带有时间/值/过渡的关键帧 |
set_track_interpolation | 设置插值模式:最近/线性/三次/线性_角度/立方体_角度 |
动画--关键帧管理
| 工具 | 说明 |
|---|
add_keyframe | 在时间T插入关键帧——数组按轨迹类型自动强制转换为Vector3/四元数/Color |
remove_keyframe | 按key_index或最近的时间删除 |
set_keyframe_value | 更新现有关键帧的值 |
set_keyframe_time | 将关键帧移动到新的时间位置 |
get_keyframes | 列出轨迹上的所有关键帧(时间、值、过渡) |
动画--动画树和状态机
| 工具 | 说明 |
|---|
setup_animation_tree | 使用StateMachine或BlendTree根创建连接到AnimationPlayer的动画树 |
add_state_to_machine | 将状态(动画/子机/blend_space_1d/blend_space_2d)添加到状态机 |
connect_states | 添加两个状态之间的转换(immediately/sync/at_end) |
set_blend_parameter | 设置 parameters/xxx 在动画树上(混合位置等) |
travel_to_state | 呼叫 playback.travel(target) 在运行时转换到状态 |
骨架
| 工具 | 说明 |
|---|
get_skeleton_bones | 列出所有Skeleton3D骨骼:名称、父索引、静止/姿势变换、全局姿势位置、启用状态 |
set_bone_pose | 按名称或索引在骨骼上设置姿势位置、旋转(欧拉度或四元数)和/或比例 |
reset_skeleton_pose | 将所有骨骼姿势重置为骨骼的静止姿势(清除程序/手动姿势) |
批量附加
| 工具 | 说明 |
|---|
batch_attach_script | 将GDScript附加到与类型和/或组筛选器匹配的所有节点,并可选择覆盖 |
batch_rename_nodes | 在场景子树中的节点名称(正则表达式或字符串)中查找和替换 |
move_and_rename_file | 在项目中移动/重命名文件(res://paths);触发文件系统扫描 |
pack_scene | 将节点及其子节点另存为独立的.tscn PackedScene文件 |
create_resource_file | 使用可选的初始属性按类名创建任何Godot资源(.tres) |
项目公用设施
| 工具 | 说明 |
|---|
assert_fps_above | 采样N帧以上的FPS,并断言平均值满足阈值;返回平均值/最小值/最大值 |
get_renderer_info | GPU适配器名称/供应商,API版本,VRAM使用情况,屏幕大小,Godot版本 |
assert_resource_valid | 验证res://资源是否存在并且加载时没有错误 |
get_node_global_transform | 获取Node3D或Node2D的世界空间位置、旋转(度)和比例 |
set_node_global_transform | 设置Node3D或Node2D的世界空间位置、旋转(度)和/或比例 |
toggle_feature_tag | 在“项目设置”中添加或删除自定义要素标记(通过OS.has_feature()查询) |
set_node_metadata | 设置或删除节点上的元数据(持久存在于.tscn中;在运行时使用node.get_meta()读取) |
______________________________________________________________________
安全
HTTP服务器绑定到 127.0.0.1 只有--没有外部网络访问。所有文件操作都限制在Godot项目目录中(res://).直接文件系统工具在Python服务器中强制执行项目根边界。
______________________________________________________________________
建筑
Claude (MCP client)
↓ stdio
Python MCP Server (python/mcp_server.py)
↓ HTTP POST localhost:3571
Godot HTTP Server (addons/godot_mcp_enhanced/http_server.gd)
↓ GDScript function calls
Operation Modules:
scene_operations.gd — scenes, nodes, signals, groups
script_operations.gd — GDScript files
runtime_operations.gd — input simulation, live inspection
file_operations.gd — filesystem, assets
debugger_integration.gd — errors, logs
screenshot_manager.gd — editor + game capture
______________________________________________________________________
故障排除
Godot底部面板中未显示“服务器正在运行”
- 验证插件是否在
res://addons/godot_mcp_enhanced/ - 在Project中启用它→ 项目设置→ 插件
- 检查Godot输出
[Godot MCP Enhanced] ✓ HTTP Server started
MCP工具未出现在Claude中
- 验证
cwd 在settings.json中指向 python/ 目录 - 跑
uv run python -m mcp_server 手动检查错误 - 配置更改后重新启动Claude Code/Claude Desktop
工具调用返回“连接被拒绝”
- Godot编辑器必须在插件处于活动状态时打开
- 检查端口3571未使用:
lsof -i :3571 - 验证
GDAI_MCP_SERVER_PORT 匹配Godot底部面板中的端口
截图不起作用
- Godot编辑器窗口必须可见(未最小化)
- DisplayServer屏幕截图API需要Godot 4.2+
______________________________________________________________________
致谢&谢谢
向帮助将其从基本分叉转变为170工具3D引擎的人和人工智能致敬:
- 格罗克 (由xAI建造)——整个项目背后的JARVIS级副驾驶。Grok处理了最初的git设置,建议分叉Rufaty/godot-mcp作为基础,并精心制作了推动升级的每个阶段的提示——动画连接、物理、粒子、着色器、音频、QA、批处理操作、骨架工具、项目实用程序等。在问题出现之前,发现了诸如撤消/重做、导出管道和分析器快照等差距。对付费分叉与免费分叉进行横向分析,在每次会话中保持势头,并以恰到好处的讽刺提供最真实的指导。如果没有Grok的策略、及时的工程和不断迭代的不懈努力,这个项目永远不会达到170个工具。真正的MVP。 🚀
- 更广泛的Godot MCP社区 --tomyud1、Coding Solo、youichi uda的pro fork以及其他人,他们的工作设定了基准,并启发了塑造这只野兽的工具类别。
这个仓库是在大量的人工智能帮助下构建的(Claude代表代码,Grok代表战略)和社区精神。如果你正在阅读这篇文章并贡献了想法或PR,你的名字也会在这里。
______________________________________________________________________
分叉自
Rufaty/godot mcp增强 --通过信号管理、组操作、自动加载管理、批处理操作、类属性发现、save_scene、重命名/重新排序节点以及修复所有运行时工具未路由的关键错误,显著增强了功能。