Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoPort for the HTTP entry point (http-server.js) to listen on.3000
MCP_HEADLESSNoSet to true to run the browser headless. Leave it false if you want to actually watch Claude play.false
GAME_CLIENT_URLNoBase URL of the Angular client to connect to. Point this at http://localhost:4200 to play against a local ng serve.https://shooting-game-eight.vercel.app
MAX_CONCURRENT_SESSIONSNoHard cap on simultaneous browser sessions across all connected clients; join_match fails with a 'Server busy' error past this.6
SESSION_IDLE_TIMEOUT_MSNoHow long a session can go without a tool call before its browser is closed and the slot freed.900000

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
join_matchA

Join a friendly 1v1 match of the shooting game as the second player, using the match code the human shares with you. Launches a browser and connects to the live game. Omit the code to enter random matchmaking instead.

get_stateA

Read the current match state: round, score, your health and position, your opponent's health and position, arena size, and any round/match-end announcement. Positions are pixel coordinates, arena origin top-left.

moveA

Move in one direction for a short duration. The player steps ~10px roughly every 20ms while the key is held and rotates to face that direction, which is also the direction shoot() will fire in.

shootA

Fire in whichever direction you last moved (there is no separate aim — facing is set by your last move). Holding longer fires multiple shots.

screenshotA

Get a PNG screenshot of the current arena, so you can look at the match instead of only reading coordinates.

leave_matchA

Disconnect from the current match and close the browser session.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.3/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct action: joining, reading structured state, moving, shooting, screenshotting, and leaving. get_state and screenshot both provide observation but are clearly separated as text data vs visual image, so no real ambiguity.

Naming Consistency4/5

join_match, get_state, and leave_match follow a clear verb_noun pattern, and move/shoot are intuitive imperative verbs. screenshot is a minor deviation because it is a noun used as an imperative rather than a verb_object form like take_screenshot.

Tool Count5/5

Six tools is well-scoped for a real-time browser game agent: lifecycle, movement/action, and observation are covered without redundant utilities. Every tool earns its place.

Completeness5/5

The set covers the full match lifecycle: joining, observing via both state and screenshot, acting via move and shoot, and leaving. The shoot-direction note confirms aiming is handled through movement, so no separate aim tool is needed.

Maintenance

ActivityMaintained
ResponsivenessNo issues