Files
cc-3-8-x-mcp/AGENTS.md
T
furao ea364d3470 [cc-3-8-x-mcp] 重构: 改为 Gateway 私有 Editor Bridge
改了什么:移除项目级 MCP Server 与 universal-mcp-sdk,新增带随机 token 的本机 Editor Bridge、Gateway v2 注册和分级超时转发。

为什么:MCP 协议与多项目路由统一交给全局 Gateway,项目扩展只保留 Cocos Editor.Message 和离线 CLI 职责。

影响范围:扩展启动与面板、编辑器注册、router 转发、安全边界、使用文档及自动化测试。
2026-08-14 12:10:09 +08:00

5.5 KiB
Raw Blame History

AGENTS.md

本文是 cc-3-8-x-mcp 的 agent 使用规则。它只支持 Cocos Creator 3.8.x;项目自己的预览参数、业务本地服地址、测试账号和验证步骤写在项目文档里。

允许入口

使用本插件时,只允许从下面这些入口进入:

入口 用途
全局 cocos-mcp-gateway 注入的项目 tool scene / asset-db / preview / local 域操作
cocos-mcp-cli offline 命令 .prefab / .anim 文件查询和修改
Playwright / Chrome 浏览器里真实游戏页面的交互验证
.dev/refreshrestart-package 重启本扩展代码

项目扩展的 /bridge 是 Gateway 私有协议,agent 和其他 MCP 客户端不得直接调用、不得直接读取或复制注册记录中的 token。其它入口不作为本插件使用路径。

绑定当前项目

同机可能同时打开多个 Cocos 项目。agent 必须先按项目根目录绑定 MCP 实例,再执行后续操作。

实例注册文件:

~/.cocos-mcp/editors/*.json

绑定规则:

  1. 扫描 ~/.cocos-mcp/editors/*.json
  2. 只保留 projectPath 与当前项目根目录一致的记录。
  3. 校验 pid 仍存活。
  4. 多个匹配时取 updatedAt 最新的记录。
  5. 只接受 transport=editor-bridgegatewayApiVersion>=2bridgeApiVersion=1 的记录。
  6. 后续操作只调用 Gateway 暴露的 <project>__<tool>,不直接请求记录中的 /bridge URL。
  7. 缺失或格式不正确的 authToken 视为无效注册记录;token 不写日志、不贴到回复里。

快速确认脚本:

python3 - <<'PY'
import glob
import json
import os
from pathlib import Path

def find_project_root(start):
    cur = Path(start).resolve()
    for item in [cur, *cur.parents]:
        if (item / 'assets').is_dir() and (item / 'settings').is_dir() and (item / 'extensions').is_dir():
            return str(item)
    return str(cur)

PROJECT = os.environ.get('PROJECT_ROOT') or find_project_root(os.getcwd())
items = []

for path in glob.glob(os.path.expanduser('~/.cocos-mcp/editors/*.json')):
    try:
        with open(path, 'r', encoding='utf-8') as f:
            data = json.load(f)
        if os.path.realpath(data.get('projectPath', '')) != os.path.realpath(PROJECT):
            continue
        if data.get('transport') != 'editor-bridge':
            continue
        if data.get('gatewayApiVersion', 0) < 2 or data.get('bridgeApiVersion') != 1:
            continue
        os.kill(int(data['pid']), 0)
        items.append((data.get('updatedAt', ''), path, data))
    except Exception:
        pass

for _, path, data in sorted(items)[-3:]:
    print(path, data.get('url'), data.get('previewUrl') or '')
PY

Gateway Tool

使用 Gateway 暴露的带项目名前缀 tool:

forest__preview_query_url
forest__asset_reimport
forest__preview_refresh_and_reload

如果当前 agent 没注入这些 tool,先修复或注册全局 cocos-mcp-gateway。禁止把项目 /bridge 当成 HTTP MCP fallback。

预览 URL

预览 URL 只允许来自:

来源 说明
preview_query_url 首选
local_get_status 查预览端口、Bridge 状态、编辑器状态
项目文档明确声明的只读兜底文件 仅在 Gateway 不通时使用

没有项目文档声明时,不读取旧 .dev/preview-url,不猜 localhost:7456

浏览器验证必须在 Gateway tool 返回的 URL 上追加唯一 tid

<preview_url>/?tid=<unique-id>

已有 query 时用 &tid=。本地服务器、测试账号、业务参数由项目文档声明。

资源修改后刷新

offline CLI 直接写磁盘,Cocos 编辑器不会自动感知。改完 .prefab / .anim / .json 等资源后,使用当前项目 Gateway tool 刷新:

修改范围 后续动作
单个资源 asset_reimport 指定 db:// 路径
多个资源或不确定依赖 asset_refreshpreview_refresh_and_reload
扩展代码 .dev/refreshrestart-package

.dev/refresh 只承载 restart-package

CLI 与 MCP 分工

操作 推荐入口
查 prefab 节点树 / 组件字段 prefab_querycocos-mcp-cli query
批量改 prefab prefab_edit / prefab_batchcocos-mcp-cli batch
.anim 结构 cocos-mcp-cli anim
查 AssetDB 资源信息 asset_query_assets / asset_query_info
重导资源 asset_reimport
查场景运行态节点 scene_query_node_tree / scene_query_node
调组件方法或改运行态属性 scene_execute_component_method / scene_set_property
拿预览 URL preview_query_url
刷新预览 preview_refresh_and_reload

结构化资源文件优先走 CLI 或 MCP tool。纯文本说明文档才直接编辑。

浏览器验证

Gateway tool 负责拿 URL、重导资源、刷新预览;浏览器里真实业务页面的交互验证交给 Playwright / Chrome。

推荐流程:

preview_query_url
browser_navigate -> <preview_url>/?tid=<unique-id>
browser_evaluate
browser_take_screenshot

失败处理

按顺序排查:

  1. 没有匹配 projectPath 的注册文件:确认 Cocos 编辑器已打开当前项目,并且扩展已启用。
  2. pid 不存活:忽略该注册文件,等编辑器重新注册。
  3. Editor Bridge 不通:用 .dev/refreshrestart-package 重启扩展;仍不通就重启编辑器。
  4. Gateway tool 返回的预览 URL 为空:确认编辑器预览已启动。
  5. 工具行为异常或文档与实际不一致:反馈插件问题,由用户决定是否修插件本身。