Godot MCP Pro
用于AI驱动的Godot游戏开发的高级MCP(模型上下文协议)服务器。使用以下命令将Claude等AI助手直接连接到您的Godot编辑器 172强大的工具.
建筑
AI Assistant ←—stdio/MCP—→ Node.js Server ←—WebSocket:6505—→ Godot Editor Plugin
- 实时:WebSocket连接意味着即时反馈,无文件轮询
- 编辑器集成:完全访问Godot的编辑器API、UndoRedo系统和场景树
- JSON-RPC 2.0:带有正确错误代码和建议的标准协议
这个回购中有什么
⚠️ 此公共仓库仅包含免费的Godot插件。 MCP服务器(Node.js,连接AI助手所需)作为付费包的一部分分发-- 一次性购买,终身更新: - 请我喝杯咖啡: - itch.io: 付费压缩包包括插件、 server/ 带有预构建JavaScript的目录, INSTALL.md,以及AI客户端指令。如果你克隆了这个仓库,但没有看到 server/ 文件夹, 这是意料之中的 --从上面的链接中获取完整的包。
快速开始
1.安装Godot插件
复制 addons/godot_mcp/ 将文件夹放入Godot项目的 addons/ 目录。
启用插件: 项目→ 项目设置→ 插件→ Godot MCP Pro→ 启用
2.安装MCP服务器
这 server/ 目录仅包含在 全额付费套餐 (见上文)。下载并解压缩zip后,运行:
cd server
npm install
npm run build
3.配置克劳德代码
添加到您的 .mcp.json:
{
"mcpServers": {
"godot-mcp-pro": {
"command": "node",
"args": ["/path/to/server/build/index.js"],
"env": {
"GODOT_MCP_PORT": "6505"
}
}
}
}
4.选择您的模式
Godot MCP Pro提供了四种模式来适应任何客户端的工具限制:
| 模式 | 工具 | 最适合 |
|---|
| 满的 (默认) | 172 | 克劳德代码、临床、VS代码副本、光标 |
三维 (--3d) | 100 | 反重力和其他100个工具限制需要3D的客户端 |
精简版 (--lite) | 81 | Windsurf、JetBrains Junie、Gemini CLI |
最小化 (--minimal) | 35 | OpenCode,具有小上下文的本地LLM |
{
"mcpServers": {
"godot-mcp-pro": {
"command": "node",
"args": ["/path/to/server/build/index.js", "--lite"]
}
}
}
替换 --lite 随着 --minimal 以实现最小的占地面积。
- 精简版 包括:项目、场景、节点、脚本、编辑器、输入、运行时和inputmap工具。
- 最小化 包括:35个基本工具——项目信息、场景管理、节点CRUD、脚本编辑、编辑器错误、输入模拟和运行时检查。
5.CLI模式(MCP的替代方案)
对于不支持MCP的客户端,或者当您希望零上下文开销时,可以直接从终端/bash工具使用CLI。CLI要求首先构建服务器(步骤2)。
# Top-level help — shows all command groups
node /path/to/server/build/cli.js --help
# Group help — shows commands in a group
node /path/to/server/build/cli.js node --help
# Command help — shows options for a command
node /path/to/server/build/cli.js node add --help
# Execute
node /path/to/server/build/cli.js project info
node /path/to/server/build/cli.js scene play
node /path/to/server/build/cli.js node add --type CharacterBody3D --name Player
替换 /path/to/ 使用提取文件的实际路径。
CLI通过WebSocket直接连接到Godot编辑器插件。它要求:
- 启用MCP插件运行的Godot编辑器
- 服务器已构建(
node build/setup.js install) - 6510-6514范围内的可用端口
优势:LLM通过以下方式逐步发现能力 --help 而不是预先加载所有工具定义。这适用于任何具有终端访问权限的LLM客户端,而不管工具数量限制如何。
6.客户端兼容性
| 客户端 | 推荐模式 | 注意事项 |
|---|
| Claude代码 | 完整(默认) | 延迟工具加载——最低上下文成本 |
| VS代码副本 | 完整 | 虚拟工具自动分组工具 |
| OpenAI Codex CLI | 完整 | MCPSearch延迟溢出 |
| Cline | Full | 没有硬性限制;使用 enabledTools 进入白名单 |
| Roo代码 | 满 | 没有硬限制 |
| Windsurf | 精简版 | 100工具限制 |
| JetBrains Junie | 精简版 | 100个工具限制 |
| Gemini CLI | Lite | ~100客户端限制;使用 excludeTools 用于更精细的控制 |
| 光标 | 满 | 工具限制已删除(动态上下文发现) |
| OpenCode | 最小化或CLI | 模型降级超过约40个工具 |
| 本地LLM(LM Studio等) | 最小化或CLI | 上下文窗口是瓶颈 |
7.使用它
打开启用了插件的Godot项目,然后使用Claude Code与编辑器进行交互。
全部172工具
项目工具(7)
| 工具 | 说明 |
|---|
get_project_info | 项目元数据、版本、视口、自动加载 |
get_filesystem_tree | 带过滤的递归文件树 |
search_files | 模糊/全局文件搜索 |
get_project_settings | 读取project.godot设置 |
set_project_setting | 通过编辑器API设置项目设置 |
uid_to_project_path | UID→ res://转换 |
project_path_to_uid | res://→ UID转换 |
场景工具(9)
| 工具 | 说明 |
|---|
get_scene_tree | 具有层次结构的实时场景树 |
get_scene_file_content | 原始.tscn文件内容 |
create_scene | 创建新场景文件 |
open_scene | 在编辑器中打开场景 |
delete_scene | 删除场景文件 |
add_scene_instance | 实例场景作为子节点 |
play_scene | 运行场景(主/当前/自定义) |
stop_scene | 停止跑步场景 |
save_scene | 将当前场景保存到磁盘 |
节点工具(14)
| 工具 | 说明 |
|---|
add_node | 添加具有类型和属性的节点 |
delete_node | 删除节点(支持撤消) |
duplicate_node | 重复节点和子节点 |
move_node | 移动/修复节点 |
update_property | 设置任何属性(自动类型解析) |
get_node_properties | 获取所有节点属性 |
add_resource | 将形状/材质等添加到节点 |
set_anchor_preset | 设置控制锚预设 |
rename_node | 重命名场景中的节点 |
connect_signal | 节点间连接信号 |
disconnect_signal | 断开信号连接 |
get_node_groups | 获取节点所属的组 |
set_node_groups | 设置节点组成员资格 |
find_nodes_in_group | 查找组中的所有节点 |
脚本工具(8)
| 工具 | 说明 |
|---|
list_scripts | 列出所有包含类信息的脚本 |
read_script | 阅读脚本内容 |
create_script | 使用模板创建新脚本 |
edit_script | 搜索/替换或完全编辑 |
attach_script | 将脚本附加到节点 |
get_open_scripts | 列出编辑器中打开的脚本 |
validate_script | 验证GDScript语法 |
search_in_files | 在项目文件中搜索内容 |
编辑器工具(9)
| 工具 | 说明 |
|---|
get_editor_errors | 获取错误和堆栈跟踪 |
get_editor_screenshot | 捕获编辑器视口 |
get_game_screenshot | 捕捉跑步游戏 |
execute_editor_script | 在编辑器中运行任意GDScript |
clear_output | 清除输出面板 |
get_signals | 获取具有连接的节点的所有信号 |
reload_plugin | 重新加载MCP插件(自动重新连接) |
reload_project | 重新扫描文件系统并重新加载脚本 |
get_output_log | 获取输出面板内容 |
输入工具(7)
| 工具 | 说明 |
|---|
simulate_key | 模拟键盘按键按下/释放 |
simulate_mouse_click | 模拟鼠标点击位置 |
simulate_mouse_move | 模拟鼠标移动 |
simulate_action | 模拟Godot输入操作 |
simulate_sequence | 具有帧延迟的输入事件序列 |
get_input_actions | 列出所有输入操作 |
set_input_action | 创建/修改输入操作 |
运行时工具(19)
| 工具 | 说明 |
|---|
get_game_scene_tree | 跑步游戏场景树 |
get_game_node_properties | 运行游戏中的节点属性 |
set_game_node_property | 在运行游戏中设置节点属性 |
execute_game_script | 在游戏环境中运行GDScript |
capture_frames | 多帧截图 |
monitor_properties | 记录随时间变化的属性值 |
start_recording | 开始输入录制 |
stop_recording | 停止输入录制 |
replay_recording | 回放录制的输入 |
find_nodes_by_script | 通过脚本查找游戏节点 |
get_autoload | 获取自动加载节点属性 |
batch_get_properties | 批量获取多个节点属性 |
find_ui_elements | 在游戏中查找UI元素 |
click_button_by_text | 按文本内容点击按钮 |
wait_for_node | 等待节点出现 |
find_nearby_nodes | 查找位置附近的节点 |
navigate_to | 导航到目标位置 |
move_to | 将角色移动到目标 |
动画工具(6)
| 工具 | 说明 |
|---|
list_animations | 列出AnimationPlayer中的所有动画 |
create_animation | 创建新动画 |
add_animation_track | 添加轨迹(值/位置/旋转/方法/贝塞尔曲线) |
set_animation_keyframe | 将关键帧插入轨迹 |
get_animation_info | 所有轨迹/关键点的详细动画信息 |
remove_animation | 删除动画 |
TileMap工具(6)
| 工具 | 说明 |
|---|
tilemap_set_cell | 设置单个平铺单元格 |
tilemap_fill_rect | 用瓷砖填充矩形区域 |
tilemap_get_cell | 在单元格中获取磁贴数据 |
tilemap_clear | 清除所有单元格 |
tilemap_get_info | TileMapLayer信息和磁贴集源 |
tilemap_get_used_cells | 已使用的单元格列表 |
主题和UI工具(6)
| 工具 | 说明 |
|---|
create_theme | 创建主题资源文件 |
set_theme_color | 设置主题颜色覆盖 |
set_theme_constant | 设置主题常量覆盖 |
set_theme_font_size | 设置主题字体大小覆盖 |
set_theme_stylebox | 设置StyleBoxFlat覆盖 |
get_theme_info | 获取主题覆盖信息 |
分析工具(2)
| 工具 | 说明 |
|---|
get_performance_monitors | 所有性能监视器(FPS、内存、物理等) |
get_editor_performance | 快速性能总结 |
批处理和重构工具(8)
| 工具 | 说明 |
|---|
find_nodes_by_type | 查找某一类型的所有节点 |
find_signal_connections | 查找场景中的所有信号连接 |
batch_set_property | 在某一类型的所有节点上设置属性 |
find_node_references | 在项目文件中搜索图案 |
get_scene_dependencies | 获取资源依赖关系 |
cross_scene_set_property | 在所有场景中设置属性 |
find_script_references | 查找脚本/资源的使用位置 |
detect_circular_dependencies | 查找圆形场景依赖关系 |
着色器工具(6)
| 工具 | 说明 |
|---|
create_shader | 使用模板创建着色器 |
read_shader | 读取着色器文件 |
edit_shader | 编辑着色器(替换/搜索替换) |
assign_shader_material | 将ShaderMaterial指定给节点 |
set_shader_param | 设置着色器参数 |
get_shader_params | 获取所有着色器参数 |
导出工具(3)
| 工具 | 说明 |
|---|
list_export_presets | 列出导出预设 |
export_project | 获取预设的导出命令 |
get_export_info | 导出相关项目信息 |
资源工具(6)
| 工具 | 说明 |
|---|
read_resource | 读取.tres资源属性 |
edit_resource | 编辑资源属性 |
create_resource | 创建新的.tres资源 |
get_resource_preview | 获取资源缩略图 |
add_autoload | 注册自动加载单例 |
remove_autoload | 删除自动加载单例 |
物理工具(6)
| 工具 | 说明 |
|---|
setup_physics_body | 配置物理体属性 |
setup_collision | 向节点添加碰撞形状 |
set_physics_layers | 设置碰撞层/遮罩 |
get_physics_layers | 获取碰撞层/遮罩信息 |
get_collision_info | 获取碰撞形状详细信息 |
add_raycast | 添加RayCast2D/3D节点 |
三维场景工具(6)
| 工具 | 说明 |
|---|
add_mesh_instance | 添加具有基本网格的MeshInstance3D |
setup_camera_3d | 配置Camera3D属性 |
setup_lighting | 添加/配置灯光节点 |
setup_environment | 配置世界环境 |
add_gridmap | 设置GridMap节点 |
set_material_3d | 设置标准材料3D属性 |
粒子工具(5)
| 工具 | 说明 |
|---|
create_particles | 创建GPUParticles2D/3D |
set_particle_material | 配置颗粒工艺材料 |
set_particle_color_gradient | 为粒子设置颜色渐变 |
apply_particle_preset | 应用预设(火、烟、火花等) |
get_particle_info | 获取粒子系统详细信息 |
导航工具(6)
| 工具 | 说明 |
|---|
setup_navigation_region | 配置导航区域 |
setup_navigation_agent | 配置导航代理 |
bake_navigation_mesh | 烘焙导航网格 |
set_navigation_layers | 设置导航图层 |
get_navigation_info | 获取导航设置信息 |
音频工具(6)
| 工具 | 说明 |
|---|
add_audio_player | 添加AudioStreamPlayer节点 |
add_audio_bus | 添加音频总线 |
add_audio_bus_effect | 为音频总线添加效果 |
set_audio_bus | 配置音频总线属性 |
get_audio_bus_layout | 获取音频总线布局信息 |
get_audio_info | 获取音频相关节点信息 |
动画树工具(4)
| 工具 | 说明 |
|---|
create_animation_tree | 创建动画树 |
get_animation_tree_structure | 获取树结构 |
set_tree_parameter | 设置动画树参数 |
add_state_machine_state | 将状态添加到状态机 |
国家机床(3)
| 工具 | 说明 |
|---|
remove_state_machine_state | 从状态机中删除状态 |
add_state_machine_transition | 添加状态之间的转换 |
remove_state_machine_transition | 删除状态转换 |
混合树工具(1)
| 工具 | 说明 |
|---|
set_blend_tree_node | 配置混合树节点 |
分析和搜索工具(4)
| 工具 | 说明 |
|---|
analyze_scene_complexity | 分析场景性能 |
analyze_signal_flow | 地图信号连接 |
find_unused_resources | 查找未引用的资源 |
get_project_statistics | 获取项目范围内的统计数据 |
测试和质量保证工具(6)
| 工具 | 说明 |
|---|
run_test_scenario | 运行自动化测试场景 |
assert_node_state | 断言节点属性值 |
assert_screen_text | 检查屏幕上的文本 |
compare_screenshots | 比较两个屏幕截图 |
run_stress_test | 运行性能压力测试 |
get_test_report | 获取测试结果报告 |
主要特点
- 撤销集成:所有节点/属性操作都支持Ctrl+Z
- 智能类型解析:
"Vector2(100, 200)", "#ff0000", "Color(1,0,0)" 自动转换 - 自动重新连接:指数退避重新连接(1秒→ 2s → 4s ... → 60s最大值)
- 心跳:10秒乒乓球保持连接畅通
- 有用的错误:错误响应包括对下一步的建议
竞争比较
工具计数
| 类别 | Godot MCP Pro | GDAI MCP(19美元) | tomyud1(免费) | Dokujaa(免费) | Coding Solo(免费) | | ee0pdt(免费)|braddp(免费) |
|---|
| 项目 | 7 | 5 | 4 | 0 | 2 | 2 | 2 |
| 场景 | 9 | 8 | 11 | 9 | 3 | 4 | 5 |
| 节点 | 14 | 8 | 0 | 8 | 2 | 3 | 0 |
| 脚本 | 8 | 5 | 6 | 4 | 0 | 5 | 0 |
| 编辑 | 9 | 5 | 1 | 5 | 1 | 3 | 2 |
| 输入 | 7 | 2 | 0 | 0 | 0 | 0 | 0 |
| 运行时间 | 19 | 0 | 0 | 0 | 0 | 0 | 0 |
| 动画 | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| TileMap | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| 主题/UI | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| 分析 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| 批处理/重构 | 8 | 0 | 0 | 0 | 0 | 0 | 0 |
| 着色器 | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| 出口 | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| 资源 | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| 物理学 | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| 3D场景 | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| 粒子 | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| 导航 | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| 音频 | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| 动画树 | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| 状态机 | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| 混合树 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 分析 | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| 测试/QA | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| 资产/AI | 0 | 0 | 1 | 6 | 0 | 0 | 0 |
| 材料 | 0 | 0 | 0 | 2 | 0 | 0 | 0 |
| 其他 | 0 | 0 | 9 | 5 | 5 | 2 | 1 |
| Android部署 | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| 总计 | 172 | ~30 | 32 | 39 | 13 | 19 | 10 |
特征矩阵
| 功能 | Godot MCP Pro | GDAI MCP(19美元) | tomyud1(免费) | Dokujaa(免费) | 编码独奏(免费) |
|---|
| 连接 | WebSocket(实时) | stdio(Python) | WebSocket | TCP Socket | 无头CLI |
| 取消/重做 | 是 | 是 | 否 | 否 |
| JSON-RPC 2.0 | 是 | 自定义 | 自定义 | 定制 | 不适用 |
| 自动重新连接 | 是(指数回退) | N/A | 否 | 否 | N/A |
| 心跳 | 是(10秒乒乓球) | 否 | 否 | 不 | 否 |
| 错误建议 | 是(上下文提示) | 否 | 否 | 不 | 否 |
| 屏幕截图 | 是(编辑器+游戏) | 是 | 否 | 否 | 不 |
| 游戏输入模拟 | 是(键/鼠标/动作/序列) | 是(基本) | 否 | 否 |
| 运行时检查 | 是(场景树+属性+监视器) | 否 | 否 | 不 | 否 |
| 信号管理 | 是(连接/断开/检查) | 否 | 否 | 不 | 否 |
| 浏览器可视化工具 | 否 | 否 | 是 | 否 | 否 |
| AI 3D网格生成 | 否 | 否 | 是(Meshy API) | 否 |
独家类别(没有竞争对手有这些)
| 类别 | 工具 | 为什么重要 |
|---|
| 动画 | 6个工具 | 创建动画、添加轨迹、设置关键帧——所有这些都是通过编程实现的 |
| TileMap | 6个工具 | 设置单元格、填充矩形、查询平铺数据——二维平面设计必不可少 |
| 主题/UI | 6个工具 | StyleBox、颜色、字体——无需手动编辑器即可构建UI主题 |
| 分析 | 2个工具 | FPS、内存、绘图调用、物理——性能监控 |
| 批处理/重构 | 8个工具 | 按类型查找、批量属性更改、跨场景更新、依赖关系分析 |
| 着色器 | 6个工具 | 创建/编辑着色器、指定材质、设置参数 |
| 出口 | 3个工具 | 列出预设、获取导出命令、检查模板 |
| 物理学 | 6个工具 | 设置碰撞形状、实体、光线投射和图层管理 |
| 三维场景 | 6个工具 | 添加网格、相机、灯光、环境、GridMap支持 |
| 粒子 | 5个工具 | 使用自定义材质、预设和渐变创建粒子 |
| 导航 | 6个工具 | 配置导航区域、代理、寻路、烘焙 |
| 音频 | 6个工具 | 完整的音频总线系统、效果、播放器、现场管理 |
| 动画树 | 4个工具 | 构建具有转换和混合树的状态机 |
| 状态机 | 3个工具 | 复杂动画的高级状态机管理 |
| 测试/QA | 6个工具 | 自动测试、断言、压力测试、屏幕截图比较 |
| 运行时 | 19个工具 | 运行时检查和控制游戏:检查、记录、回放、导航 |
建筑优势
| 特性 | Godot MCP Pro | 典型竞争对手 |
|---|
| 协议 | JSON-RPC 2.0(标准,可扩展) | 基于自定义JSON或CLI |
| 连接 | 带有心跳的持久WebSocket | 按命令子进程或原始TCP |
| 可靠性 | 通过指数回退(1秒)自动重新连接→60s) | 需要手动重新连接 |
| 类型安全 | 智能类型解析(Vector2、Color、Rect2、十六进制颜色) | 仅字符串或有限类型 |
| 错误处理 | 带有代码和建议的结构化错误 | 通用错误消息 |
| 撤消支持 | 所有突变都通过UndoRedo系统 | 直接修改(无撤销) |
| 港口管理 | 自动扫描端口6505-6509 | 固定端口,可能存在冲突 |
许可证
专有——见 许可证 了解详情。购买包括终身更新。