docs: replace "Unity MCP" with "MCP for Unity" in all text strings (#314)
parent
6b0ee30a86
commit
3a9ec4f1a6
|
|
@ -97,7 +97,7 @@ namespace MCPForUnity.Editor.Dependencies.PlatformDetectors
|
||||||
- Run: curl -LsSf https://astral.sh/uv/install.sh | sh
|
- Run: curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||||
- Or download from: https://github.com/astral-sh/uv/releases
|
- Or download from: https://github.com/astral-sh/uv/releases
|
||||||
|
|
||||||
3. MCP Server: Will be installed automatically by Unity MCP Bridge
|
3. MCP Server: Will be installed automatically by MCP for Unity
|
||||||
|
|
||||||
Note: Make sure ~/.local/bin is in your PATH for user-local installations.";
|
Note: Make sure ~/.local/bin is in your PATH for user-local installations.";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ namespace MCPForUnity.Editor.Dependencies.PlatformDetectors
|
||||||
- Curl: curl -LsSf https://astral.sh/uv/install.sh | sh
|
- Curl: curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||||
- Homebrew: brew install uv
|
- Homebrew: brew install uv
|
||||||
|
|
||||||
3. MCP Server: Will be installed automatically by Unity MCP Bridge
|
3. MCP Server: Will be installed automatically by MCP for Unity Bridge
|
||||||
|
|
||||||
Note: If using Homebrew, make sure /opt/homebrew/bin is in your PATH.";
|
Note: If using Homebrew, make sure /opt/homebrew/bin is in your PATH.";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ namespace MCPForUnity.Editor.Dependencies.PlatformDetectors
|
||||||
- Run: powershell -ExecutionPolicy ByPass -c ""irm https://astral.sh/uv/install.ps1 | iex""
|
- Run: powershell -ExecutionPolicy ByPass -c ""irm https://astral.sh/uv/install.ps1 | iex""
|
||||||
- Or download from: https://github.com/astral-sh/uv/releases
|
- Or download from: https://github.com/astral-sh/uv/releases
|
||||||
|
|
||||||
3. MCP Server: Will be installed automatically by Unity MCP Bridge";
|
3. MCP Server: Will be installed automatically by MCP for Unity Bridge";
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool TryValidatePython(string pythonPath, out string version, out string fullPath)
|
private bool TryValidatePython(string pythonPath, out string version, out string fullPath)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
namespace MCPForUnity.Editor.Services
|
namespace MCPForUnity.Editor.Services
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Service for controlling the Unity MCP Bridge connection
|
/// Service for controlling the MCP for Unity Bridge connection
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IBridgeControlService
|
public interface IBridgeControlService
|
||||||
{
|
{
|
||||||
|
|
@ -21,12 +21,12 @@ namespace MCPForUnity.Editor.Services
|
||||||
bool IsAutoConnectMode { get; }
|
bool IsAutoConnectMode { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Starts the Unity MCP Bridge
|
/// Starts the MCP for Unity Bridge
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void Start();
|
void Start();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Stops the Unity MCP Bridge
|
/// Stops the MCP for Unity Bridge
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void Stop();
|
void Stop();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,12 +28,12 @@ namespace MCPForUnity.Editor.Services
|
||||||
bool CheckClientStatus(McpClient client, bool attemptAutoRewrite = true);
|
bool CheckClientStatus(McpClient client, bool attemptAutoRewrite = true);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Registers Unity MCP with Claude Code CLI
|
/// Registers MCP for Unity with Claude Code CLI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void RegisterClaudeCode();
|
void RegisterClaudeCode();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unregisters Unity MCP from Claude Code CLI
|
/// Unregisters MCP for Unity from Claude Code CLI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void UnregisterClaudeCode();
|
void UnregisterClaudeCode();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
Privacy-focused, anonymous telemetry system for Unity MCP
|
Privacy-focused, anonymous telemetry system for MCP for Unity
|
||||||
Inspired by Onyx's telemetry implementation with Unity-specific adaptations
|
Inspired by Onyx's telemetry implementation with Unity-specific adaptations
|
||||||
|
|
||||||
Fire-and-forget telemetry sender with a single background worker.
|
Fire-and-forget telemetry sender with a single background worker.
|
||||||
|
|
@ -328,7 +328,7 @@ class TelemetryCollector:
|
||||||
"customer_uuid": record.customer_uuid,
|
"customer_uuid": record.customer_uuid,
|
||||||
"session_id": record.session_id,
|
"session_id": record.session_id,
|
||||||
"data": enriched_data,
|
"data": enriched_data,
|
||||||
"version": "3.0.2", # Unity MCP version
|
"version": "3.0.2", # MCP for Unity version
|
||||||
"platform": _platform,
|
"platform": _platform,
|
||||||
"source": _source,
|
"source": _source,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
Telemetry decorator for Unity MCP tools
|
Telemetry decorator for MCP for Unity tools
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import functools
|
import functools
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""
|
"""
|
||||||
Test script for Unity MCP Telemetry System
|
Test script for MCP for Unity Telemetry System
|
||||||
Run this to verify telemetry is working correctly
|
Run this to verify telemetry is working correctly
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -208,7 +208,7 @@ async def read_resource(
|
||||||
if uri in ("unity://spec/script-edits", "spec/script-edits", "script-edits"):
|
if uri in ("unity://spec/script-edits", "spec/script-edits", "script-edits"):
|
||||||
spec_json = (
|
spec_json = (
|
||||||
'{\n'
|
'{\n'
|
||||||
' "name": "Unity MCP - Script Edits v1",\n'
|
' "name": "MCP for Unity - Script Edits v1",\n'
|
||||||
' "target_tool": "script_apply_edits",\n'
|
' "target_tool": "script_apply_edits",\n'
|
||||||
' "canonical_rules": {\n'
|
' "canonical_rules": {\n'
|
||||||
' "always_use": ["op","className","methodName","replacement","afterMethodName","beforeMethodName"],\n'
|
' "always_use": ["op","className","methodName","replacement","afterMethodName","beforeMethodName"],\n'
|
||||||
|
|
|
||||||
|
|
@ -84,19 +84,19 @@ class UnityConnection:
|
||||||
if 'FRAMING=1' in text:
|
if 'FRAMING=1' in text:
|
||||||
self.use_framing = True
|
self.use_framing = True
|
||||||
logger.debug(
|
logger.debug(
|
||||||
'Unity MCP handshake received: FRAMING=1 (strict)')
|
'MCP for Unity handshake received: FRAMING=1 (strict)')
|
||||||
else:
|
else:
|
||||||
if require_framing:
|
if require_framing:
|
||||||
# Best-effort plain-text advisory for legacy peers
|
# Best-effort plain-text advisory for legacy peers
|
||||||
with contextlib.suppress(Exception):
|
with contextlib.suppress(Exception):
|
||||||
self.sock.sendall(
|
self.sock.sendall(
|
||||||
b'Unity MCP requires FRAMING=1\n')
|
b'MCP for Unity requires FRAMING=1\n')
|
||||||
raise ConnectionError(
|
raise ConnectionError(
|
||||||
f'Unity MCP requires FRAMING=1, got: {text!r}')
|
f'MCP for Unity requires FRAMING=1, got: {text!r}')
|
||||||
else:
|
else:
|
||||||
self.use_framing = False
|
self.use_framing = False
|
||||||
logger.warning(
|
logger.warning(
|
||||||
'Unity MCP handshake missing FRAMING=1; proceeding in legacy mode by configuration')
|
'MCP for Unity handshake missing FRAMING=1; proceeding in legacy mode by configuration')
|
||||||
finally:
|
finally:
|
||||||
self.sock.settimeout(config.connection_timeout)
|
self.sock.settimeout(config.connection_timeout)
|
||||||
return True
|
return True
|
||||||
|
|
|
||||||
|
|
@ -299,7 +299,7 @@ MCP for Unity 使用与 Unity 的 C# 脚本绑定的 Python MCP 服务器来实
|
||||||
|
|
||||||
## 📊 遥测和隐私
|
## 📊 遥测和隐私
|
||||||
|
|
||||||
Unity MCP 包含**注重隐私的匿名遥测**来帮助我们改进产品。我们收集使用分析和性能数据,但**绝不**收集您的代码、项目名称或个人信息。
|
MCP for Unity 包含**注重隐私的匿名遥测**来帮助我们改进产品。我们收集使用分析和性能数据,但**绝不**收集您的代码、项目名称或个人信息。
|
||||||
|
|
||||||
- **🔒 匿名**:仅随机 UUID,无个人数据
|
- **🔒 匿名**:仅随机 UUID,无个人数据
|
||||||
- **🚫 轻松退出**:设置 `DISABLE_TELEMETRY=true` 环境变量
|
- **🚫 轻松退出**:设置 `DISABLE_TELEMETRY=true` 环境变量
|
||||||
|
|
|
||||||
|
|
@ -302,7 +302,7 @@ Help make MCP for Unity better!
|
||||||
|
|
||||||
## 📊 Telemetry & Privacy
|
## 📊 Telemetry & Privacy
|
||||||
|
|
||||||
Unity MCP includes **privacy-focused, anonymous telemetry** to help us improve the product. We collect usage analytics and performance data, but **never** your code, project names, or personal information.
|
MCP for Unity includes **privacy-focused, anonymous telemetry** to help us improve the product. We collect usage analytics and performance data, but **never** your code, project names, or personal information.
|
||||||
|
|
||||||
- **🔒 Anonymous**: Random UUIDs only, no personal data
|
- **🔒 Anonymous**: Random UUIDs only, no personal data
|
||||||
- **🚫 Easy opt-out**: Set `DISABLE_TELEMETRY=true` environment variable
|
- **🚫 Easy opt-out**: Set `DISABLE_TELEMETRY=true` environment variable
|
||||||
|
|
@ -354,10 +354,10 @@ MIT License. See [LICENSE](LICENSE) file.
|
||||||
## Unity AI Tools by Coplay
|
## Unity AI Tools by Coplay
|
||||||
|
|
||||||
Coplay has built 2 AI tools for Unity
|
Coplay has built 2 AI tools for Unity
|
||||||
- **Unity MCP** is available freely under the MIT license.
|
- **MCP for Unity** is available freely under the MIT license.
|
||||||
- **Coplay** is a premium Unity AI assistant that sits within Unity and is more than the Unity MCP.
|
- **Coplay** is a premium Unity AI assistant that sits within Unity and is more than the MCP for Unity.
|
||||||
|
|
||||||
(These tools have different tech stacks. See this blog post [comparing Coplay to Unity MCP](https://www.coplay.dev/blog/comparing-coplay-and-unity-mcp).)
|
(These tools have different tech stacks. See this blog post [comparing Coplay to MCP for Unity](https://www.coplay.dev/blog/comparing-coplay-and-unity-mcp).)
|
||||||
|
|
||||||
## Disclaimer
|
## Disclaimer
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Adding Custom Tools to Unity MCP
|
# Adding Custom Tools to MCP for Unity
|
||||||
|
|
||||||
Unity MCP now supports auto-discovery of custom tools using decorators (Python) and attributes (C#). This allows you to easily extend the MCP server with your own tools without modifying core files.
|
MCP for Unity now supports auto-discovery of custom tools using decorators (Python) and attributes (C#). This allows you to easily extend the MCP server with your own tools without modifying core files.
|
||||||
|
|
||||||
Be sure to review the developer README first:
|
Be sure to review the developer README first:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ X:\UnityProject\Library\PackageCache\com.coplaydev.unity-mcp@272123cfd97e
|
||||||
- `tools/stress_mcp.py`
|
- `tools/stress_mcp.py`
|
||||||
|
|
||||||
### 作用
|
### 作用
|
||||||
- 对 Unity MCP bridge 启动 N 个 TCP 客户端(默认端口从 `~/.unity-mcp/unity-mcp-status-*.json` 自动发现)。
|
- 对 MCP for Unity bridge 启动 N 个 TCP 客户端(默认端口从 `~/.unity-mcp/unity-mcp-status-*.json` 自动发现)。
|
||||||
- 发送轻量级帧 `ping` 保活以维持并发。
|
- 发送轻量级帧 `ping` 保活以维持并发。
|
||||||
- 并行地,使用 `manage_script.apply_text_edits` 向目标 C# 文件追加唯一标记注释:
|
- 并行地,使用 `manage_script.apply_text_edits` 向目标 C# 文件追加唯一标记注释:
|
||||||
- `options.refresh = "immediate"` 立即强制导入/编译(触发域重载),以及
|
- `options.refresh = "immediate"` 立即强制导入/编译(触发域重载),以及
|
||||||
|
|
@ -181,7 +181,7 @@ python3 tools/stress_mcp.py \
|
||||||
- 工件:`claude-nl-suite-artifacts` 包含 XML 和 MD。
|
- 工件:`claude-nl-suite-artifacts` 包含 XML 和 MD。
|
||||||
|
|
||||||
### MCP 连接调试
|
### MCP 连接调试
|
||||||
- *在 Unity MCP 窗口(编辑器内)启用调试日志* 以查看连接状态、自动设置结果和 MCP 客户端路径。它显示:
|
- *在 MCP for Unity 窗口(编辑器内)启用调试日志* 以查看连接状态、自动设置结果和 MCP 客户端路径。它显示:
|
||||||
- bridge 启动/端口、客户端连接、严格帧协商和解析的帧
|
- bridge 启动/端口、客户端连接、严格帧协商和解析的帧
|
||||||
- 自动配置路径检测(Windows/macOS/Linux)、uv/claude 解析和显示的错误
|
- 自动配置路径检测(Windows/macOS/Linux)、uv/claude 解析和显示的错误
|
||||||
- 在 CI 中,如果启动失败,作业会尾随 Unity 日志(序列号/许可证/密码/令牌已编辑)并打印套接字/状态 JSON 诊断。
|
- 在 CI 中,如果启动失败,作业会尾随 Unity 日志(序列号/许可证/密码/令牌已编辑)并打印套接字/状态 JSON 诊断。
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ An on-demand stress utility exercises the MCP bridge with multiple concurrent cl
|
||||||
- `tools/stress_mcp.py`
|
- `tools/stress_mcp.py`
|
||||||
|
|
||||||
### What it does
|
### What it does
|
||||||
- Starts N TCP clients against the Unity MCP bridge (default port auto-discovered from `~/.unity-mcp/unity-mcp-status-*.json`).
|
- Starts N TCP clients against the MCP for Unity bridge (default port auto-discovered from `~/.unity-mcp/unity-mcp-status-*.json`).
|
||||||
- Sends lightweight framed `ping` keepalives to maintain concurrency.
|
- Sends lightweight framed `ping` keepalives to maintain concurrency.
|
||||||
- In parallel, appends a unique marker comment to a target C# file using `manage_script.apply_text_edits` with:
|
- In parallel, appends a unique marker comment to a target C# file using `manage_script.apply_text_edits` with:
|
||||||
- `options.refresh = "immediate"` to force an import/compile immediately (triggers domain reload), and
|
- `options.refresh = "immediate"` to force an import/compile immediately (triggers domain reload), and
|
||||||
|
|
@ -181,7 +181,7 @@ We provide a CI job to run a Natural Language Editing suite against the Unity te
|
||||||
- Artifacts: `claude-nl-suite-artifacts` includes XML and MD.
|
- Artifacts: `claude-nl-suite-artifacts` includes XML and MD.
|
||||||
|
|
||||||
### MCP Connection Debugging
|
### MCP Connection Debugging
|
||||||
- *Enable debug logs* in the Unity MCP window (inside the Editor) to view connection status, auto-setup results, and MCP client paths. It shows:
|
- *Enable debug logs* in the MCP for Unity window (inside the Editor) to view connection status, auto-setup results, and MCP client paths. It shows:
|
||||||
- bridge startup/port, client connections, strict framing negotiation, and parsed frames
|
- bridge startup/port, client connections, strict framing negotiation, and parsed frames
|
||||||
- auto-config path detection (Windows/macOS/Linux), uv/claude resolution, and surfaced errors
|
- auto-config path detection (Windows/macOS/Linux), uv/claude resolution, and surfaced errors
|
||||||
- In CI, the job tails Unity logs (redacted for serial/license/password/token) and prints socket/status JSON diagnostics if startup fails.
|
- In CI, the job tails Unity logs (redacted for serial/license/password/token) and prints socket/status JSON diagnostics if startup fails.
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Unity MCP Telemetry
|
# MCP for Unity Telemetry
|
||||||
|
|
||||||
Unity MCP includes privacy-focused, anonymous telemetry to help us improve the product. This document explains what data is collected, how to opt out, and our privacy practices.
|
MCP for Unity includes privacy-focused, anonymous telemetry to help us improve the product. This document explains what data is collected, how to opt out, and our privacy practices.
|
||||||
|
|
||||||
## 🔒 Privacy First
|
## 🔒 Privacy First
|
||||||
|
|
||||||
|
|
@ -38,7 +38,7 @@ Set any of these environment variables to `true`:
|
||||||
# Disable all telemetry
|
# Disable all telemetry
|
||||||
export DISABLE_TELEMETRY=true
|
export DISABLE_TELEMETRY=true
|
||||||
|
|
||||||
# Unity MCP specific
|
# MCP for Unity specific
|
||||||
export UNITY_MCP_DISABLE_TELEMETRY=true
|
export UNITY_MCP_DISABLE_TELEMETRY=true
|
||||||
|
|
||||||
# MCP protocol wide
|
# MCP protocol wide
|
||||||
|
|
@ -175,4 +175,4 @@ Notice:
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*Unity MCP Telemetry is designed to respect your privacy while helping us build a better tool. Thank you for helping improve Unity MCP!*
|
*MCP for Unity Telemetry is designed to respect your privacy while helping us build a better tool. Thank you for helping improve MCP for Unity!*
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ SRC = next((p for p in candidates if p.exists()), None)
|
||||||
if SRC is None:
|
if SRC is None:
|
||||||
searched = "\n".join(str(p) for p in candidates)
|
searched = "\n".join(str(p) for p in candidates)
|
||||||
pytest.skip(
|
pytest.skip(
|
||||||
"Unity MCP server source not found. Tried:\n" + searched,
|
"MCP for Unity server source not found. Tried:\n" + searched,
|
||||||
allow_module_level=True,
|
allow_module_level=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ SRC = next((p for p in candidates if p.exists()), None)
|
||||||
if SRC is None:
|
if SRC is None:
|
||||||
searched = "\n".join(str(p) for p in candidates)
|
searched = "\n".join(str(p) for p in candidates)
|
||||||
pytest.skip(
|
pytest.skip(
|
||||||
"Unity MCP server source not found. Tried:\n" + searched,
|
"MCP for Unity server source not found. Tried:\n" + searched,
|
||||||
allow_module_level=True,
|
allow_module_level=True,
|
||||||
)
|
)
|
||||||
sys.path.insert(0, str(SRC))
|
sys.path.insert(0, str(SRC))
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ SRC = next((p for p in candidates if p.exists()), None)
|
||||||
if SRC is None:
|
if SRC is None:
|
||||||
searched = "\n".join(str(p) for p in candidates)
|
searched = "\n".join(str(p) for p in candidates)
|
||||||
pytest.skip(
|
pytest.skip(
|
||||||
"Unity MCP server source not found. Tried:\n" + searched,
|
"MCP for Unity server source not found. Tried:\n" + searched,
|
||||||
allow_module_level=True,
|
allow_module_level=True,
|
||||||
)
|
)
|
||||||
sys.path.insert(0, str(SRC))
|
sys.path.insert(0, str(SRC))
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import importlib
|
||||||
|
|
||||||
|
|
||||||
def _get_decorator_module():
|
def _get_decorator_module():
|
||||||
# Import the telemetry_decorator module from the Unity MCP server src
|
# Import the telemetry_decorator module from the MCP for Unity server src
|
||||||
mod = importlib.import_module(
|
mod = importlib.import_module(
|
||||||
"MCPForUnity.UnityMcpServer~.src.telemetry_decorator")
|
"MCPForUnity.UnityMcpServer~.src.telemetry_decorator")
|
||||||
return mod
|
return mod
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ SRC = next((p for p in candidates if p.exists()), None)
|
||||||
if SRC is None:
|
if SRC is None:
|
||||||
searched = "\n".join(str(p) for p in candidates)
|
searched = "\n".join(str(p) for p in candidates)
|
||||||
pytest.skip(
|
pytest.skip(
|
||||||
"Unity MCP server source not found. Tried:\n" + searched,
|
"MCP for Unity server source not found. Tried:\n" + searched,
|
||||||
allow_module_level=True,
|
allow_module_level=True,
|
||||||
)
|
)
|
||||||
sys.path.insert(0, str(SRC))
|
sys.path.insert(0, str(SRC))
|
||||||
|
|
|
||||||
|
|
@ -312,7 +312,7 @@ async def reload_churn_task(project_path: str, stop_time: float, unity_file: str
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
ap = argparse.ArgumentParser(
|
ap = argparse.ArgumentParser(
|
||||||
description="Stress test the Unity MCP bridge with concurrent clients and reload churn")
|
description="Stress test MCP for Unity with concurrent clients and reload churn")
|
||||||
ap.add_argument("--host", default="127.0.0.1")
|
ap.add_argument("--host", default="127.0.0.1")
|
||||||
ap.add_argument("--project", default=str(
|
ap.add_argument("--project", default=str(
|
||||||
Path(__file__).resolve().parents[1] / "TestProjects" / "UnityMCPTests"))
|
Path(__file__).resolve().parents[1] / "TestProjects" / "UnityMCPTests"))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue