emptysock-mcp
emptysock-mcp
Сервер Model Context Protocol для игрового движка EmptySock. Предоставляет системные компоненты движка — NavMesh, Physics, Scene, Save и Actor — как инструменты MCP, доступные для Claude Desktop, AI-агентов и Claude API.
Требования
Node.js 20+
npm 9+
Related MCP server: Hayba
Установка
git clone https://github.com/eleferrets/emptysock-mcp.git
cd emptysock-mcp
npm install
npm run buildКонфигурация
Скопируйте пример env-файла и заполните нужные значения:
cp .env.example .envПеременная | Обязательно | Описание |
| Нет | Bearer-токен для аутентифицированных вызовов к API движка |
| Нет | Обязательный Bearer-токен для запросов на SSE-транспорте. Оставьте пустым, чтобы отключить аутентификацию. |
| Нет | Абсолютный путь, который инструменты сохранения могут читать/записывать. По умолчанию — рабочая директория процесса. В продакшене задавайте явно. |
Никогда не коммитьте
.env— он в.gitignore. Храните секреты в менеджере секретов CI/CD, а не в репозитории.
Запуск сервера
stdio (рекомендуется для локального использования и Claude Desktop)
npm run dev # development — tsx, no build step
# or after building:
node dist/server.jsСервер общается через stdin/stdout. Сетевого порта и поверхности аутентификации нет.
Claude Desktop
Добавьте сервер в конфиг Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json на macOS):
{
"mcpServers": {
"emptysock": {
"command": "node",
"args": ["/absolute/path/to/emptysock-mcp/dist/server.js"],
"env": {
"SAVE_BASE_DIR": "/absolute/path/to/your/saves"
}
}
}
}Перезапустите Claude Desktop. Инструменты EmptySock появятся в выборе инструментов.
Доступные инструменты
NavMesh
Инструмент | Описание |
| Путь A* между двумя 2D-точками мира по загруженной навмеше. Возвращает упорядоченные путевые точки или |
| Ближайший проходимый узел навмеша к заданной точке мира. |
Пример — поиск пути:
{
"from": { "x": 0, "y": 0 },
"to": { "x": 100, "y": 50 },
"mapId": "level1"
}Physics
Инструмент | Описание |
| Запускает луч в 2D-физическом пространстве; возвращает первую задетую сущность, точку попадания и нормаль. |
| Запускает луч в 3D-физическом пространстве (Rapier3D); возвращает первое попадание. |
| Все идентификаторы сущностей, чьи 2D-коллайдеры пересекают окружность. |
| Текущая позиция, скорость и угловая скорость физического тела по идентификатору сущности. |
Пример — перекрытие окружности:
{
"center": { "x": 50, "y": 50 },
"radius": 20,
"layerMask": 3
}Scene
Инструмент | Описание |
| Все идентификаторы сущностей, активных в сцене. |
| Тег, состояние активности и список компонентов для конкретной сущности. |
| Сериализованное состояние конкретного компонента на сущности. |
Пример — получение компонента:
{
"sceneId": "gameplay",
"entityId": "player-001",
"componentType": "Transform"
}Save
Все инструменты сохранения изолированы в SAVE_BASE_DIR. Обход пути (.., абсолютные пути) отклоняется на уровне схемы и повторно на этапе разрешения.
Инструмент | Описание |
| Читает слот сохранения с диска и возвращает его JSON-данные. |
| Записывает JSON-объект в именованный слот сохранения. |
| Удаляет слот сохранения. |
| Перечисляет все доступные слоты сохранения. |
Пример — запись:
{
"slot": "autosave",
"data": { "level": 3, "score": 4200, "checkpoint": "bridge" }
}Имена слотов — только алфавитно-цифровые символы, дефисы и подчёркивания (например, slot1, autosave, new-game-plus).
Actor
Инструмент | Описание |
| Ставит сообщение в очередь входящих сообщений конкретного актора. Обрабатывается при следующем сбросе ActorSystem. |
| Рассылает сообщение всем зарегистрированным акторам. |
| Количество ожидающих сообщений во входящих актора. |
Пример — отправка сообщения:
{
"actorId": "enemy-spawner",
"message": { "type": "SPAWN_WAVE", "payload": { "wave": 3 } }
}Примечание о порядке: ActorSystem обрабатывает входящие каждого актора перед вызовом
update(). Сообщения, отправленные во время кадра N, полностью обрабатываются до выполнения логики обновления кадра N.
Разработка
npm run lint # TypeScript type-check (no emit)
npm test # run Vitest suite
npm run test:watch # watch modeТесты находятся в src/tests/. Они покрывают валидацию входных данных, диспетчеризацию инструментов и инварианты безопасности (обход пути, инъекция шелл-метасимволов, неизвестные имена инструментов).
Добавление инструмента
Создайте
src/tools/<domain>.ts— экспортируйте запись массиваtoolDefи функциюhandler.Зарегистрируйте оба в
src/tools/index.tsчерез вызовregister()вbuildRegistry().Добавьте запись в
api-reference.jsonвemptysock-engine.Добавьте файл навыка в
eleferrets/emptysock-ai-skills.
Используйте общие помощники в src/lib/:
parse(schema, raw)— Zod-разбор, который выбрасываетMcpError(InvalidParams)при сбоеSafeRelPath,SafeId,Vec2,Vec3,GameNum— переиспользуемые Zod-схемыtextResponse(data)— формирует стандартный текстовый ответ MCPwrapError(err)— логирует в stderr и повторно выбрасывает какMcpError(InternalError)
Модель безопасности
Угроза | Меры защиты |
Некорректные аргументы | Zod |
Обход пути | Схема |
Шелл-инъекция | Никаких |
Утечка учётных данных | Секреты только из |
Чрезмерно большой вход | Длины строк ограничены для каждого поля схемы |
Неизвестные инструменты |
|
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
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 Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables LLM-driven text game state management by exposing MCP tools for managing players, locations, items, entities, and abstract concepts.MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server enabling AI agents to author Unreal Engine 5 scenes directly, with tools for spawning actors, building PCG graphs, validating physics, generating terrain, and more through a single MCP connection.12MIT
- FlicenseNot gradedqualityDmaintenanceConnects Claude Code to the Unity Editor via MCP, enabling AI-driven control of scenes, assets, components, UI, animations, and more through 91 tools.2-
- AlicenseCqualityAmaintenanceEnables AI-driven game development by providing MCP tools to interact with the Godot editor, including scene editing, node manipulation, script attachment, and scene execution.2827MIT
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/eleferrets/emptysock-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server