Skip to main content
Glama
dpwgc

VRChat Project MCP

by dpwgc

VRChat Project MCP

MCP-плагин (Model Context Protocol) для редактора Unity, ориентированный на разработку моделей VRChat.

Через встроенный HTTP-сервис (JSON-RPC 2.0 / SSE) предоставляет внешним AI-агентам 49 инструментов, охватывающих:

  • Стандартные возможности проекта Unity: информация о проекте, запрос и редактирование сцен/объектов/компонентов, управление ассетами, диагностика журнала консоли (в соответствии с возможностями manage_scene / manage_gameobject / manage_asset / manage_editor существующих плагинов типа unity-mcp);

  • Специальные возможности VRChat: детальный отчёт об аватаре (меню / параметры / привязки / производительность / использование ресурсов / установленные плагины), редактирование параметров компонентов, таких как MA / VRCFury, создание, копирование, редактирование и привязка файлов меню выражений и параметров выражений.

Реализация на чистом C#, ноль сторонних зависимостей (не используются никакие библиотеки, такие как Python / JS / Newtonsoft.Json), совместим с Unity 2022.3 и Unity 6 (редакторы Windows / macOS / Linux).


Содержание

  1. Ключевые возможности

  2. Установка

  3. Быстрый старт

  4. Панель конфигурации

  5. HTTP-эндпоинты и протокол

  6. Список инструментов

  7. Режимы «только чтение» / «чтение-запись»

  8. Примеры подключения клиента

  9. Руководство по расширению

  10. Совместимость и известные ограничения

  11. Замечания по безопасности

  12. Структура проекта

  13. FAQ


Related MCP server: unityxclaude

Ключевые возможности

Возможность

Описание

HTTP-сервис на порту

Встроенный HTTP/1.1-сервер, написанный вручную (на базе TcpListener, что позволяет обойти проблему недоступности HttpListener в Unity .NET Standard 2.1); поддерживает две транспортные схемы: Streamable HTTP (POST /mcp) и классический SSE (GET /sse + POST /message).

Ноль зависимостей

Чистый C#; разбор и сериализация JSON — встроенная реализация; нет зависимостей от сторонних Unity-пакетов или внешних сред выполнения.

Совместимость

Unity 2022.3 (.NET Standard 2.1 / C# 9) и Unity 6; только для редактора, не влияет на рантайм-сборку.

Аннотация типов инструментов

Каждый инструмент помечен как query (запрос) или write (запись); через префикс в description и поле _meta.access из tools/list эта информация передаётся агенту, чтобы он мог определить, требуется ли повторное подтверждение пользователя.

Контроль прав доступа

На панели конфигурации можно переключать режим только чтение / чтение-запись; в режиме только чтения сервер напрямую отклоняет все инструменты записи (возвращается permission_denied).

Безопасность основного потока

Все вызовы Unity API выполняются через диспетчер основного потока; HTTP-рабочие потоки никогда не обращаются к Unity API напрямую.

Отсутствие зависимостей на этапе компиляции для VRChat

Чтение и запись для VRCSDK3 / Modular Avatar / VRCFury выполняются только через SerializedObject + рефлексию; если соответствующий пакет не установлен, плагин как обычно компилируется и работает, лишь связанные инструменты возвращают понятную ошибку.

Журнал в реальном времени

В панели конфигурации есть окно журнала в реальном времени (подключения / вызовы / отказы / ошибки, с цветовым разделением), также пересылаются сообщения консоли Unity.

Расширяемость

Три способа расширения: аннотация атрибутом ([McpTool]), интерфейс провайдера (IMcpToolProvider) и регистрация во время выполнения. Подробнее в Руководстве по расширению.


Установка

Способ 1. Локальный пакет UPM (рекомендуется)

  1. Скопируйте этот репозиторий в любое место (например, в ../vrchat-project-mcp рядом с проектом);

  2. В проекте Unity откройте Window → Package Manager → + → Add package from disk… и выберите package.json в этом каталоге;

  3. Либо добавьте запись прямо в Packages/manifest.json проекта:

{
  "dependencies": {
    "com.vrchat-project.mcp": "file:../../vrchat-project-mcp"
  }
}

Способ 2. Размещение напрямую в Assets

Скопируйте всю папку в Assets/ проекта (например, Assets/vrchat-project-mcp/). Unity скомпилирует её автоматически. package.json можно оставить или удалить.

Способ 3. Git URL (UPM)

После публикации репозитория в Git-сервисе выберите в Package Manager Add package from git URL… и укажите адрес репозитория.

После установки в строке меню появляется пункт Tools → VRChat Project MCP (панель конфигурации / запуск сервера / остановка сервера).


Быстрый старт

  1. Откройте Tools → VRChat Project MCP → Панель конфигурации;

  2. Убедитесь, что адрес прослушивания по умолчанию 127.0.0.1:8765 и права доступа (по умолчанию чтение-запись) заданы верно;

  3. Нажмите Запустить сервер (если включена опция «Автозапуск сервера после запуска редактора», сервер уже запущен);

  4. Откройте в браузере http://127.0.0.1:8765/ — вы увидите информационную страницу на китайском языке, а GET /health возвращает статус в JSON;

  5. Пусть ваш агент выполняет вызовы по HTTP (примеры — в Примерах подключения клиента):

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"}}}

Затем используйте tools/list, чтобы увидеть все инструменты, и tools/call для их вызова. Агент может сначала вызвать mcp.get_status, чтобы узнать режим работы сервера и список инструментов, воспользоваться unity.get_console_logs для поиска ошибок и vrc.get_avatar_info, чтобы получить отчёт об аватаре.


Панель конфигурации

Tools → VRChat Project MCP → Панель конфигурации:

Параметр

Описание

Адрес прослушивания

По умолчанию 127.0.0.1 (доступ только с этого компьютера); можно изменить на 0.0.0.0, чтобы открыть доступ из локальной сети (обратите внимание на безопасность).

Порт

По умолчанию 8765; если указать 0, порт будет назначен автоматически (фактический порт отображается в строке состояния вверху).

Права доступа

Только чтение (отклонять все инструменты записи) / Чтение-запись (разрешить запросы и запись). Изменение вступает в силу немедленно, сервер блокирует в реальном времени.

Автозапуск

Автоматически запускать сервер после запуска редактора.

Окно журнала в реальном времени

В реальном времени выводит события подключения, вызовов, отказов и ошибок; поддерживаются автопрокрутка и очистка.

Быстрые действия

Запуск / Остановка / Перезапуск / Копировать MCP-эндпоинт / Очистить журнал.

Изменения адреса прослушивания и порта вступают в силу только после нажатия «Перезапуск»; изменение режима прав применяется немедленно. Все настройки хранятся в EditorPrefs отдельно для каждого проекта.


HTTP-эндпоинты и протокол

Эндпоинт

Метод

Описание

/mcp

POST

Streamable HTTP (MCP 2025-03-26): JSON-запрос → JSON-ответ; если заголовок Accept содержит text/event-stream, ответ возвращается в виде потока SSE-событий.

/mcp

DELETE

Завершение сеанса (сервис не хранит состояние, сразу возвращается 200).

/sse

GET

Классический HTTP+SSE (MCP 2024-11-05): устанавливается длительное соединение и отправляется событие endpoint (содержит sessionId).

/message?sessionId=x

POST

Канал клиент → сервер для классической SSE-передачи; возвращается 202, результат отправляется обратно через SSE-событие.

/health

GET

JSON для проверки работоспособности (состояние / режим / количество инструментов / список эндпоинтов).

/

GET

Информационная страница на китайском языке.

  • Протокол: MCP поверх JSON-RPC 2.0, последовательность initialize → notifications/initialized → tools/list → tools/call;

  • Поддерживаются пакетные запросы в виде массива; протокол совместим с версиями 2024-11-05 / 2025-03-26 / 2025-06-18 (возвращается версия клиента);

  • Все ответы содержат CORS-заголовки (Access-Control-Allow-Origin: * и др.), поэтому браузерные клиенты (например, MCP Inspector) могут обращаться к серверу напрямую.


Список инструментов

Колонка «Тип»: Запрос — безопасно, только чтение; Запись — изменяет сцену/ассеты/проект, в режиме только чтения отклоняется сервером; перед вызовом агенту рекомендуется запросить у пользователя повторное подтверждение.

Мета-инструменты MCP (mcp)

Инструмент

Тип

Описание

mcp.get_status

Запрос

Состояние работы сервера, режим доступа, полный список инструментов (с пометками чтения/записи) и эндпоинты.

mcp.refresh_tools

Запрос

Повторно сканирует сборки и обновляет реестр инструментов (вызывается после добавления или удаления расширений).

Общие инструменты Unity (unity)

Инструмент

Тип

Описание

unity.get_project_info

Запрос

Основная информация о проекте (название продукта / версия Unity / платформа / сцены сборки / статистика ассетов).

unity.get_packages

Запрос

Список установленных UPM-пакетов (включая определение пакетов, связанных с VRChat).

unity.get_resource_usage

Запрос

Память процесса / управляемая память / статистика объектов и компонентов сцены / количество ассетов по типам / текущее выделение в редакторе.

unity.get_console_logs

Запрос

Журнал консоли (кольцевой буфер в памяти + хвост файла Editor.log), с фильтрацией по уровню / ключевым словам.

unity.get_scene_info

Запрос

Информация об активной сцене (имя / путь / статистика объектов / корневые объекты / топ компонентов).

unity.list_gameobjects

Запрос

Список объектов сцены (включая неактивные) с фильтром по имени / ключевым словам компонентов.

unity.get_object_info

Запрос

Полная информация об объекте (положение/поворот / список компонентов / сериализованные поля каждого компонента).

unity.get_selection

Запрос

Текущие выделенные объекты в редакторе.

unity.set_selection

Запись

Установить выделение (путь к ассету / #ID экземпляра / путь в сцене).

unity.set_object_property

Запись

Универсальная установка сериализованного поля (объекты сцены и ассеты-префабы, автосохранение); поддерживается путь parameters.Array.data[i].字段.

unity.set_transform

Запись

Установить положение объекта (позиция / углы Эйлера / масштаб).

unity.create_gameobject

Запись

Создать GameObject (можно указать родительский объект и начальные компоненты).

unity.destroy_object

Запись

Уничтожить объект сцены (для ассетов-префабов по умолчанию отказ).

unity.create_prefab

Запись

Сохранить префаб из объекта сцены.

unity.instantiate_prefab

Запись

Создать экземпляр префаба в сцене.

unity.open_scene

Запись

Открыть сцену (можно предварительно сохранить текущую).

unity.save_scene

Запись

Сохранить текущую сцену.

unity.run_menu_item

Запись

Выполнить пункт меню редактора (например, GameObject/3D Object/Cube).

unity.list_assets

Запрос

Поиск и вывод списка ассетов (фильтр по типу / папке / ключевым словам).

unity.get_asset_info

Запрос

Детали ассета (тип / размер / зависимости / импортёр / сводка префаба).

unity.read_text_asset

Запрос

Чтение текстовых файлов внутри проекта (только в Assets/, Packages/, ProjectSettings/).

unity.create_asset

Запись

Создание ассета (AnimatorController/Material/PhysicMaterial/AnimationClip/любой ScriptableObject).

unity.create_script

Запись

Создание файла C#-скрипта (шаблон MonoBehaviour, опциональное пространство имён).

unity.copy_asset

Запись

Копирование ассета (при совпадении имени автоматически добавляется номер).

unity.delete_asset

Запись

Удаление ассета (по умолчанию перемещается в корзину).

unity.create_folder

Запись

Создание папки в Assets (последовательно, по уровням).

unity.refresh_assets

Запись

Сохранить и обновить базу данных ассетов.

Специаль

工具

类型

说明

vrc.get_avatars

查询

列出场景与预制件中的头像(VRCAvatarDescriptor / 旧版描述符)

vrc.get_avatar_info

查询

头像完整详情:描述符字段/动画层/表情菜单树/表情参数/性能统计/渲染骨骼统计/MA·VRCFury 等插件组件 —— 供 Agent 输出报告与建议

vrc.get_performance_stats

查询

性能统计(面数/骨骼/材质/PhysBone/碰撞体计数与等级;优先 SDK 官方计算,否则按官方阈值估算并标注)

vrc.get_installed_packages

查询

VRChat 相关 SDK/插件版本探测(VRCSDK/MA/VRCFury/Poiyomi/DynamicBone/AAO 等)

vrc.get_component_info

查询

指定组件(MA/VRCFury/PhysBone 等)完整序列化参数

vrc.set_component_property

写入

修改任意组件(MA/VRCFury 等)序列化字段(枚举用名称,资源引用用资产路径)

vrc.list_expressions_menus

查询

列出项目中的表情菜单(VRCExpressionsMenu)资产

vrc.get_expressions_menu

查询

读取菜单结构(控件类型/参数/值/图标/子菜单/标签,支持递归)

vrc.create_expressions_menu

写入

新建表情菜单资产

vrc.copy_expressions_menu

写入

复制表情菜单资产

vrc.set_menu_control

写入

新增/修改/删除菜单控件(Button/Toggle/SubMenu/TwoAxisPuppet/FourAxisPuppet/RadialPuppet,含 labels 与 subParameters)

vrc.bind_expressions

写入

把菜单/参数资产绑定到头像描述符(场景对象与预制件均支持)

vrc.list_expression_parameters

查询

列出项目中的表情参数(VRCExpressionParameters)资产

vrc.get_expression_parameters

查询

读取参数列表(名称/类型 Int·Float·Bool/默认值/是否保存)

vrc.create_expression_parameters

写入

新建表情参数资产

vrc.copy_expression_parameters

写入

复制表情参数资产

vrc.set_parameter

写入

新增/修改/删除表情参数

vrc.ma_get_parameters

查询

读取 ModularAvatarParameters 组件全部参数

vrc.ma_set_parameter

写入

新增/修改/删除 MA 参数(sync 按名称设置,非法值会列出该版本可选值)

扩展示例(example)

工具

类型

说明

example.hello

查询

扩展示例(演示自定义工具注册,可删除 ExampleExtensionTools.cs

常用调用示例

// 读取头像报告
{"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}}}

只读 / 读写权限模式

  • 服务端在执行 任何 写入类工具前检查当前访问模式;只读模式下直接返回 isError 结果:

{
  "content": [{"type":"text","text":"当前为【只读】模式,已拒绝写入类工具调用「vrc.set_parameter」。…"}],
  "isError": true,
  "structuredContent": {"error": {"code":"permission_denied","access":"write","mode":"readonly"}}
}
  • Agent 端建议策略:调用 tools/listmcp.get_status 获取每个工具的 _meta.access;对 write 类型工具先向用户确认,且无需在客户端重复实现拦截(服务端已兜底)。


客户端接入示例

curl(JSON 模式)

# 握手
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 模式)

# 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(浏览器)

打开 MCP Inspector,Transport 选 Streamable HTTP,URL 填 http://127.0.0.1:8765/mcp(本服务已内置 CORS 支持)。

Claude Desktop / 其他仅支持 stdio 的客户端

用社区桥接工具把 HTTP MCP 转成 stdio(桥接工具运行在客户端侧,不影响本插件零依赖):

npx mcp-remote http://127.0.0.1:8765/sse

或使用自研 Agent 直接以 HTTP 调用(POST /mcp,参考上文 JSON-RPC 流程)。


扩展指南

插件预留了三层扩展点,无需修改插件源码即可新增能力:

方式一:[McpTool] 属性标注(推荐)

在任意引用了 VrchatProjectMcp.Core 程序集的代码中定义公开静态方法并标注特性,插件启动或调用 mcp.refresh_tools 时自动扫描注册:

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);
    }
}

方式二:IMcpToolProvider 接口

适合动态决定工具集合的场景(如"检测到某插件安装后才注册对应工具"):

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;
    }
}

完整可运行示例见 Editor/Tools/Examples/ExampleExtensionTools.cs

方式三:运行时注册 / 自定义资源 / 自定义 HTTP 端点

// 运行时注册工具
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(...) 写响应
});

扫描范围:只扫描"引用了 VrchatProjectMcp.Core 程序集"的程序集,不会遍历 Unity 全部类型,开销可控。


兼容性与已知限制

说明

Unity 版本

2022.3(.NET Standard 2.1 / C# 9)与 Unity 6(全部代码按 C# 9 语法编写,并在本地用 LangVersion 9.0 编译验证)

平台

Windows / macOS / Linux 编辑器(HTTP 服务器使用 TcpListener,不依赖平台专属 API)

播放模式

服务在播放模式同样可用;但播放模式中对场景的写入会在退出播放模式后丢失,请谨慎

编译依赖

对 VRCSDK3 / MA / VRCFury 零编译期依赖;未安装时相关工具返回明确错误(不影响插件本身使用)

性能统计

优先反射调用 SDK AvatarPerformanceStats;SDK 缺失时按官方文档阈值估算,结果中明确标注「估算」

菜单/参数资产创建与编辑

需要项目安装 VRChat SDK3(这些资产类型由 SDK 定义);SDK2 旧头像仅支持信息读取

预制件扫描

vrc.get_avatars 的预制件扫描需逐个加载预制件,大项目可能较慢(可用 limitincludePrefabAssets=false 控制)

弹窗类操作

工具执行带 120 秒主线程超时;涉及模态弹窗的操作可能超时(插件已避免在工具内弹窗)

长驻资源

SSE 长连接按需建立;域重载前服务自动停止并清理,防止残留端口占用


安全提示

  1. 默认只监听 127.0.0.1:仅本机进程可访问。改为 0.0.0.0 会把服务暴露给局域网内所有设备,请务必了解风险;

  2. 本插件当前不内置鉴权(MCP 社区标准做法是由客户端侧代理统一鉴权)。如暴露到公网,请在反向代理层加认证;

  3. 只读模式是最后一道保险,但仍建议 Agent 对写入类操作先获得用户确认;

  4. unity.read_text_asset 仅允许读取 Assets/Packages/ProjectSettings/ 下的文件,无法越界读系统文件。


项目结构

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~ 使用 UPM 约定的 ~ 后缀命名,Unity 导入包时会完全忽略该目录;如需本地运行测试:dotnet run --project DevTests~/CoreSanity/CoreSanity.csproj


FAQ

问:为什么不用 HttpListener / WebSocket? Unity 2022/Unity 6 的 .NET Standard 2.1 API 级别下 HttpListener 不可用;WebSocket 需要第三方库。TcpListener + 手写 HTTP/1.1 是零依赖且跨版本最稳的方案。

问:插件会打进游戏包里吗? 不会。核心逻辑在 Editor 程序集(includePlatforms: ["Editor"]),协议层虽在 Runtime 目录但仅被 Editor 引用,构建时不会进入玩家。

问:只读模式下为什么还要标注工具类型? 类型标注服务于 Agent 决策(是否二次确认、是否尝试调用),服务端拦截是兜底保险,两者叠加更安全。

问:没装 VRChat SDK 能用吗? 能。Unity 常规工具全部可用;VRChat 工具中「头像信息/组件读写/插件探测」尽力可用(按类型名反射),「菜单/参数资产创建与编辑」会返回明确提示。

问:如何排查 Agent 调用失败? 看配置面板实时日志框(每次连接与调用都会打印),或让 Agent 调用 unity.get_console_logs 读取控制台与 Editor.log。

问:端口被占用怎么办? 配置面板改端口后点「重启」;或填端口 0 自动分配(实际端口显示在状态栏)。


版本记录

  • 0.1.0(初始版本):HTTP(JSON/SSE) MCP 服务、27 个 Unity 常规工具、19 个 VRChat 专用工具、2 个元工具、1 个扩展示例;只读/读写权限门控;配置面板与实时日志;扩展点;中文注释与文档。

License

MIT(见 LICENSE)。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    An 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.
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An 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
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP 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.
    11
    MIT

View all related MCP servers

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…

View all MCP Connectors

Latest Blog Posts

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