docs/development/README-DEV-zh.md
| English | 简体中文 |
|---|
从 beta 分支创建 PR。main 分支仅用于稳定版本发布。
在提出重大新功能之前,请先联系讨论——可能已有人在开发,或者该功能曾被讨论过。请通过 issue 或 discussion 进行协调。
开发 Python server 时,最快的迭代方式:
Server/ 目录路径--refresh,确保每次启动 server 时都使用最新代码使用 mcp_source.py 快速切换 Unity 项目的 MCP 包源:
python mcp_source.py
选项:
切换后,在 Unity 中打开 Package Manager 并 Refresh 以重新解析依赖。
MCP for Unity 将工具组织为分组(Core、VFX & Shaders、Animation、UI Toolkit、Scripting Extensions、Testing)。你可以选择性地启用或禁用工具,以控制哪些能力暴露给 AI 客户端——减少上下文窗口占用,让 AI 专注于相关工具。
打开 Window > MCP for Unity,切换到 Tools 标签页。每个工具分组显示为可折叠面板,包含:
[McpForUnityTool] 类后使用)。工具可见性的变更根据传输模式有所不同:
HTTP 模式(推荐):
ReregisterToolsAsync(),通过 WebSocket 将更新后的启用工具列表发送到 Python 服务器。mcp.enable()/mcp.disable() 按分组更新内部工具可见性。tools/list_changed MCP 通知。Stdio 模式:
manage_tools,action 设为 'sync'——这会从 Unity 拉取当前工具状态并同步服务器可见性。manage_tools Meta-Tool服务器暴露一个内置的 manage_tools 工具(始终可见,不受分组限制),AI 可以直接调用:
| Action | 描述 |
|---|---|
list_groups | 列出所有工具分组及其工具和启用/禁用状态 |
activate | 按名称启用一个工具分组(例如 group="vfx") |
deactivate | 按名称禁用一个工具分组 |
sync | 从 Unity 拉取当前工具状态并同步服务器可见性(stdio 模式必需) |
reset | 恢复默认工具可见性 |
切换工具启用/禁用后,MCP 客户端需要获知这些变更:
tools/list_changed 自动传播。大多数客户端会立即更新。如果客户端未更新,请在 Tools 标签页点击 Reconfigure Clients,或前往 Clients 标签页点击 Configure。manage_tools(action='sync'),或重启 MCP 会话。点击 Reconfigure Clients 以使用更新后的配置重新注册所有客户端。所有新功能都应包含测试覆盖。
位于 Server/tests/:
cd Server
uv run pytest tests/ -v
位于 TestProjects/UnityMCPTests/Assets/Tests/。
使用 CLI(需要 Unity 运行且 MCP bridge 已连接):
cd Server
# 运行 EditMode 测试(默认)
uv run python -m cli.main editor tests
# 运行 PlayMode 测试
uv run python -m cli.main editor tests --mode PlayMode
# 异步运行并轮询结果(适用于长时间测试)
uv run python -m cli.main editor tests --async
uv run python -m cli.main editor poll-test <job_id> --wait 60
# 仅显示失败的测试
uv run python -m cli.main editor tests --failed-only
直接使用 MCP 工具(从任意 MCP 客户端):
run_tests(mode="EditMode")
get_test_job(job_id="<id>", wait_timeout=60)
cd Server
uv run pytest tests/ --cov --cov-report=html
open htmlcov/index.html