Godot MCP Native (模型上下文协议)
一个强大的 Godot 引擎插件,通过模型上下文协议 (MCP) 集成 AI 助手(如 Claude 等)。让 AI 可以直接通过自然语言读取和修改您的 Godot 项目——场景、脚本、节点和资源。
🚀 功能特性
- 完整项目访问:AI 助手可以读取和修改脚本、场景、节点和资源
- 原生实现:无需 Node.js 依赖——完全在 Godot 中运行
- 实时编辑:直接在编辑器中应用 AI 建议
- 全面的工具集(154 个工具——30 核心 + 124 补充):
- 节点工具(9 核心 + 11 高级):创建、修改、管理场景节点,复制、移动、重命名,锚点预设,信号连接,组管理,批量操作,场景审计
- 脚本工具(7 核心 + 8 高级):编辑、分析、创建、附加、验证 GDScript 文件,执行脚本,文件搜索,符号索引,定义和引用查找
- 场景工具(4 核心 + 4 高级):操作场景结构、保存场景、列出/打开/关闭场景标签页,项目场景列表
- 编辑器工具(4 核心 + 12 高级):控制编辑器功能、截图、信号检查、文件系统重载,节点/文件选择,导出管理,属性检查器
- 调试工具(3 核心 + 66 高级):日志、调试会话、断点、栈帧/变量读取、性能分析器、运行时探针,动画/音频/着色器/瓦片地图运行时控制,调试执行控制
- 项目工具(3 核心 + 23 高级):访问项目设置、列出资源、创建资源,运行测试、管理输入映射、检查自动加载/全局类,资源诊断与健康审计
📦 安装
方法 1:资源库(推荐)
1. 打开您的 Godot 项目 2. 进入编辑器中的 AssetLib 标签页 3. 搜索 "Godot MCP Native" 4. 点击 下载 然后 安装方法 2:手动安装
1. 下载或克隆此仓库 2. 将addons/godot_mcp 文件夹复制到项目的 addons/ 目录
3. 在 Godot 中打开项目
4. 进入 项目 > 项目设置 > 插件
5. 启用 "Godot MCP Native" 插件🔧 使用
启用插件
1. 打开 项目 > 项目设置 > 插件 2. 在列表中找到 "Godot MCP Native" 3. 将状态设置为 启用配置 MCP 服务器
插件提供两种传输模式:#### HTTP 模式(用于远程访问)
- 适用场景:基于网络的 AI 集成
- 配置:在插件设置中设置
transport_mode = "http"并配置http_port(默认:9080) - 可选:启用
auth_enabled并设置auth_token以保障安全
连接 Claude Desktop
首先安装 mcp-remote 包:
npm install mcp-remote
#### HTTP 模式配置
{
"mcpServers": {
"godot-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:19080/mcp"
]
}
}
}
连接 Cursor / Trae
#### HTTP 模式配置
{
"mcpServers": {
"godot-mcp": {
"url": "http://localhost:9080/mcp"
}
}
}
带身份验证:
{
"mcpServers": {
"godot-mcp": {
"url": "http://localhost:9080/mcp",
"headers": {
"Authorization": "Bearer your-secret-token-here"
}
}
}
}
连接 Cline
#### HTTP 模式配置
编辑 Cline 配置文件(cline_mcp_settings.json):
{
"mcpServers": {
"godot-mcp": {
"url": "http://localhost:9080/mcp",
"type": "streamableHttp",
"disabled": false,
"autoApprove": []
}
}
}
连接 OpenCode
#### HTTP 模式配置
{
"mcp": {
"godot-mcp": {
"type": "remote",
"url": "http://localhost:9080/mcp"
}
}
}
连接 Codex
#### HTTP 模式配置
[mcp_servers]
[mcp_servers.godot-mcp]
type = "streamableHttp"
url = "http://localhost:19080/mcp"
💬 示例提示
连接后,您可以通过 Claude 与 Godot 项目交互:
@mcp godot-mcp read godot://script/current
我需要帮助优化我的玩家移动代码。能提出改进建议吗?
@mcp godot-mcp get-scene-tree
在场景中间添加一个立方体,并创建一个相机看向它。
创建一个主菜单,包含开始、选项和退出按钮
实现一个带有动态光照的昼夜循环系统
📚 可用命令
Node-Write (6)
create-node- 创建新节点delete-node- 删除节点update-node-property- 更新节点属性duplicate-node- 复制节点及子节点move-node- 移动节点到新父节点rename-node- 重命名节点
Node-Read (3)
get-scene-tree- 获取场景树结构get-node-properties- 获取特定节点的属性list-nodes- 列出父节点下的所有节点
Node-Write-Advanced (5)
set-anchor-preset- 设置 Control 节点锚点预设connect-signal- 连接节点间的信号disconnect-signal- 断开信号连接set-node-groups- 设置节点的组成员关系add-resource- 向节点添加资源子节点(碰撞形状、网格等)
Node-Advanced (6)
get-node-groups- 获取节点所属的组find-nodes-in-group- 查找组中的所有节点batch-update-node-properties- 在单个 UndoRedo 动作中批量更新节点属性batch-scene-node-edits- 在单个 UndoRedo 动作中批量执行场景节点编辑audit-scene-node-persistence- 审计节点 owner 和持久化状态audit-scene-inheritance- 审计场景继承/实例化结构
Script (7)
list-project-scripts- 列出所有脚本read-script- 读取特定脚本modify-script- 更新脚本内容create-script- 创建新脚本get-current-script- 获取当前正在编辑的脚本attach-script- 将已有脚本附加到节点execute-script- 执行 GDScript 表达式
Script-Advanced (8)
analyze-script- 分析脚本结构validate-script- 验证 GDScript 语法search-in-files- 搜索项目文件list-project-script-symbols- 索引 GDScript 和 C# 文件的脚本符号find-script-symbol-definition- 查找脚本符号的定义位置find-script-symbol-references- 查找脚本符号的文本引用rename-script-symbol- 跨文件重命名脚本符号open-script-at-line- 在编辑器中打开脚本到指定行
Scene (4)
create-scene- 创建新场景save-scene- 保存当前场景open-scene- 打开场景get-current-scene- 获取当前场景信息
Scene-Advanced (4)
list-project-scenes- 列出所有场景get-scene-structure- 获取场景结构详情list-open-scenes- 列出当前打开的场景标签页close-scene-tab- 关闭场景标签页
Editor (4)
get-editor-state- 获取当前编辑器状态run-project- 运行项目stop-project- 停止运行中的项目execute-editor-script- 执行 GDScript 脚本
Editor-Advanced (12)
get-selected-nodes- 获取选中的节点set-editor-setting- 修改编辑器设置get-editor-screenshot- 截取编辑器视口截图get-signals- 检查节点信号和连接reload-project- 重新扫描项目文件系统select-node- 在场景中选择节点并聚焦检查器select-file- 在文件系统面板中选择文件get-inspector-properties- 检查节点/资源的属性元数据list-export-presets- 列出导出预设inspect-export-templates- 检查已安装的导出模板validate-export-preset- 验证导出预设run-export- 运行 Godot CLI 导出
Debug (3 核心 + 66 高级)
get-editor-logs- 获取编辑器/运行时日志debug-print- 打印调试信息clear-output- 清除 MCP/编辑器输出缓冲get-performance-metrics- 获取性能数据get-debugger-sessions- 列出编辑器调试会话和 active/break 状态set-debugger-breakpoint- 启用或禁用调试断点send-debugger-message- 向运行中的游戏调试器发送自定义消息toggle-debugger-profiler- 在活动会话中切换 EngineProfiler 通道get-debugger-messages- 读取 bridge 捕获的运行时自定义消息add-debugger-capture-prefix- 捕获更多 EngineDebugger 消息前缀get-debug-stack-frames- 读取已暂停会话捕获到的脚本栈帧get-debug-stack-variables- 读取指定栈帧的局部变量、成员变量和全局变量install-runtime-probe- 向当前场景添加 MCP 运行时探针节点remove-runtime-probe- 从当前场景移除 MCP 运行时探针节点request-debug-break- 请求运行时探针进入 Godot 调试暂停循环send-debug-command- 向已暂停会话发送 step/next/out/continue/stack 调试命令get-runtime-info- 通过探针查询运行时指标(FPS、节点数等)get-runtime-scene-tree- 从运行中的游戏读取实时场景树inspect-runtime-node- 检查运行时节点及其可序列化属性update-runtime-node-property- 修改运行时节点上的属性call-runtime-node-method- 调用运行时节点上的方法evaluate-runtime-expression- 在运行中的游戏计算 GDScript 表达式await-runtime-condition- 轮询运行时表达式直到为真或超时assert-runtime-condition- 断言运行时表达式在超时内变为真get-debug-threads- 返回 DAP 样式调试器线程get-debug-state-events- 读取记录的调试器状态转换get-debug-output- 读取分类的运行时调试器输出get-debug-scopes- 将栈变量分组为 DAP 风格的 scopeget-debug-variables- 解析 DAP 风格的变量引用expand-debug-variable- 通过 scope 和路径展开调试变量evaluate-debug-expression- 在调试上下文评估表达式debug-step-into / debug-step-over / debug-step-out / debug-continue- 调试执行控制debug-step-into-and-wait / debug-step-over-and-wait / debug-step-out-and-wait / debug-continue-and-wait- 调试执行控制(等待状态)await-debugger-state- 检查调试器会话执行状态get-runtime-performance-snapshot- 捕获运行时性能快照get-runtime-memory-trend- 捕获运行时内存趋势create-runtime-node- 在运行中游戏创建节点delete-runtime-node- 从运行中游戏删除节点simulate-runtime-input-event- 注入结构化 InputEventsimulate-runtime-input-action- 注入 InputEventActionlist-runtime-input-actions- 列出运行时 InputMap 动作upsert-runtime-input-action- 创建或更新运行时 InputMap 动作remove-runtime-input-action- 移除运行时 InputMap 动作list-runtime-animations- 列出运行时动画play-runtime-animation- 播放运行时动画stop-runtime-animation- 停止运行时动画get-runtime-animation-state- 获取运行时动画播放状态get-runtime-animation-tree-state- 获取运行时 AnimationTree 状态set-runtime-animation-tree-active- 启用/禁用 AnimationTreetravel-runtime-animation-tree- 转移运行时动画状态机get-runtime-material-state- 解析运行时节点材质绑定get-runtime-theme-item- 解析运行时 Control 主题项set-runtime-theme-override- 应用运行时主题覆盖clear-runtime-theme-override- 移除运行时主题覆盖get-runtime-shader-parameters- 列出运行时着色器参数set-runtime-shader-parameter- 更新运行时着色器 uniformlist-runtime-tilemap-layers- 列出运行时 TileMap 层get-runtime-tilemap-cell- 获取运行时 TileMap 单元格数据set-runtime-tilemap-cell- 写入/擦除运行时 TileMap 单元格list-runtime-audio-buses- 列出运行时音频总线get-runtime-audio-bus- 获取运行时音频总线状态update-runtime-audio-bus- 更新运行时音频总线get-runtime-screenshot- 捕获运行时视口截图
Project (3 核心 + 23 高级)
get-project-info- 获取项目信息get-project-settings- 获取项目设置list-project-resources- 列出项目资源create-resource- 创建新资源get-project-structure- 获取项目目录结构list-project-tests- 发现和列出可运行的项目测试run-project-test- 运行单个项目测试run-project-tests- 运行多个项目测试list-project-input-actions- 列出项目 InputMap 动作upsert-project-input-action- 创建或更新项目 InputMap 动作remove-project-input-action- 移除项目 InputMap 动作list-project-autoloads- 列出项目自动加载条目list-project-global-classes- 列出项目全局脚本类get-class-api-metadata- 获取 ClassDB 或全局类 API 元数据inspect-csharp-project-support- 检查 C# 项目支持文件compare-render-screenshots- 比较两张截图并报告差异inspect-tileset-resource- 检查 TileSet 资源reimport-resources- 通过导入管线重新导入资源get-import-metadata- 获取资源导入元数据get-resource-uid-info- 检查 ResourceUID 映射fix-resource-uid- 确保资源有持久化 UIDget-resource-dependencies- 列出资源依赖scan-missing-resource-dependencies- 查找破损的依赖引用scan-cyclic-resource-dependencies- 查找循环依赖链detect-broken-scripts- 扫描脚本语法错误audit-project-health- 运行项目健康审计
🔒 安全建议
- ✅ 生产环境:始终启用身份验证(
auth_enabled = true) - ✅ 令牌:使用强令牌(≥16 个字符,包含字母、数字、特殊字符)
- ✅ 存储:不要将令牌提交到版本控制
- ⚠️ 远程访问:使用 HTTPS(TLS/SSL)进行网络访问
📋 要求
- Godot Engine 4.x(推荐 4.5 或更高版本)
- 无额外依赖(原生实现)
📖 文档
详细文档请查看 docs/current/ 文件夹:
🤝 贡献
欢迎贡献!请随时提交 Pull Request。
📄 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
👤 作者
yurineko73
🙏 致谢
- Godot 引擎团队带来的出色游戏引擎
- 模型上下文协议 (MCP) 规范
- Anthropic 的 Claude AI 启发了此集成
注意:这是一个社区插件,与 Godot Engine 或 Anthropic 无官方关联。