How halogenandtoast/arkhamhorror works
Arkham Horror LCG is a browser-based implementation of the cooperative card game. Players enter through the web app, authenticate, create or join a game, and play through campaign or standalone scenarios; the interface also supports deck building/import, multiplayer, tarot readings, and campaign records. A separate Arkham Cards MCP service offers custom-card authoring and library tools over local stdio or remote HTTP. The tree and excerpts show the frontend and MCP entry points, but not the backend game engine or most frontend wiring, so those connections are kept limited.
Components 25
Web application
- Vue app shell
frontend/src/App.vue - App bootstrap
frontend/src/main.ts - Route views
frontend/src/router/index.ts - API client
frontend/src/api.ts - Accounts
frontend/src/stores/user.ts
Game experience
- Game screen
frontend/src/arkham/views/Game.vue - Scenario play
frontend/src/arkham/components/Scenario.vue - Campaign records
frontend/src/arkham/components/Campaign.vue - Deck building
frontend/src/arkham/views/Deck.vue - Card catalog
frontend/src/arkham/views/Cards.vue - Multiplayer rooms
frontend/src/arkham/components/MultiplayerLobby.vue
Card authoring tools
- Local MCP server
mcp/arkham-cards/server.py - HTTP MCP server
mcp/arkham-cards/http_server.py - Tool registry
mcp/arkham-cards/lib/tools.py - Custom-card library
mcp/arkham-cards/lib/library.py - Card validation
mcp/arkham-cards/lib/validate.py - Card schema
mcp/arkham-cards/lib/schema.py - DSL guide
mcp/arkham-cards/lib/guide.py
Harness utility
- Harness CLI
frontend/harness/cli.mjs - Harness API
frontend/harness/lib/api.mjs - Harness state
frontend/harness/lib/state.mjs
Other components
- Player
- Tool caller
- Arkham API
- Custom-card API
Connections 23
- Player → Vue app shell: opens
README.md - Vue app shell → Route views: renders routes
frontend/src/App.vue - App bootstrap → Vue app shell: mounts
frontend/src/main.ts - App bootstrap → API client: configures auth errors
frontend/src/main.ts - Route views → Game screen: routes to
- Game screen → Scenario play: presents play
- Player → Deck building: builds or imports
README.md - Player → Multiplayer rooms: plays with others
README.md - Player → Campaign records: tracks campaign
- Player → Card catalog: browses cards
- Tool caller → Local MCP server: sends MCP requests
mcp/arkham-cards/server.py - Local MCP server → Tool registry: dispatches tools
mcp/arkham-cards/server.py - Local MCP server → Custom-card library: mints local token
mcp/arkham-cards/server.py - HTTP MCP server → Tool registry: shares tools
mcp/arkham-cards/http_server.py - Tool registry → Custom-card library: uses library
mcp/arkham-cards/lib/tools.py - Tool registry → Card validation: validates cards
mcp/arkham-cards/lib/tools.py - Card validation → Card schema: checks schema
mcp/arkham-cards/lib/validate.py - Tool registry → DSL guide: provides guidance
mcp/arkham-cards/lib/tools.py - Custom-card library → Custom-card API: forwards requests
mcp/arkham-cards/lib/library.py - Harness CLI → Harness API: runs game actions
frontend/harness/cli.mjs - Harness CLI → Harness state: reads state
frontend/harness/cli.mjs - Harness API → Harness state: loads token
frontend/harness/lib/api.mjs - Harness API → Arkham API: calls endpoints
frontend/harness/lib/api.mjs