emptysock-mcp
emptysock-mcp
Servidor de Model Context Protocol para el motor de juegos EmptySock. Expone los sistemas del motor — NavMesh, Physics, Scene, Save y Actor — como herramientas MCP consumibles por Claude Desktop, agentes de IA y la API de Claude.
Requisitos
Node.js 20+
npm 9+
Related MCP server: Hayba
Instalación
git clone https://github.com/eleferrets/emptysock-mcp.git
cd emptysock-mcp
npm install
npm run buildConfiguración
Copia el archivo de entorno de ejemplo y completa los valores que necesites:
cp .env.example .envVariable | Requerido | Descripción |
| No | Token Bearer para llamadas autenticadas a la API del motor |
| No | Token Bearer requerido en las peticiones de transporte SSE. Déjalo vacío para desactivar la autenticación. |
| No | Ruta absoluta que las herramientas de guardado pueden leer/escribir. Por defecto, el directorio de trabajo del proceso. Establécelo explícitamente en producción. |
Nunca hagas commit de
.env— está en gitignore. Guarda los secretos en el gestor de secretos de tu CI/CD, no en el repositorio.
Ejecutar el servidor
stdio (recomendado para uso local y Claude Desktop)
npm run dev # development — tsx, no build step
# or after building:
node dist/server.jsEl servidor se comunica a través de stdin/stdout. No hay ningún puerto de red ni superficie de autenticación.
Claude Desktop
Añade el servidor a la configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json en macOS):
{
"mcpServers": {
"emptysock": {
"command": "node",
"args": ["/absolute/path/to/emptysock-mcp/dist/server.js"],
"env": {
"SAVE_BASE_DIR": "/absolute/path/to/your/saves"
}
}
}
}Reinicia Claude Desktop. Las herramientas de EmptySock aparecerán en el selector de herramientas.
Herramientas disponibles
NavMesh
Herramienta | Descripción |
| Ruta A* entre dos puntos del mundo 2D en una navmesh cargada. Devuelve waypoints ordenados o |
| Nodo de navmesh transitable más cercano a un punto del mundo dado. |
Ejemplo — encontrar ruta:
{
"from": { "x": 0, "y": 0 },
"to": { "x": 100, "y": 50 },
"mapId": "level1"
}Physics
Herramienta | Descripción |
| Lanza un rayo en el espacio de física 2D; devuelve la primera entidad impactada, el punto de impacto y la normal. |
| Lanza un rayo en el espacio de física 3D (Rapier3D); devuelve el primer impacto. |
| Todos los IDs de entidad cuyos colisionadores 2D se superponen con un círculo. |
| Posición, velocidad y velocidad angular actuales de un cuerpo de física según el ID de entidad. |
Ejemplo — solapamiento de círculo:
{
"center": { "x": 50, "y": 50 },
"radius": 20,
"layerMask": 3
}Scene
Herramienta | Descripción |
| Todos los IDs de entidad activos en una escena. |
| Etiqueta, estado activo y lista de componentes de una entidad específica. |
| Estado serializado de un componente específico en una entidad. |
Ejemplo — obtener componente:
{
"sceneId": "gameplay",
"entityId": "player-001",
"componentType": "Transform"
}Save
Todas las herramientas de guardado están restringidas a SAVE_BASE_DIR. El path traversal (.., rutas absolutas) se rechaza en la capa de esquema y de nuevo en el momento de la resolución.
Herramienta | Descripción |
| Lee una ranura de guardado del disco y devuelve sus datos JSON. |
| Escribe un objeto JSON en una ranura de guardado con nombre. |
| Elimina una ranura de guardado. |
| Lista todas las ranuras de guardado disponibles. |
Ejemplo — escribir:
{
"slot": "autosave",
"data": { "level": 3, "score": 4200, "checkpoint": "bridge" }
}Los nombres de las ranuras solo pueden contener caracteres alfanuméricos, guiones y guiones bajos (p. ej. slot1, autosave, new-game-plus).
Actor
Herramienta | Descripción |
| Pone un mensaje en la cola de la bandeja de entrada de un actor específico. Se procesa en el siguiente vaciado de ActorSystem. |
| Transmite un mensaje a todos los actores registrados. |
| Número de mensajes pendientes en la bandeja de entrada de un actor. |
Ejemplo — enviar mensaje:
{
"actorId": "enemy-spawner",
"message": { "type": "SPAWN_WAVE", "payload": { "wave": 3 } }
}Nota sobre el orden: ActorSystem vacía la bandeja de entrada de todos los actores antes de llamar a
update(). Los mensajes enviados durante el frame N se procesan antes de que se ejecute la lógica de actualización del frame N.
Desarrollo
npm run lint # TypeScript type-check (no emit)
npm test # run Vitest suite
npm run test:watch # watch modeLos tests se encuentran en src/tests/. Cubren la validación de entrada, el despacho de herramientas y los invariantes de seguridad (path traversal, inyección de metacaracteres de shell, nombres de herramientas desconocidos).
Cómo añadir una herramienta
Crea
src/tools/<domain>.ts— exporta una entrada de arraytoolDefy una funciónhandler.Registra ambas en
src/tools/index.tsmediante la llamada aregister()enbuildRegistry().Añade una entrada a
api-reference.jsonenemptysock-engine.Añade un archivo de skill a
eleferrets/emptysock-ai-skills.
Usa los helpers compartidos en src/lib/:
parse(schema, raw)— parse de Zod que lanzaMcpError(InvalidParams)al fallarSafeRelPath,SafeId,Vec2,Vec3,GameNum— esquemas Zod reutilizablestextResponse(data)— construye la respuesta estándar de contenido de texto de MCPwrapError(err)— escribe en stderr y vuelve a lanzar comoMcpError(InternalError)
Modelo de seguridad
Riesgo | Mitigación |
Argumentos malformados | Zod |
Path traversal | Esquema |
Inyección de shell | Sin |
Fuga de credenciales | Secretos solo desde |
Entradas demasiado grandes | Longitudes de cadena limitadas en cada campo del esquema |
Herramientas desconocidas |
|
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.13MIT
- 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