使用说明
Godot资源UID MCP服务器和插件
一个包含Godot 4编辑器插件和TypeScript MCP(模型上下文协议)服务器的monorepo,允许AI代理生成和管理有效的Godot uid:// 通过TCP与正在运行的Godot编辑器实例通信。该系统智能地缓存资源路径的UID,并重用现有的UID。
📦 存储库结构
/
├── godot_plugin/ # Godot 4 Addon
│ └── addons/
│ └── lpenguin-mcp-server/
│ ├── plugin.cfg
│ └── mcp_bridge.gd
├── mcp_server/ # TypeScript MCP Server (Published to NPM)
│ ├── src/
│ ├── tests/
│ └── package.json
├── package.json # Root workspace config
└── .github/workflows/ # Publishing Workflow
🚀 快速开始
1.安装Godot插件
- 复制
godot_plugin/addons/lpenguin-mcp-server/将文件夹放入Godot项目的addons/目录 - 打开您的Godot项目
- 首选 项目>项目设置>插件
- 启用 MCP电桥 插件
- TCP服务器将在端口上自动启动 8085
2.使用MCP服务器
MCP服务器可以通过以下方式运行 npx 无需安装:
npx @lpenguin/godot-mcp
或者全局安装:
npm install -g @lpenguin/godot-mcp
godot-mcp
🔧 运作原理
Godot插件(TCP服务器)
Godot插件创建了一个TCP服务器,该服务器在端口8085上监听JSON命令:
请求格式:
{
"command": "get_path_uid",
"args": {
"path": "res://scenes/player.tscn"
}
}
响应格式:
{
"status": "success",
"uid": "uid://dmbxm1qp5555x"
}
该插件使用Godot的内置 ResourceUID 带智能缓存的API:
# Check if UID already exists for this path
if path_to_uid.has(path):
return path_to_uid[path] # Return cached UID
else:
var cached_uid = ResourceUID.path_to_uid(path)
if cached_uid != path: # Path has existing UID
return cached_uid
else: # Generate new UID
var new_id = ResourceUID.create_id()
var uid_string = ResourceUID.id_to_text(new_id)
ResourceUID.add_id(new_id, path)
path_to_uid[path] = uid_string
return uid_string
MCP服务器(TCP客户端)
MCP服务器提供 generate_godot_uid 该工具:
- 接受a
path参数(例如。,"res://scenes/player.tscn") - 连接到
localhost:8085通过TCP - 发送
get_path_uid带路径的命令 - 接收并返回生成或缓存的UID字符串
- 优雅地处理错误(连接被拒绝、超时、数据格式错误)
🧪 发展
先决条件
- Node.js 20+
- npm
- Godot 4.x(用于测试插件)
设置
# Install dependencies
npm install
# Build the MCP server
npm run build
# Run tests
npm run test
没有Godot的测试
测试套件包括一个模拟Godot插件的模拟TCP服务器:
cd mcp_server
npm test
测试场景包括:
- ✅ UID生成成功
- ❌ 连接被拒绝(Godot未运行)
- ❌ JSON响应格式错误
- ❌ 超时处理
📤 出版
该存储库包括一个用于发布到NPM的GitHub Actions工作流:
手工出版
首选 操作>发布到NPM>运行工作流
选项:
- 版本:留空以发布当前
package.json版本,或指定:- 学期:
1.0.1,2.0.0 - 碰撞类型:
major,minor,patch
- 学期:
工作流程步骤
- 构建与测试:编译TypeScript并运行集成测试
- 版本颠簸 (可选):运行
npm version并创建一个git标签 - 发布:上传到NPM,可供公众访问
- GitHub发布 (可选):创建带有版本标记的版本
必需的秘密
将这些秘密添加到您的GitHub存储库中:
NPM_TOKEN:具有发布权限的NPM身份验证令牌
🛠️ 配置
Godot插件
要更改TCP端口,请编辑 mcp_bridge.gd:
var server_port: int = 8085 # Change this value
MCP服务器
MCP服务器连接到 localhost:8085 默认情况下。要自定义,请执行以下操作:
const client = new GodotClient('localhost', 8085, 2000);
📝 用法示例
使用克劳德桌面
添加到您的Claude Desktop配置中:
{
"mcpServers": {
"godot": {
"command": "npx",
"args": ["@lpenguin/godot-mcp"]
}
}
}
然后在克劳德:
"Generate a Godot ResourceUID for res://scenes/player.tscn"
克劳德将使用 generate_godot_uid 工具并返回有效 uid:// 弦。相同的路径将始终返回相同的UID。
🤝 贡献
欢迎投稿!拜托:
- 复刻仓库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
📄 许可证
麻省理工学院
🐛 故障排除
“无法连接到Godot编辑器”
- 确保Godot编辑器正在运行
- 验证MCP网桥插件是否已启用
- 检查端口8085是否未被防火墙阻止
“连接超时”
- Godot编辑器可能已冻结或正忙
- 尝试重新启动Godot编辑器
- 增加超时时间
GodotClient构造函数
测试失败
# Make sure no other service is using port 8085
lsof -i :8085
# Run tests with verbose output
npm test -- --verbose
