VRChat Project MCP
VRChat Project MCP
Ein Unity-Editor-MCP-Plugin (Model Context Protocol) für die VRChat-Modellentwicklung.
Über einen integrierten HTTP-Dienst (JSON-RPC 2.0 / SSE) werden 49 Tools für externe KI-Agenten bereitgestellt, die Folgendes abdecken:
Allgemeine Unity-Projektfunktionen: Projektinformationen, Szenen-/Objekt-/Komponentenabfragen und -bearbeitung, Asset-Verwaltung, Konsolenprotokoll-Diagnose (ausgerichtet an den
manage_scene / manage_gameobject / manage_asset / manage_editor-Fähigkeiten ähnlicher unity-mcp-Plugins);VRChat-spezifische Funktionen: Avatar-Detailberichte (Menüs/Parameter/Bindungen/Leistung/Ressourcennutzung/installierte Plugins), Bearbeiten von MA / VRCFury-Komponentenparametern, Erstellen/Kopieren/Bearbeiten/Binden von Emotionsmenüs und Emotionsparameterdateien.
Reine C#-Implementierung, null Abhängigkeiten von Drittanbietern (keine Python / JS / Newtonsoft.Json oder andere Bibliotheken), kompatibel mit Unity 2022.3 und Unity 6 (Windows / macOS / Linux-Editor).
Inhaltsverzeichnis
Related MCP server: unityxclaude
Kernfunktionen
Funktion | Beschreibung |
HTTP-Portdienst | Integrierter handgeschriebener HTTP/1.1-Server (basiert auf |
Null-Abhängigkeiten | Reines C#; JSON-Parsing/Serialisierung als integrierte Implementierung; keine Abhängigkeit von Drittanbieter-Unity-Paketen oder externen Laufzeiten |
Kompatibilität | Unity 2022.3 (.NET Standard 2.1 / C# 9) und Unity 6; nur für den Editor, beeinflusst nicht den Runtime-Build |
Tool-Typ-Kennzeichnung | Jedes Tool ist als |
Berechtigungs-Gate | Das Konfigurationspanel kann zwischen Nur-Lese / Lese-Schreib-Modus umschalten; im Nur-Lese-Modus lehnt der Server alle Schreib-Tools direkt ab (gibt |
Hauptthread-Sicherheit | Alle Unity-API-Aufrufe werden über den Hauptthread-Scheduler ausgeführt, HTTP-Arbeitsthreads berühren niemals direkt die Unity-API |
VRChat ohne Kompilierzeit-Abhängigkeiten | Lese-/Schreibzugriff auf VRCSDK3 / Modular Avatar / VRCFury erfolgt ausschließlich über |
Echtzeit-Protokoll | Das Konfigurationspanel enthält ein Echtzeit-Protokollfeld (Verbindung/Aufruf/Ablehnung/Fehler, farbcodiert) und leitet auch die Unity-Konsole weiter |
Erweiterbar | Attribut-Kennzeichnung ( |
Installation
Methode 1: UPM-Lokales Paket (empfohlen)
Kopieren Sie dieses Repository an einen beliebigen Ort (z. B.
../vrchat-project-mcpneben dem Projekt);Öffnen Sie im Unity-Projekt
Window → Package Manager → + → Add package from disk…und wählen Sie diepackage.jsonin diesem Verzeichnis;Oder fügen Sie direkt in der
Packages/manifest.jsondes Projekts Folgendes hinzu:
{
"dependencies": {
"com.vrchat-project.mcp": "file:../../vrchat-project-mcp"
}
}Methode 2: Direkt in Assets
Kopieren Sie den gesamten Ordner in das Assets/-Verzeichnis des Projekts (z. B. Assets/vrchat-project-mcp/), Unity kompiliert automatisch. package.json kann behalten oder gelöscht werden.
Methode 3: Git-URL (UPM)
Nachdem Sie das Repository auf einen Git-Dienst gepusht haben, wählen Sie im Package Manager Add package from git URL… und geben Sie die Repository-Adresse ein.
Nach der Installation erscheint im Menü Tools → VRChat Project MCP (Konfigurationspanel / Server starten / Server stoppen).
Schnellstart
Öffnen Sie Tools → VRChat Project MCP → Konfigurationspanel;
Bestätigen Sie die Standard-Listenadresse
127.0.0.1:8765und die Betriebsberechtigung (Standard: Lese-Schreib);Klicken Sie auf Server starten (falls „Server nach Editorstart automatisch starten" aktiviert ist, läuft er bereits);
Öffnen Sie im Browser http://127.0.0.1:8765/ für die chinesische Informationsseite,
GET /healthgibt den JSON-Status zurück;Lassen Sie Ihren Agenten über HTTP aufrufen (Beispiele siehe Beispiele für Client-Integration):
POST http://127.0.0.1:8765/mcp
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","clientInfo":{"name":"my-agent","version":"1.0"}}}Dann tools/list für alle Tools, tools/call für die Ausführung. Der Agent kann zuerst mcp.get_status aufrufen, um den Servicemodus und die Werkzeugliste zu erfahren, unity.get_console_logs zur Fehlersuche verwenden und vrc.get_avatar_info für den Avatar-Bericht.
Konfigurationspanel
Tools → VRChat Project MCP → Konfigurationspanel:
Konfigurationselement | Beschreibung |
Listenadresse | Standard |
Port | Standard |
Betriebsberechtigung | Nur-Lese (alle Schreib-Tools ablehnen) / Lese-Schreib (Abfragen und Schreiben erlauben). Änderungen wirken sofort, der Server blockt in Echtzeit |
Automatischer Start | Server nach Editorstart automatisch starten |
Echtzeit-Protokollfeld | Zeigt Verbindungen, Aufrufe, Ablehnungen, Fehler in Echtzeit, mit automatischem Scrollen und Leeren |
Schnellaktionen | Start / Stopp / Neustart / MCP-Endpunkt kopieren / Protokoll leeren |
Änderungen an Listenadresse und Port erfordern einen Klick auf „Neustart"; Änderungen am Berechtigungsmodus wirken sofort. Alle Konfigurationen werden pro Projekt in EditorPrefs gespeichert.
HTTP-Endpunkte und Protokoll
Endpunkt | Methode | Beschreibung |
| POST | Streamable HTTP (MCP 2025-03-26): JSON-Anfrage → JSON-Antwort; wenn der |
| DELETE | Sitzungsende (dieser Dienst ist zustandslos, direkt 200) |
| GET | Traditionelles HTTP+SSE (MCP 2024-11-05): stellt eine lange Verbindung her, sendet das |
| POST | Kanal für Client→Server bei traditionellem SSE-Transport; gibt 202 zurück, Ergebnis wird über SSE-Ereignis zurückgeschrieben |
| GET | Health-Check-JSON (Status/Modus/Anzahl der Tools/Endpunktliste) |
| GET | Chinesische Informationsseite |
Protokoll: MCP über JSON-RPC 2.0, Ablauf
initialize → notifications/initialized → tools/list → tools/call;Unterstützt Batch-Array-Anfragen; Protokollversion kompatibel mit
2024-11-05 / 2025-03-26 / 2025-06-18(Client-Version wird zurückgegeben);Alle Antworten enthalten CORS-Header (
Access-Control-Allow-Origin: *usw.), Browser-Clients (z. B. MCP Inspector) können direkt darauf zugreifen.
Werkzeugliste
Typ-Spalte:
Abfrage= schreibgeschützt sicher;Schreiben= ändert Szene/Asset/Projekt, wird im Nur-Lese-Modus vom Server abgelehnt, vor dem Aufruf wird eine Benutzerbestätigung empfohlen.
MCP-Meta-Tools (mcp)
Tool | Typ | Beschreibung |
| Abfrage | Dienststatus, Zugriffsmodus, vollständige Werkzeugliste (mit Lese-/Schreib-Kennzeichnung) und Endpunkte |
| Abfrage | Assemblys erneut scannen und Werkzeugregistrierung aktualisieren (nach Hinzufügen/Entfernen von Erweiterungen) |
Unity-Allgemein (unity)
Tool | Typ | Beschreibung |
| Abfrage | Basisinformationen zum Projekt (Produktname/Unity-Version/Plattform/Build-Szenen/Asset-Statistik) |
| Abfrage | Liste installierter UPM-Pakete (einschließlich Erkennung VRChat-bezogener Pakete) |
| Abfrage | Prozessspeicher/verwalteter Speicher/Szenenobjekt-Komponentenstatistik/Anzahl der Asset-Typen/aktuelle Auswahl |
| Abfrage | Konsolenprotokolle (Ringpuffer im Speicher + Editor.log-Dateiende), mit Filterung nach Ebene/Schlüsselwort |
| Abfrage | Informationen zur aktiven Szene (Name/Pfad/Objektstatistik/Wurzelobjekte/Top-Komponentenstatistik) |
| Abfrage | Szenenobjekte nach Name/Komponenten-Schlüsselwort filtern (einschließlich inaktiver) |
| Abfrage | Vollständige Objektinformationen (Position/Komponentenliste/Serialisierungsfelder der Komponenten) |
| Abfrage | Aktuell ausgewählte Objekte im Editor |
| Schreiben | Auswahl festlegen (Asset-Pfad / #Instanz-ID / Szenenpfad) |
| Schreiben | Allgemeine Serialisierungsfelder festlegen (Szenenobjekte und Prefab-Assets, automatisch gespeichert), unterstützt |
| Schreiben | Objektposition festlegen (Position/Euler-Rotation/Skalierung) |
| Schreiben | GameObject erstellen (mit optionalem Elternteil und Anfangskomponenten) |
| Schreiben | Szenenobjekt zerstören (Prefab-Assets standardmäßig abgelehnt) |
| Schreiben | Prefab aus Szenenobjekt speichern |
| Schreiben | Prefab in der Szene instanziieren |
| Schreiben | Szene öffnen (optional aktuelle Szene zuerst speichern) |
| Schreiben | Aktuelle Szene speichern |
| Schreiben | Editor-Menüpunkt ausführen (z. B. |
| Abfrage | Assets suchen und auflisten (Typ/Ordner/Schlüsselwort-Filter) |
| Abfrage | Asset-Details (Typ/Größe/Abhängigkeiten/Importer/Prefab-Zusammenfassung) |
| Abfrage | Textdateien im Projekt lesen (nur unter Assets/, Packages/, ProjectSettings/) |
| Schreiben | Assets erstellen (AnimatorController/Material/PhysicMaterial/AnimationClip/beliebiges ScriptableObject) |
| Schreiben | C#-Skriptdatei erstellen (MonoBehaviour-Vorlage, optionaler Namespace) |
| Schreiben | Asset kopieren (bei Namenskonflikt automatisch Nummer hinzufügen) |
| Schreiben | Asset löschen (standardmäßig in den Papierkorb) |
| Schreiben | Ordner unter Assets erstellen (stufenweise) |
| Schreiben | Speichern und Asset-Datenbank aktualisieren |
VRChat-spezifisch (vrc)
工具 | 类型 | 说明 |
| 查询 | Listet Avatare in Szene und Projekt-Prefabs auf (VRCAvatarDescriptor / Legacy-Deskriptoren) |
| 查询 | Vollständige Avatar-Details: Deskriptorfelder/Animations-Layer/Expressions-Menübaum/Expressions-Parameter/Performance-Statistiken/Render-Bone-Statistiken/MA·VRCFury-Plugin-Komponenten —— für Agent-Berichte und Empfehlungen |
| 查询 | Performance-Statistiken (Polygonanzahl/Bones/Materialien/PhysBone/Collider-Anzahl und -Stufe; bevorzugt offizielle SDK-Berechnung, sonst Schätzung nach offiziellen Schwellenwerten mit Kennzeichnung) |
| 查询 | Erkennung von VRChat-bezogenen SDK/Plugin-Versionen (VRCSDK/MA/VRCFury/Poiyomi/DynamicBone/AAO usw.) |
| 查询 | Vollständige serialisierte Parameter des angegebenen Komponententyps (MA/VRCFury/PhysBone usw.) |
| 写入 | Ändert serialisierte Felder beliebiger Komponenten (MA/VRCFury usw.) (Enums per Name, Asset-Referenzen per Asset-Pfad) |
| 查询 | Listet Expressions-Menü-Assets (VRCExpressionsMenu) im Projekt auf |
| 查询 | Liest Menüstruktur (Control-Typ/Parameter/Wert/Icon/Untermenü/Label, rekursiv unterstützt) |
| 写入 | Erstellt neues Expressions-Menü-Asset |
| 写入 | Kopiert Expressions-Menü-Asset |
| 写入 | Fügt hinzu/ändert/löscht Menü-Controls (Button/Toggle/SubMenu/TwoAxisPuppet/FourAxisPuppet/RadialPuppet, inkl. labels und subParameters) |
| 写入 | Bindet Menü-/Parameter-Assets an Avatar-Deskriptor (Szenenobjekte und Prefabs unterstützt) |
| 查询 | Listet Expressions-Parameter-Assets (VRCExpressionParameters) im Projekt auf |
| 查询 | Liest Parameterliste (Name/Typ Int·Float·Bool/Standardwert/ob gespeichert) |
| 写入 | Erstellt neues Expressions-Parameter-Asset |
| 写入 | Kopiert Expressions-Parameter-Asset |
| 写入 | Fügt hinzu/ändert/löscht Expressions-Parameter |
| 查询 | Liest alle Parameter der ModularAvatarParameters-Komponente |
| 写入 | Fügt hinzu/ändert/löscht MA-Parameter (syncType wird per Name gesetzt, ungültige Werte listen die verfügbaren Optionen dieser Version auf) |
Erweiterungsbeispiel (example)
工具 | 类型 | 说明 |
| 查询 | Erweiterungsbeispiel (demonstriert die Registrierung benutzerdefinierter Tools, |
Häufige Aufrufbeispiele
// 读取头像报告
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{
"name":"vrc.get_avatar_info",
"arguments":{"target":"Assets/MyAvatar.prefab","includeStats":true}}}
// 改 MA 参数默认值(写入,只读模式会被拒绝)
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{
"name":"vrc.set_component_property",
"arguments":{"target":"Assets/MyAvatar.prefab","componentType":"ModularAvatarParameters",
"propertyPath":"parameters.Array.data[0].defaultValue","value":1.0}}}
// 给表情菜单加一个开关
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{
"name":"vrc.set_menu_control",
"arguments":{"menuPath":"Assets/Menus/Main.asset","action":"add",
"control":{"name":"开关","type":"Toggle","parameter":"MyParam"}}}}
// 排查控制台报错
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{
"name":"unity.get_console_logs",
"arguments":{"level":"Error","maxLines":50}}}Nur-Lese- / Lese-Schreib-Berechtigungsmodus
Der Server prüft vor der Ausführung jedes Schreib-Tools den aktuellen Zugriffsmodus; im Nur-Lese-Modus wird direkt ein
isError-Ergebnis zurückgegeben:
{
"content": [{"type":"text","text":"当前为【只读】模式,已拒绝写入类工具调用「vrc.set_parameter」。…"}],
"isError": true,
"structuredContent": {"error": {"code":"permission_denied","access":"write","mode":"readonly"}}
}Empfohlene Strategie auf Agent-Seite:
tools/listodermcp.get_statusaufrufen, um_meta.accessjedes Tools zu erhalten; beiwrite-Typ-Tools zuerst den Benutzer bestätigen lassen, keine erneute Blockierung im Client nötig (der Server hat bereits abgesichert).
Client-Integrationsbeispiele
curl (JSON-Modus)
# 握手
curl -s http://127.0.0.1:8765/mcp -H "Content-Type: application/json" -d \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","clientInfo":{"name":"curl","version":"1"}}}'
# 工具清单(注意每个工具 description 前缀的【查询】/【写入】与 _meta.access)
curl -s http://127.0.0.1:8765/mcp -H "Content-Type: application/json" -d \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
# 调用工具
curl -s http://127.0.0.1:8765/mcp -H "Content-Type: application/json" -d \
'{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"mcp.get_status"}}'curl (SSE-Modus)
# Accept 带 text/event-stream 时响应为 SSE 事件流
curl -sN http://127.0.0.1:8765/mcp -H "Accept: text/event-stream" \
-H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'MCP Inspector (Browser)
MCP Inspector öffnen, Transport Streamable HTTP wählen, URL http://127.0.0.1:8765/mcp eintragen (dieser Dienst hat bereits eingebaute CORS-Unterstützung).
Claude Desktop / andere nur-stdio-Clients
Mit einem Community-Bridge-Tool HTTP MCP in stdio umwandeln (das Bridge-Tool läuft clientseitig und beeinträchtigt die Null-Abhängigkeit dieses Plugins nicht):
npx mcp-remote http://127.0.0.1:8765/sseOder einen eigenen Agent direkt per HTTP aufrufen lassen (POST /mcp, siehe JSON-RPC-Ablauf oben).
Erweiterungsleitfaden
Das Plugin bietet drei Erweiterungsebenen, ohne den Plugin-Quellcode ändern zu müssen:
Methode 1: [McpTool]-Attribut (empfohlen)
In jedem Code, der die Assembly VrchatProjectMcp.Core referenziert, öffentliche statische Methoden definieren und mit dem Attribut markieren; beim Plugin-Start oder Aufruf von mcp.refresh_tools wird automatisch gescannt und registriert:
using VrchatProjectMcp.Core.Json;
using VrchatProjectMcp.Core.Mcp;
public static class MyTools
{
// access 必须标明:Query(查询)或 Write(写入,只读模式会被服务端拒绝)
[McpTool("mytools.check_avatar", McpToolAccess.Query, "mytools", "检查头像…")]
public static object Check([McpParam("头像路径")] string path = null)
{
return new JsonObject().Set("ok", true);
}
}Methode 2: IMcpToolProvider-Schnittstelle
Geeignet für Szenarien, in denen die Toolmenge dynamisch bestimmt wird (z. B. "erst nach Erkennung eines bestimmten Plugins die entsprechenden Tools registrieren"):
public sealed class MyProvider : IMcpToolProvider
{
public IEnumerable<McpToolDefinition> RegisterTools()
{
var def = new McpToolDefinition
{
Name = "mytools.dynamic",
Access = McpToolAccess.Write,
Category = "mytools",
Description = "动态注册示例",
};
def.Parameters.Add(new McpParamDefinition { Name = "x", JsonType = "string", Required = true });
def.Handler = args => new JsonObject().Set("done", true);
yield return def;
}
}Ein vollständig lauffähiges Beispiel findet sich in Editor/Tools/Examples/ExampleExtensionTools.cs.
Methode 3: Laufzeit-Registrierung / benutzerdefinierte Ressourcen / benutzerdefinierte HTTP-Endpunkte
// 运行时注册工具
McpToolRegistry.Instance.RegisterTool(myDefinition);
// 注册 MCP 资源(resources/list 可见,Agent 可 resources/read)
McpToolRegistry.Instance.Resources.Add(new McpResourceDefinition
{
Uri = "mcp://my-report",
Name = "我的报告",
ReadHandler = () => new JsonObject().Set("data", 123),
});
// 自定义 HTTP 端点(需服务已启动)
McpServerController.Server?.AddHandler("GET", "/my-endpoint", ctx =>
{
// ctx.BodyText 读取请求体;用 McpServerController.Server.WriteResponse(...) 写响应
});Scan-Bereich: Es werden nur Assemblys gescannt, die die Assembly "VrchatProjectMcp.Core" referenzieren; nicht alle Unity-Typen werden durchlaufen, der Aufwand ist kontrollierbar.
Kompatibilität und bekannte Einschränkungen
Punkt | Beschreibung |
Unity-Version | 2022.3 (.NET Standard 2.1 / C# 9) und Unity 6 (gesamter Code in C#-9-Syntax geschrieben und lokal mit LangVersion 9.0 kompiliert und verifiziert) |
Plattform | Windows / macOS / Linux-Editor (HTTP-Server verwendet |
Play-Modus | Der Dienst funktioniert auch im Play-Modus; Schreibvorgänge in der Szene im Play-Modus gehen nach Verlassen des Play-Modus verloren, bitte vorsichtig |
Kompilierungsabhängigkeiten | Null Kompilierzeit-Abhängigkeiten von VRCSDK3 / MA / VRCFury; ohne Installation geben die entsprechenden Tools klare Fehler zurück (beeinträchtigt die Plugin-Nutzung selbst nicht) |
Performance-Statistiken | Bevorzugt reflexiver Aufruf des SDK |
Menü-/Parameter-Asset-Erstellung und -Bearbeitung | Erfordert installiertes VRChat SDK3 im Projekt (diese Asset-Typen werden vom SDK definiert); SDK2-Alt-Avatare unterstützen nur Informationsabfrage |
Prefab-Scan | Der Prefab-Scan von |
Dialog-bezogene Operationen | Tool-Ausführung mit 120-Sekunden-Main-Thread-Timeout; Operationen mit modalen Dialogen können das Timeout überschreiten (das Plugin vermeidet Dialoge innerhalb von Tools) |
Langlaufende Ressourcen | SSE-Langverbindungen werden bei Bedarf aufgebaut; vor Domain-Reload stoppt und bereinigt der Dienst automatisch, um Port-Reste zu vermeiden |
Sicherheitshinweise
Standardmäßig nur
127.0.0.1überwacht: Nur lokale Prozesse können zugreifen. Die Änderung auf0.0.0.0macht den Dienst für alle Geräte im LAN erreichbar – bitte unbedingt das Risiko verstehen;Dieses Plugin hat derzeit keine eingebaute Authentifizierung (MCP-Community-Standard ist, dass die clientseitige Proxy-Schicht die Authentifizierung übernimmt). Bei öffentlicher Freigabe bitte im Reverse-Proxy eine Authentifizierung hinzufügen;
Der Nur-Lese-Modus ist die letzte Sicherheitsstufe, aber es wird trotzdem empfohlen, dass der Agent für Schreiboperationen zuerst die Benutzerbestätigung einholt;
unity.read_text_asseterlaubt nur das Lesen von Dateien unterAssets/,Packages/,ProjectSettings/; ein Zugriff auf Systemdateien außerhalb ist nicht möglich.
Projektstruktur
vrchat-project-mcp/
├── package.json # UPM 包清单(unity ≥ 2022.3,零依赖)
├── README.md # 本文档
├── LICENSE # MIT
├── Runtime/ # 纯 C# 协议层(noEngineReferences,无 Unity 依赖)
│ ├── VrchatProjectMcp.Core.asmdef
│ ├── Mcp/
│ │ ├── Json/MiniJson.cs # 内置 JSON 解析/序列化(零依赖)
│ │ ├── McpTypes.cs # 模式枚举/权限接口/资源定义/扩展接口
│ │ ├── McpToolAttribute.cs # [McpTool]/[McpParam] 特性(扩展方式二)
│ │ ├── McpToolDefinition.cs # 工具定义 + inputSchema 生成 + 参数绑定
│ │ ├── McpToolRegistry.cs # 扫描/注册/权限门控/调用执行
│ │ ├── JsonRpcCore.cs # JSON-RPC 2.0 分发(initialize/tools/resources)
│ │ └── IMcpLogger.cs # 日志接口(宿主实现)
│ └── Net/
│ ├── SimpleHttpServer.cs # TcpListener 手写 HTTP/1.1 服务器(SSE/CORS/chunked)
│ └── McpHttpEndpoints.cs # /mcp /sse /message /health / 端点
├── Editor/ # Unity 编辑器层
│ ├── VrchatProjectMcp.Editor.asmdef
│ ├── Core/
│ │ ├── McpMainThreadDispatcher.cs # 主线程调度(HTTP 线程 → Unity 主线程)
│ │ └── McpServerController.cs # 生命周期控制/组装/内置资源/菜单项
│ ├── Settings/
│ │ ├── McpSettings.cs # 配置(EditorPrefs 持久化,按项目隔离)
│ │ └── McpSettingsWindow.cs # 配置面板(地址/端口/权限/实时日志)
│ ├── Logging/
│ │ ├── McpEditorLogger.cs # 日志器(窗口富文本 + Unity 控制台)
│ │ └── McpConsoleCapture.cs # 控制台日志环形缓冲采集
│ └── Tools/
│ ├── ToolHelpers.cs # 目标解析/序列化读写/预制件编辑等公共辅助
│ ├── McpMetaTools.cs # mcp.* 元工具
│ ├── UnityProjectTools.cs # unity.* 项目/包/资源/日志
│ ├── UnitySceneTools.cs # unity.* 场景/对象/组件/预制件
│ ├── UnityAssetTools.cs # unity.* 资产
│ ├── Vrc/
│ │ ├── VrcReflection.cs # VRChat SDK 类型反射(无编译期依赖)
│ │ ├── VrcCoreTools.cs # vrc.* 头像/性能/插件探测/组件读写
│ │ ├── VrcMenuTools.cs # vrc.* 表情菜单 新建/复制/编辑/绑定
│ │ ├── VrcParameterTools.cs # vrc.* 表情参数 新建/复制/编辑
│ │ └── VrcMaTools.cs # vrc.ma_* MA 参数
│ └── Examples/
│ └── ExampleExtensionTools.cs# 扩展示例(可删除)
└── DevTests~/ # 开发期冒烟测试(目录名带 ~ 后缀,Unity 不会导入,非包内容)
└── CoreSanity/ # Core 协议层 37 项端到端测试(dotnet 工程)
DevTests~verwendet die UPM-Konvention mit~-Suffix; Unity ignoriert dieses Verzeichnis beim Import vollständig. Für lokale Tests:dotnet run --project DevTests~/CoreSanity/CoreSanity.csproj.
FAQ
F: Warum nicht HttpListener / WebSocket?
Unter Unity 2022/Unity 6 ist HttpListener auf .NET-Standard-2.1-API-Ebene nicht verfügbar; WebSocket benötigt eine Drittanbieter-Bibliothek. TcpListener + handgeschriebenes HTTP/1.1 ist die null-Abhängigkeits- und versionsübergreifend stabilste Lösung.
F: Wird das Plugin ins Spielpaket gebaut?
Nein. Die Kernlogik liegt in der Editor-Assembly (includePlatforms: ["Editor"]); die Protokollschicht liegt zwar im Runtime-Verzeichnis, wird aber nur vom Editor referenziert und gelangt beim Build nicht in den Player.
F: Warum werden Tool-Typen im Nur-Lese-Modus trotzdem markiert? Die Typmarkierung dient der Agent-Entscheidung (ob zweite Bestätigung nötig, ob Aufruf versucht werden soll); die serverseitige Blockierung ist die Absicherung als letzte Instanz – beides zusammen ist sicherer.
F: Funktioniert es ohne installiertes VRChat SDK? Ja. Alle regulären Unity-Tools funktionieren; bei den VRChat-Tools sind „Avatar-Info/Komponenten-Lesen-Schreiben/Plugin-Erkennung" bestmöglich verfügbar (Reflexion nach Typnamen), „Menü-/Parameter-Asset-Erstellung und -Bearbeitung" gibt eine klare Meldung zurück.
F: Wie behebe ich fehlgeschlagene Agent-Aufrufe?
Im Konfigurationspanel das Echtzeit-Logfenster ansehen (jede Verbindung und jeder Aufruf wird protokolliert), oder den Agent unity.get_console_logs aufrufen lassen, um Konsole und Editor.log zu lesen.
F: Was tun, wenn der Port belegt ist?
Im Konfigurationspanel den Port ändern und „Neustart" klicken; oder Port 0 eintragen für automatische Zuweisung (der tatsächliche Port wird in der Statusleiste angezeigt).
Versionsverlauf
0.1.0 (Erstversion): HTTP(JSON/SSE) MCP-Dienst, 27 reguläre Unity-Tools, 19 VRChat-spezifische Tools, 2 Meta-Tools, 1 Erweiterungsbeispiel; Nur-Lese-/Lese-Schreib-Berechtigungs-Gate; Konfigurationspanel mit Echtzeit-Log; Erweiterungspunkte; chinesische Kommentare und Dokumentation.
License
MIT (siehe LICENSE).
This server cannot be deployed
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP registry & directory: search, find & install 31k+ MCP servers & tools. Catalog and marketplace.
A paid remote MCP for Unity-MCP, built to return verdicts, receipts, usage logs, and audit-ready JSO
Host any HTTP API as a standard MCP server; auto-distribute to 12+ mainstream agent platforms.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides 20 tools to control the Unity Editor with natural language, including scene management, component manipulation, script generation, asset handling, project settings, builds, and live C# execution.2MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server for Unity Editor that provides 20 editor tools to control scripts, scenes, components, assets, and builds.2MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for Unity that enables AI agents to query and control the Unity Editor, providing tools for scene management, object manipulation, and asset browsing.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for safely inspecting and editing Unity/VRChat prefabs, scenes, and assets. It diagnoses override collisions, broken references, and runtime exceptions, with read-only YAML analysis and write operations via an Editor Bridge.12MIT