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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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 gradedqualityBmaintenanceAn 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 gradedqualityAmaintenanceMCP 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.11MIT
Related MCP Connectors
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
Generate, edit, and deploy immersive 3D/WebGL web projects from any MCP assistant.
A MCP server built for developers enabling Git based project management with project and personal…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dpwgc/vrchat-project-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server