返回市场
戈多特4运行时MCP

戈多特4运行时MCP

作者:MingHuiLiu2 星标更新:2025-11-15

项目介绍

Godot MCP Server v5.0

适用于Godot 4+C#项目的完整的MCP(模型上下文协议)服务器,允许AI助手通过MCP协议获取和修改游戏运行时信息,包括场景树查询、信号系统调试、增强的日志分析等功能。

🆕 V5.0 新特性

  • 简化场景树查询 -仅返回结构和类型,减少响应大小90%
  • 完整的信号系统 -9个信号工具,支持监控、连接和分析
  • 增强的日志系统 -循环缓冲区+文件持久化+多维过滤
  • 48个MCP工具 -涵盖场景树、属性、资源、信号和日志

🚀 快速开始

新手? 查看5分钟快速入门指南

文档导航:

✨ 核心功能

🌲 场景树查询 (19个工具)

  • 完整/简化场景树获取
  • 模糊搜索(名称、类型、组)
  • 节点上下文(父节点、兄弟节点、子节点)
  • 多级祖先追踪
  • 子树查询和统计

⚡ 信号系统 (9个工具)

  • 查询节点信号列表
  • 查看信号连接关系
  • 动态连接/断开信号
  • 手动触发信号
  • 实时监控信号事件
  • 信号事件历史

📊 日志系统 (6个工具)

  • 循环缓冲区区域(最后1000条记录)
  • 自动溢出到文件
  • 多维过滤(级别、关键词、时间)
  • 日志统计和导出
  • 自定义日志标签

🎮 运行时控制

  • 节点属性读写
  • 创建/删除节点
  • 场景加载/卸载
  • C#代码执行
  • 方法调用

🔍 调试工具

  • 性能统计
  • 资源信息
  • 全局变量
  • 截图功能

📦 项目结构

Godot-Mcp/
├── McpServer/              # MCP 服务器 (.NET 9.0)
│   ├── Tools/              # 48 个 MCP 工具
│   │   ├── SceneTools.cs   # 场景树工具 (13 个)
│   │   ├── PropertyTools.cs # 属性工具 (4 个)
│   │   ├── ResourceTools.cs # 资源工具 (5 个)
│   │   ├── DebugTools.cs   # 调试工具 (12 个)
│   │   └── SignalTools.cs  # 信号工具 (9 个) ✨
│   ├── Services/           
│   │   ├── GodotClient.cs  # 强类型 HTTP 客户端
│   │   └── IGodotApi.cs    # Refit API 接口
│   └── Models/
│       └── GodotApiModels.cs # 所有请求/响应类型
├── GodotPlugin/            # Godot HTTP 服务器
│   └── McpClient.cs        # 48 个 HTTP 端点实现 ✨
├── test-godot-api.http     # HTTP 测试文件
├── test-new-features.http  # 新功能测试 ✨
└── 文档/                   # 7 个 Markdown 文档

🛠️ 安装和使用

1. 构建MCP服务器

cd McpServer
dotnet build

2. 配置VSCode Copilot

在VSCode设置中配置MCP服务器:

{
  "github.copilot.chat.mcp.enabled": true,
  "github.copilot.chat.mcp.servers": {
    "godot": {
      "command": "dotnet",
      "args": ["run", "--project", "/path/to/Godot-Mcp/McpServer"]
    }
  }
}

3. 在Godot项目中安装插件

  1. GodotPlugin/McpClient.cs 翻译成英文并复制到你的Godot项目中
  2. 在项目设置中添加为自动加载:
    • 名称:McpClient
    • 路径:res://McpClient.cs

4. 运行游戏

启动游戏后,HTTP服务器会自动启动 http://127.0.0.1:7777/,AI助手可以通过MCP协议与游戏互动。

📝 MCP工具概述

场景树工具 (13个)

  • get_scene_tree -获取完整的场景树(包括属性、方法和信号)
  • get_scene_tree_simple - ✨ 获取简化的场景树(仅结构和类型)
  • get_node_info -获取详细的节点信息
  • get_node_children -获取直接子节点列表
  • get_node_parent -检索父节点信息
  • find_nodes_by_type -按类型查找节点
  • find_nodes_by_name -按名称模糊搜索
  • find_nodes_by_group -按组查找节点
  • search_nodes -组合条件搜索(名称+类型+组)
  • get_node_ancestors -获取多层父链
  • get_node_context -检索节点上下文(父节点、兄弟节点、子节点)
  • get_node_subtree -获取子树
  • node_exists -检查节点是否存在
  • get_scene_tree_stats -获取场景树统计

信号工具 (9个) ✨

  • get_node_signals -获取节点的所有信号
  • get_signal_connections -检查信号连接状态
  • connect_signal -将信号连接到方法
  • disconnect_signal -断开信号连接
  • emit_signal -传输信号(用于测试目的)
  • start_signal_monitoring -开始监控信号事件
  • stop_signal_monitoring -停止监控
  • get_signal_events -获取信号事件历史
  • clear_signal_events -清除信号事件

日志工具 (6个) ✨

  • get_logs -检索最近的日志
  • get_logs_filtered -过滤查询日志(级别、关键词、时间)
  • get_log_stats -获取日志统计
  • export_logs -导出日志到文件
  • clear_logs -清除日志
  • add_custom_log -添加自定义日志标签

属性工具 (4个)

  • get_property -获取节点属性值
  • set_property -设置节点属性值
  • list_properties -列出节点的所有属性
  • list_methods -列出节点的所有方法

方法调用工具 (2个)

  • call_method -调用节点方法
  • execute_csharp -执行C#代码片段

资源工具 (5个)

  • list_resources -列出资源目录
  • load_resource -加载资源
  • get_resource_info -获取资源的详细信息
  • get_global_variables -获取全局变量
  • create_node -创建新节点

调试工具 (9个)

  • delete_node -删除节点
  • load_scene -加载场景
  • get_performance_stats -获取性能统计
  • take_screenshot -截图
  • get_time -获取游戏时间

🎯 典型使用场景

1. 调试UI不更新问题

AI: 检查玩家血量信号是否连接
→ get_node_signals (查看 Player 信号)
→ get_signal_connections (检查 health_changed 连接)
→ start_signal_monitoring (开始监听)
→ [玩家受伤]
→ get_signal_events (查看事件)
→ 分析: 信号触发了,但 UI 更新方法有 bug

2. 性能分析

AI: 游戏卡顿排查
→ get_scene_tree_simple (快速浏览场景结构)
→ add_custom_log ("性能测试开始")
→ get_performance_stats (记录基线)
→ [运行游戏 5 分钟]
→ get_logs_filtered (level=error, 查找错误)
→ export_logs (导出完整报告)
→ 分析: 发现内存泄漏

3. 寻找未知节点

AI: 找到敌人节点修改血量
→ search_nodes (namePattern="enemy", caseSensitive=false)
→ 找到 /root/Main/Enemies/Enemy1
→ get_node_context (查看上下文)
→ set_property (修改 health 属性)
→ add_custom_log ("修改敌人血量")

🔧 技术架构

V5.0 架构图

VSCode Copilot
    ↓ stdio (MCP Protocol)
MCP Server (.NET 9.0)
    ├── 48 个 MCP 工具 (SceneTools, SignalTools, DebugTools...)
    ├── GodotClient (Refit 强类型 HTTP 客户端)
    └── IGodotApi (48 个 HTTP 端点定义)
        ↓ HTTP POST
Godot HTTP Server (127.0.0.1:7777)
    ├── 请求队列 (线程安全)
    ├── 主线程处理 (_Process)
    ├── 环形日志缓冲区 (1000 条)
    ├── 信号事件监听器
    └── 场景树 API (Godot Runtime)

核心特性

  • 完全强类型 -工具 → 客户端 → API → Godot 全链路类型安全
  • 线程安全 -请求队列+主线程执行场景树操作
  • 代理友好 -模糊搜索、简化响应、上下文查询
  • 内存高效 -循环缓冲区+文件溢出
  • 实时监控 -信号事件捕获+日志跟踪

📊 技术栈

  • .NET 9.0 -MCP服务器运行时
  • Godot 4.x + C# -游戏引擎
  • ModelContextProtocol SDK 0.4.0 -官方Microsoft MCP实现
  • Refit 8.0.0 -类型安全HTTP客户端
  • HTTP REST -通信协议
  • JSON -数据序列化

📈 项目统计

  • 48个MCP工具 (场景树13+信号9+日志6+属性4+方法2+资源5+调试9)
  • 48个HTTP端点 (完全对应)
  • 7个文档文件 (总计3000+行)
  • 2000+行代码 (C# + Godot)

许可证

MIT许可证


📋 项目状态

V5.0 生产就绪 -一个完整的调试系统,包括简化的查询、信号监控和增强的日志

完成度: 100% -所有功能均已实现并成功编译

查看项目完成总结了解详细的实施清单。