leekwars-mcp
leekwars-mcp
Standard TypeScript MCP server scaffold.
Structure
src/index.ts- entrypointsrc/auth/- MCP-owned LeekWars session handlingsrc/server/- server bootstrap and request routingsrc/tools/- manifest-driven tool definitions and registrysrc/tools/{core,auth,leek,fight,ai,items,reports}/- tool manifests grouped by domainsrc/resources/- resource definitionssrc/prompts/- prompt definitionssrc/config/- runtime configsrc/common/- shared types/helperssrc/scripts/- subprocess bridge for vendored LeekWars scriptssrc/tools/_shared/- vendored script helpers and shared assets
Auth
The server now owns the LeekWars session.
Required env vars:
LEEKWARS_LOGINLEEKWARS_PASSWORD
Optional env vars:
LEEKWARS_AUTH_RETRY_DELAY_MSLEEKWARS_API_BASE_URLLEEKWARS_SCRIPTS_DIR(defaults tosrc/tools)LEEKWARS_SOCKET_URLLEEKWARS_SOCKET_PROTOCOLS(comma-separated)LEEKWARS_SOCKET_CONNECT_TIMEOUT_MSLEEKWARS_SOCKET_REQUEST_TIMEOUT_MSLEEKWARS_SOCKET_MAX_BUFFERED_EVENTSMCP_SERVER_NAME
Tool registry
Tools are manifest-driven from src/tools/manifest.ts and executed through src/tools/registry.ts.
Tool output kinds:
json- stdout onlymarkdown- stdout onlytext- stdout + stderr formatting
Testing
npm test- smoke tests for manifest loading, output formatting, and representative tool executionnpm run check- typecheck onlynpm run build- compile todist/
Scripts
npm run dev- run in watch modenpm run start- run compiled server
Fight logs
fetch_fight_logs uses Playwright. If the browser binary is missing, install it with:
npx playwright install chromiumSocket bridge
The socket bridge connects to wss://leekwars.com/ws by default (override with LEEKWARS_SOCKET_URL) and uses the LeekWars session auth headers. It exposes bridge tools:
socket_connectsocket_statussocket_sendsocket_callsocket_recvsocket_close
Encyclopedia tools
Encyclopedia search and page retrieval live in the separate leekwars-mcp-encyclopedia server.
Configure both MCP servers if you need both game actions and encyclopedia knowledge tools.