About PacketGenerator
PacketGenerator is an MCP server in the Gaming category: mCP server for generating C# Minecraft protocol packet classes across multiple versions.
Install
git clone https://github.com/Titlehhhh/PacketGeneratorThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about PacketGenerator
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
PacketGenerator
MCP-сервер для генерации C# пакетов Minecraft протокола с поддержкой множества версий
Вспомогательный инструмент для McProtoNet — .NET библиотеки для работы с Minecraft протоколом. PacketGenerator автоматически генерирует типизированные C# классы для каждого пакета, используя данные из PrismarineJS/minecraft-data и LLM в качестве движка генерации.
Содержание
Как это работает
PacketGenerator — это MCP-сервер (Model Context Protocol), который предоставляет инструменты для генерации C# кода пакетов Minecraft протокола. Claude (или другой LLM-агент) вызывает эти инструменты, передаёт идентификатор пакета, а сервер возвращает готовый C# класс.
Claude / LLM агент
│
│ generate_packet("play.toClient.keep_alive")
▼
┌─────────────────────┐
│ PacketGenerator │ ← MCP сервер (порт 5000)
│ MCP Server │
└──────────┬──────────┘
│
┌─────┴──────┐
│ │
▼ ▼
minecraft-data OpenRouter API
(схемы пакетов) (LLM генерация)
Для каждого пакета:
- Загружается схема из
minecraft-dataдля версий 735–772 (1.16–1.21) - Рассчитывается сложность пакета и выбирается подходящая LLM модель
- Собирается промпт с правилами генерации и схемой пакета
- LLM генерирует C# класс
- Постпроцессор добавляет
using, namespace, атрибуты[PacketInfo],[PacketId] - Готовый файл сохраняется и возвращается ссылка на скачивание
Архитектура
3-уровневая маршрутизация моделей
Пакеты разной сложности отправляются разным моделям, чтобы экономить токены на простых случаях и не терять качество на сложных:
PacketComplexityScorer
│
├── score ≤ 20 ──► SmallModel (например, gpt-4o-mini)
│
├── score ≤ 50 ──► MediumModel
│
└── score > 50 ──► HeavyModel
(или возврат промптов Claude для ручной генерации)
Факторы сложности:
| Признак | Баллы |
|---|---|
| Не-null версионный диапазон | +10 |
| Каждое поле в диапазоне | +2 |
| Вложенные массивы | +20 |
| Mapper типы | +5 |
| Switch конструкции | +15 |
| Опциональные поля | +10 |
| Конфликт типов поля между версиями | +15 |
Пайплайн генерации
generate_packet(id)
│
▼
ProtocolRepository
(загрузка схемы + история версий)
│
▼
BuildPromptAsync
┌────────────────────────────────┐
│ SystemPrompt.md │ правила генерации C# классов
│ AvailableMethods.md │ справочник методов сериализации
│ Sceleton.md │ шаблон структуры класса
│ BasePrompt.md + схема пакета │ пользовательский промпт
└────────────────────────────────┘
│
▼
PacketComplexityScorer
→ выбор модели
│
▼
OpenRouter API (LLM)
│
▼
ExtractCode (```csharp ... ```)
│
▼
PacketPostProcessor
→ using, namespace, [PacketInfo], [PacketId], [ProtocolSupport]
│
▼
Artifact Storage
→ ссылка на скачивание
Запуск
Требования
- .NET 10 SDK
- OpenRouter API ключ (для генерации через LLM)
Клонирование
git clone --recursive https://github.com/Titlehhhh/McProtoNet
cd PacketGenerator
--recursiveнужен для подмодулейminecraft-dataиtoon-dotnet
Настройка API ключа
# через user secrets (рекомендуется)
cd src/McpServer
dotnet user-secrets set "OpenRouter:ApiKey" "sk-or-..."
# или через переменную окружения
export OPENROUTER_API_KEY="sk-or-..."
Запуск сервера
# из папки PacketGenerator
scripts\start-mcp.bat
# или напрямую
cd src/McpServer
dotnet run
Сервер запустится на http://localhost:5000.
Подключение к Claude Code
Добавьте в .mcp.json вашего проекта:
{
"mcpServers": {
"mcproto": {
"type": "http",
"url": "http://localhost:5000/mcp"
}
}
}
MCP инструменты
После подключения Claude получает доступ к следующим инструментам:
generate_packet(id)
Генерирует C# класс для указанного пакета.
generate_packet("play.toClient.keep_alive")
Возвращает:
Name— имя пакетаCode— готовый C# код (для простых/средних пакетов)Link— ссылка для скачивания файлаTokenCount— сколько токенов использованоComplexityScore— оценка сложностиModel— какая модель использовалась
Для очень сложных пакетов вместо
CodeвозвращаютсяSystemPrompt+UserPrompt— Claude генерирует код самостоятельно.
generate_packets_batch(ids[])
Параллельная генерация нескольких пакетов. Ошибка одного пакета не останавливает остальные.
GetPackets(filter?)
Список всех доступных пакетов с опциональной фильтрацией.
GetPackets("keep_alive") # один токен
GetPackets("play|login") # несколько токенов через |
GetPacket(id, format?)
Схема пакета во всех версиях протокола (формат toon или json).
GetTypes() / GetType(id, format?)
Список всех типов протокола и схема конкретного типа.
REST API
Помимо MCP, сервер предоставляет REST API для ручного управления:
| Метод | Путь | Описание |
|---|---|---|
GET |
/api/packets |
Список всех пакетов |
GET |
/api/packets/{ns}/{dir} |
Пакеты в пространстве имён |
GET |
/api/schema/{**id} |
Схема + оценка сложности |
POST |
/api/prompt |
Превью промпта (без LLM вызова) |
POST |
/api/generate |
Генерация одного пакета |
POST |
/api/generate/batch |
Генерация нескольких пакетов |
GET |
/api/config |
Текущая конфигурация моделей |
POST |
/api/config |
Обновление конфигурации |
GET |
/artifacts/{id} |
Скачать сгенерированный файл |
Настройка моделей
Конфигурация хранится в model-config.json рядом с бинарником и редактируется через /api/config.
{
"SmallModel": "openai/gpt-4o-mini",
"MediumModel": "openai/gpt-4o-mini",
"HeavyModel": "",
"SmallComplexityThreshold": 20,
"HeavyComplexityThreshold": 50,
"SmallThreshold": 1500,
"HeavyThreshold": 4000,
"Temperature": 0,
"MaxOutputTokens": 4096,
"ReasoningEffort": "",
"InputFormat": "toon"
}
Ключевые параметры:
HeavyModel: ""— сложные пакеты возвращаются Claude для ручной генерацииInputFormat—"toon"(компактный) или"json"(стандартный)ReasoningEffort—"low"/"medium"/"high"/"xhigh"для моделей с reasoningSmallThreshold/HeavyThreshold— пороги по количеству токенов (дополнительный критерий)
Все модели указываются в формате OpenRouter: "provider/model-name".
Структура проекта
PacketGenerator/
├── src/
│ ├── McpServer/ # Основной MCP сервер
│ │ ├── Services/
│ │ │ ├── CodeGenerator.cs # Генерация кода + маршрутизация LLM
│ │ │ ├── PacketPostProcessor.cs # Постобработка (namespace, атрибуты)
│ │ │ └── ModelConfigService.cs # Конфиг моделей
│ │ ├── Tools/
│ │ │ ├── CodeGenTool.cs # MCP: generate_packet, batch
│ │ │ └── DataTool.cs # MCP: GetPackets, GetTypes
│ │ ├── Prompts/CodeGeneration/
│ │ │ ├── SystemPrompt.md # Правила генерации C# классов
│ │ │ ├── BasePrompt.md # Шаблон пользовательского промпта
│ │ │ ├── Sceleton.md # Шаблон структуры класса
│ │ │ └── AvailableMethods.md # Справочник методов сериализации
│ │ ├── PacketComplexityScorer.cs # Оценка сложности → выбор модели
│ │ ├── HistoryBuilder.cs # Слияние версий пакета
│ │ └── Program.cs # Точка входа, DI, эндпоинты
│ ├── ProtoCore/ # Загрузка и валидация протокола
│ ├── Protodef/ # Система типов Protodef
│ └── MinecraftData/ # Разрешение путей minecraft-data
├── minecraft-data/ # Субмодуль: JSON данные протокола
├── toon-dotnet/ # Субмодуль: Toon формат (форк)
├── Generated/ # Сгенерированные пакеты
└── PacketGenerator.slnx # Solution файл
Поддерживаемые версии протокола
| Версия протокола | Minecraft |
|---|---|
| 735 | 1.16 |
| 736–755 | 1.16.x |
| ... | ... |
| 770–772 | 1.21.x |
Полный диапазон: 735–772 (47 версий протокола).
Проект разрабатывается и поддерживается одним автором. PR принимаются только от него.
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.