# rennakira/spicy-monopoly architecture

> Architecture diagram of the GitHub repository rennakira/spicy-monopoly, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rennakira/spicy-monopoly
- Repository: https://github.com/rennakira/spicy-monopoly

## Overview

涩涩大富翁 is a two-player turn-based board game whose engine handles movement, task selection, safety rules, and scoring. Players can interact through the Python CLI, an HTTP API, or MCP tools; the API and MCP paths ultimately expose game operations to an AI or other client. The graph preserves the documented task, truth, identity, and feature-card capabilities. Source excerpts are partial, so uncertain internal call sequences are omitted.

Main entry points: [`monopoly_play.py`](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_play.py) (Game Engine), [`monopoly_api.py`](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_api.py) (HTTP API), [`mcp-server.js`](https://github.com/rennakira/spicy-monopoly/blob/main/mcp-server.js) (MCP Server), [`monopoly-library.v2.json`](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly-library.v2.json) (Task Library)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_gameplay["Game Engine"]
  node_engine["Game Engine<br/>[monopoly_play.py]"]
  node_board_turns["Board and Turns<br/>[monopoly_play.py]"]
  node_task_rules["Tasks and Safety<br/>[monopoly_play.py]"]
  node_economy["Coins and Property<br/>[monopoly_play.py]"]
  node_identity_cards["Identities and Cards<br/>[monopoly_play.py]"]
end

subgraph group_interfaces["Player Interfaces"]
  node_cli["Python CLI<br/>[monopoly_play.py]"]
  node_http_api["HTTP API<br/>[monopoly_api.py]"]
  node_mcp["MCP Server<br/>[mcp-server.js]"]
end

subgraph group_content["Game Content"]
  node_task_library["Task Library"]
  node_truth_library["Truth Library"]
  node_identity_library["Identity Library"]
end

subgraph group_state["Game State"]
  node_game_store[("Game State Files<br/>[monopoly_api.py]")]
  node_pair_history[("Pair History<br/>[monopoly_api.py]")]
end

node_players(("Players"))
node_ai_client(("AI Client"))
node_hosted_api["Hosted API"]

node_players -->|"run commands"| node_cli
node_cli -->|"invoke game"| node_engine
node_players -->|"play with"| node_ai_client
node_ai_client -->|"call tools"| node_mcp
node_ai_client -->|"send requests"| node_http_api
node_mcp -.->|"forward requests"| node_hosted_api
node_mcp -.->|"forward requests"| node_http_api
node_http_api -->|"invoke game"| node_engine
node_engine -->|"runs turns"| node_board_turns
node_engine -->|"draws and filters"| node_task_rules
node_engine -->|"settles rewards"| node_economy
node_engine -->|"handles events"| node_identity_cards
node_engine -->|"loads tasks"| node_task_library
node_engine -->|"loads truths"| node_truth_library
node_engine -->|"loads identities"| node_identity_library
node_http_api -->|"reads and writes"| node_game_store
node_http_api -->|"reads and writes"| node_pair_history

click node_cli "https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_play.py"
click node_http_api "https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_api.py"
click node_mcp "https://github.com/rennakira/spicy-monopoly/blob/main/mcp-server.js"
click node_engine "https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_play.py"
click node_board_turns "https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_play.py"
click node_task_rules "https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_play.py"
click node_economy "https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_play.py"
click node_identity_cards "https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_play.py"
click node_task_library "https://github.com/rennakira/spicy-monopoly/blob/main/monopoly-library.v2.json"
click node_truth_library "https://github.com/rennakira/spicy-monopoly/blob/main/monopoly-truths.json"
click node_identity_library "https://github.com/rennakira/spicy-monopoly/blob/main/monopoly-identities.json"
click node_game_store "https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_api.py"
click node_pair_history "https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_api.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_engine,node_board_turns,node_task_rules,node_economy,node_identity_cards,node_ai_client toneBlue
class node_cli,node_http_api,node_mcp toneAmber
class node_task_library,node_truth_library,node_identity_library,node_hosted_api toneMint
class node_game_store,node_pair_history toneRose
class node_players toneIndigo
```

## Components

### Game Engine

- [Game Engine](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_play.py): `monopoly_play.py`
- [Board and Turns](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_play.py): `monopoly_play.py`
- [Tasks and Safety](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_play.py): `monopoly_play.py`
- [Coins and Property](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_play.py): `monopoly_play.py`
- [Identities and Cards](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_play.py): `monopoly_play.py`

### Player Interfaces

- [Python CLI](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_play.py): `monopoly_play.py`
- [HTTP API](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_api.py): `monopoly_api.py`
- [MCP Server](https://github.com/rennakira/spicy-monopoly/blob/main/mcp-server.js): `mcp-server.js`

### Game Content

- [Task Library](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly-library.v2.json): `monopoly-library.v2.json`
- [Truth Library](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly-truths.json): `monopoly-truths.json`
- [Identity Library](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly-identities.json): `monopoly-identities.json`

### Game State

- [Game State Files](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_api.py): `monopoly_api.py`
- [Pair History](https://github.com/rennakira/spicy-monopoly/blob/main/monopoly_api.py): `monopoly_api.py`

### Other components

- **Players**
- **AI Client**
- **Hosted API**

## Connections

- Players → Python CLI: run commands
- Python CLI → Game Engine: invoke game
- Players → AI Client: play with
- AI Client → MCP Server: call tools
- AI Client → HTTP API: send requests
- MCP Server → Hosted API: forward requests
- MCP Server → HTTP API: forward requests
- HTTP API → Game Engine: invoke game
- Game Engine → Board and Turns: runs turns
- Game Engine → Tasks and Safety: draws and filters
- Game Engine → Coins and Property: settles rewards
- Game Engine → Identities and Cards: handles events
- Game Engine → Task Library: loads tasks
- Game Engine → Truth Library: loads truths
- Game Engine → Identity Library: loads identities
- HTTP API → Game State Files: reads and writes
- HTTP API → Pair History: reads and writes
