emptysock-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SAVE_BASE_DIR | No | Absolute path the save tools may read/write. Defaults to the process working directory. | |
| MCP_AUTH_TOKEN | No | Required bearer token on SSE transport requests. Leave blank to disable auth. | |
| EMPTYSOCK_API_TOKEN | No | Bearer token for authenticated engine API calls |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| navmesh_find_pathA | Find an A* path between two 2D points on a loaded navmesh. Returns an ordered array of waypoints or an empty array if no path exists. |
| navmesh_nearest_nodeC | Return the nearest walkable node on the navmesh to a given world point. |
| physics_raycast_2dB | Cast a ray in 2D physics space and return the first hit entity, hit point, and normal. |
| physics_raycast_3dC | Cast a ray in 3D physics space (Rapier3D) and return the first hit. |
| physics_overlap_circleB | Return all entity IDs whose 2D colliders overlap a circle. |
| physics_body_stateA | Return the current position, velocity, and angular velocity of a physics body by entity ID. |
| scene_create_entityC | Add a new entity to a scene. Returns the new entity's ID. |
| scene_list_entitiesB | List all entity IDs currently active in a scene. |
| scene_entity_infoC | Return the tag, active state, and component list for a specific entity. |
| scene_get_componentB | Retrieve the serialised state of a specific component on an entity. |
| save_readA | Read a save slot from disk and return its JSON data. |
| save_writeA | Write JSON data to a save slot on disk. |
| save_deleteA | Delete a save slot from disk. |
| save_listA | List all available save slots. |
| actor_send_messageA | Enqueue a message in a specific actor's inbox. The actor processes it on the next flush pass. |
| actor_broadcastB | Broadcast a message to all registered actors in the current ActorSystem. |
| actor_inbox_sizeB | Return the number of pending messages in an actor's inbox. |
| gms2_inspect_projectA | Read a GameMaker Studio 2 .yyp project file and return a JSON summary: project name, asset counts by type, and lists of object and script names. Read-only — does not modify any files. |
| emptysock_layer_infoA | Return reference documentation for the EmptySock LayerSystem API: defineLayer, addToLayer, setVisible, setParallax, and RenderSystem integration. |
| particle_emitter_configA | Get or set a ParticleSystem emitter configuration by emitter ID. Omit |
| story_graph_exportA | Export the Story Graph (VNSystem) for a named scene as a JSON object containing nodes and edges. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 21 tools
Tools are clearly separated by domain (navmesh, physics, scene, save, actor, etc.) and each tool targets a distinct action or query. Even within physics, 2D and 3D raycasts are explicitly differentiated. No two tools appear to do the same thing.
All tools follow a consistent domain_verb_noun pattern (e.g., scene_create_entity, save_list, actor_send_message). Suffixes like _2d and _3d are uniform, and the one odd name (emptysock_layer_info) still adheres to the same style. Naming is predictable and coherent.
With 21 tools, the count falls in the 16-25 range, which is borderline heavy. However, the server covers many distinct subsystems, so each tool arguably earns its place, but the overall number feels slightly excessive for a single MCP server.
The set covers core read/query operations across multiple domains, but there are notable gaps: scene entities can be created and inspected but not updated or deleted, physics only offers queries (no manipulation), and particle control is limited to configuration. This leaves some lifecycle operations incomplete.