emptysock-mcp
emptysock-mcp
Model Context Protocol-Server für die EmptySock-Spiel-Engine. Stellt die Engine-Systeme — NavMesh, Physics, Scene, Save und Actor — als MCP-Tools bereit, die von Claude Desktop, KI-Agenten und der Claude-API genutzt werden können.
Voraussetzungen
Node.js 20+
npm 9+
Related MCP server: Hayba
Installation
git clone https://github.com/eleferrets/emptysock-mcp.git
cd emptysock-mcp
npm install
npm run buildKonfiguration
Kopiere die Beispiel-Umgebungsdatei und fülle alle benötigten Werte aus:
cp .env.example .envVariable | Erforderlich | Beschreibung |
| Nein | Bearer-Token für authentifizierte Engine-API-Aufrufe |
| Nein | Erforderliches Bearer-Token für SSE-Transportanfragen. Leer lassen, um die Authentifizierung zu deaktiveren. |
| Nein | Absoluter Pfad, den die Speicher-Tools lesen/schreiben dürfen. Standardmäßig das Arbeitsverzeichnis des Prozesses. In der Produktion explizit festlegen. |
Commite
.envniemals — es ist in der.gitignoreenthalten. Speichere Geheimnisse in deinem CI/CD-Secret-Manager auf, nicht im Repository.
Den Server starten
stdio (empfohlen für die lokale Verwendung und Claude Desktop)
npm run dev # development — tsx, no build step
# or after building:
node dist/server.jsDer Server kommuniziert über stdin/stdout. Es gibt keinen Netzwerkport und keine Authentisierungsschnittstelle.
Claude Desktop
Füge den Server zu deiner Claude-Desktop-Konfiguration hinzu (~/Library/Application Support/Claude/claude_desktop_config.json unter macOS):
{
"mcpServers": {
"emptysock": {
"command": "node",
"args": ["/absolute/path/to/emptysock-mcp/dist/server.js"],
"env": {
"SAVE_BASE_DIR": "/absolute/path/to/your/saves"
}
}
}
}Starte Claude Desktop neu. Die EmptySock-Tools erscheinen dann in der Tool-Auswahl.
Verfügbare Tools
NavMesh
Tool | Beschreibung |
| A*-Pfad zwischen zwei 2D-Weltpunkten auf einem geladenen NavMesh. Gibt geordnete Wegpunkte oder |
| Nächstgelegener begehbaer NavMesh-Knoten zu einem gegebenen Weltpunkt. |
Beispiel — Pfad finden:
{
"from": { "x": 0, "y": 0 },
"to": { "x": 100, "y": 50 },
"mapId": "level1"
}Physics
Tool | Beschreibung |
| Wirft einen Strahl im 2D-Physikraum; gibt die erste getrofene Entität, den Treffpunkt und die Normale zurück. |
| Wirft einen Strahl im 3D-Physikraum (Rapier3D); gibt den ersten Treffer zurück. |
| Alle Entitäts-IDs, deren 2D-Collider einen Kreis überlappen. |
| Aktuelle Position, Geschwindigkeit und Winkelgeschwindigkeit eines Physik-Körpers anhand der Entitäts-ID. |
Beispiel — Kreisüberlappung:
{
"center": { "x": 50, "y": 50 },
"radius": 20,
"layerMask": 3
}Scene
Tool | Beschreibung |
| Alle in einer Szene aktiven Entitäts-IDs. |
| Tag, Aktivzustand und Komponentenliste für eine bestimmte Entität. |
| Serialsierter Zustand einer bestimmten Komponente auf einer Entität. |
Beispiel — Komponente abrufen:
{
"sceneId": "gameplay",
"entityId": "player-001",
"componentType": "Transform"
}Save
Alle Speicher-Tools sind per Sandbox auf SAVE_BASE_DIR beschränkt. Pfad-Traversal (.., absolute Pfade) wird bereits auf Schema-Ebene und erneut beim Auflösen abgelehnt.
Tool | Beschreibung |
| Liest einen Speicherstand von der Festplatte und gibt seine JSON-Daten zurück. |
| Schreibt ein JSON-Objekt in einen benannten Speicherstand. |
| Löscht einen Speicherstand. |
| Listet alle verfügbaren Speicherstände auf. |
Beispiel — Schreiben:
{
"slot": "autosave",
"data": { "level": 3, "score": 4200, "checkpoint": "bridge" }
}Slotnamen dürfen nur alphanumerische Zeichen, Bindestriche und Unterstriche enthalten (z. B. slot1, autosave, new-game-plus).
Actor
Tool | Beschreibung |
| Stellt eine Nachricht in den Posteingang eines bestimmten Actors. Wird beim nächsten ActorSystem-Flush verarbeitet. |
| Sendet eine Nachricht per Broadcast an alle registrierten Actors. |
| Anzahl der ausstehenden Nachrichten im Posteingang eines Actors. |
Beispiel — Nachricht senden:
{
"actorId": "enemy-spawner",
"message": { "type": "SPAWN_WAVE", "payload": { "wave": 3 } }
}Hinweis zur Reihenfolge: ActorSystem leert den Posteingang jedes Actors, bevor
update()aufgerufen wird. Nachrichten, die während Frame N gesendet werden, werden vollständig verarbeitet, bevor die Update-Logik von Frame N ausgeführt wird.
Entwicklung
npm run lint # TypeScript type-check (no emit)
npm test # run Vitest suite
npm run test:watch # watch modeDie Tests befinden sich in src/tests/. Sie decken Eingabevalidierung, Tool-Dispatch und Sicherheitsinvarianen ab (Pfad-Traversal, Shell-Metazeichen-Injektion, unbekannte Toolnamen).
Ein Tool hinzufügen
Erstelle
src/tools/<domain>.ts— exportiere einentoolDef-Array-Eintrag und einehandler- Funktion.Registriere beide in
src/tools/index.tsüber denregister()- Aufruf inbuildRegistry().Füge einen Eintrag zu
api-reference.jsoninemptysock-enginehinzu.Füge eine Skill-Datei zu
eleferrets/emptysock-ai-skillshinzu.
Verwende die gemeinsamen Helfer in src/lib/:
parse(schema, raw)— Zod-Parse, der bei einem FehlerMcpError(InvalidParams)wirftSafeRelPath,SafeId,Vec2,Vec3,GameNum— wiederverwendbare Zod-SchemastextResponse(data)— erstellt die standardmäßige MCP-Textinhalts-AntwortwrapError(err)— protokolliert auf stderr und wirft ihn alsMcpError(InternalError)erneut
Sicherheitsmodell
Risiko | Gegenmaßnahme |
Fehlerhafte Argumente | Zod- |
Pfad-Traversal | Schema |
Shell-Injektion | Kein |
Leakage von Zugangsdaten | Geheimnisse nur aus |
Übergroße Eingaben | Stringlängen sind auf jedem Schema-Feld begrenzt |
Unbekannte Tools |
|
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