接收世界变化
当用户放置、删除或重置内容时,把事件发送到你的本地服务。
使用 WebhookDeveloper 功能把浏览器中的世界连接到本机脚本、自动化工具和 AI 客户端。你不需要修改游戏代码,只需要运行示例服务并粘贴对应地址。
当用户放置、删除或重置内容时,把事件发送到你的本地服务。
使用 Webhook从终端发送命令,在指定坐标放置树木、房屋或清空世界。
使用 SSE Relay把世界操作暴露成 MCP 工具,供支持 MCP 的 AI 客户端调用。
使用 MCP Bridge先生成一个不可猜测的 Receiver Token,并妥善保存输出:
openssl rand -hex 24
下方的 receiver-token 只是占位符,请全部替换为刚生成的值。
打开终端,在项目根目录运行:
TINYWORLD_RECEIVER_TOKEN='receiver-token' \
node plugins/examples/webhook-receiver.js
然后在 Developer 中填写并保存:
http://localhost:8787/webhook回到编辑器放置或删除物体。查看收到的事件:
curl -H 'Authorization: Bearer receiver-token' \
http://localhost:8787/events
成功标志:终端或 /events 返回包含 cell.set 等事件的 JSON。
再次运行 openssl rand -hex 24,生成一个与 Receiver Token 不同的 Relay Token。下方的 matching-relay-token 只是占位符。
启动带 Token 的本地 Relay:
TINYWORLD_RELAY_TOKEN='matching-relay-token' \
node plugins/examples/sse-command-relay.js
在 Developer 中填写并保存:
http://localhost:8788/sse?token=matching-relay-token保持浏览器页面打开,再开一个终端发送命令:
TINYWORLD_RELAY_TOKEN='matching-relay-token' \
node plugins/examples/send-command.js place \
--x 2 --z 2 --kind tree --terrain grass
成功标志:世界的坐标 (2, 2) 出现一棵树。
先完成 SSE Relay 配置,并保持浏览器编辑器标签页打开。如果 AI 还需要读取编辑事件,再启动 Webhook Receiver。随后把以下配置加入支持 MCP 的客户端,并把脚本路径改成你的真实绝对路径:
{
"mcpServers": {
"metaworldos-world-builder": {
"command": "node",
"args": ["/你的绝对路径/novelhub-drama/plugins/examples/mcp-stdio-bridge.js"],
"env": {
"TINYWORLD_RELAY_URL": "http://localhost:8788/command",
"TINYWORLD_WEBHOOK_URL": "http://localhost:8787",
"TINYWORLD_RELAY_TOKEN": "matching-relay-token",
"TINYWORLD_RECEIVER_TOKEN": "receiver-token"
}
}
}
}
如果只需要控制世界、不需要读取 Webhook 事件,可以删除 TINYWORLD_WEBHOOK_URL 和 TINYWORLD_RECEIVER_TOKEN。保存配置后,按照你的 MCP 客户端说明重新加载服务器配置。
成功标志:AI 客户端能列出 tinyworld_* 工具,并能在浏览器世界中执行操作。
TINYWORLD_RELAY_TOKEN 是否与 Relay 启动时的值一致。它只用于 :8788/sse 和 :8788/command。:8787/events、:8787/latest 的 Bearer Token,以及 MCP 的 TINYWORLD_RECEIVER_TOKEN。不要把它与 Relay Token 混用。:8787/webhook,读取用 :8787/events,浏览器 SSE 用 :8788/sse?token=...,CLI/MCP 命令用 :8788/command。http://localhost:3000。其他地址需在启动 Relay/Receiver 时设置,例如 TINYWORLD_ALLOWED_ORIGIN='http://127.0.0.1:3000' ...,值必须是编辑器的协议、主机和端口;修改后重启服务。