Skip to main content
Glama
Jose-Prince

Game Predictor MCP Server

by Jose-Prince
README.md
# Game-predictor MCP Server

A Model Context Protocol (MCP) server that predicts video game scores using machine learning based on game characteristics like price, release month, tags, genres, and platforms.

## Purpose

This MCP server provides AI assistants with the capability to predict game scores (similar to Metacritic ratings) by analyzing various game attributes. It uses a Random Forest regression model trained on Steam game data to make predictions.

## Features

- **Score Prediction**: Predicts game scores (0-100 scale) based on game characteristics
- **Steam Data Integration**: Automatically collects game data from Steam API and SteamSpy
- **RAWG API Integration**: Retrieves additional platform information
- **Machine Learning**: Uses scikit-learn's Random Forest algorithm for predictions
- **MCP Protocol**: Compatible with Claude Desktop and other MCP clients

## Requirements

### Dependencies

Install the required packages:

```bash
pip install -r requirements.txt
```

### API Keys

You'll need a RAWG API key for platform data:

1. Sign up at [RAWG.io](https://rawg.io/apidocs)
2. Create a `.env` file in the project root:

```env
RAWG_KEY=your_rawg_api_key_here
```

## Installation & Setup

1. **Clone/Download the project**
2. **Install dependencies**:
   ```bash
   pip install -r requirements.txt
   ```
3. **Set up environment variables**:
   ```bash
   echo "RAWG_KEY=your_api_key" > .env
   ```
4. **Run the server**:
   ```bash
   python mcp_server/main.py
   ```

## How It Works

### Data Collection
- On first run, the server automatically creates a dataset by fetching game information from:
  - **SteamSpy**: Player statistics and tags
  - **Steam Store API**: Game details and pricing
  - **RAWG API**: Platform information and ratings
- Data is saved to `data/games_dataset.csv`

### Model Training
- Uses Random Forest regression with 200 estimators
- Features include: price, release month, encoded tags/genres/platforms, and player statistics
- Target variable: Game score (Metacritic or RAWG rating converted to 0-100 scale)

## Available Tools

### `make_prediction`

Predicts a game's score based on its characteristics.

**Parameters:**
- `price` (float): Game price in USD
- `release_month` (int): Month of release (1-12)
- `tags` (list[str]): List of game tags (e.g., ["Action", "Multiplayer"])
- `genres` (list[str]): List of game genres (e.g., ["Action", "Adventure"])
- `platforms` (list[str]): List of platforms (e.g., ["PC", "PlayStation 5"])

**Returns:** Predicted score (float, 0-100 scale)

## Usage Examples

Here are some example queries you can use with the MCP server:

### Basic Prediction
```
"Predict the score for a $29.99 action game releasing in December with tags 'Action' and 'Singleplayer', genre 'Action', on PC platform"
```

### Indie Game Prediction
```
"What score would you predict for an indie puzzle game costing $14.99, releasing in March, with tags ['Indie', 'Puzzle', 'Casual'], genres ['Indie', 'Casual'], and available on ['PC', 'Nintendo Switch']?"
```

### AAA Game Prediction
```
"Predict the score for a $59.99 AAA RPG releasing in November with tags ['RPG', 'Open World', 'Multiplayer'], genres ['Action', 'RPG'], on ['PC', 'PlayStation 5', 'Xbox Series X/S']"
```

### Free-to-Play Game
```
"What would be the predicted score for a free-to-play battle royale game (price: 0) releasing in June with tags ['Free to Play', 'Battle Royale', 'Multiplayer'], genres ['Action'], on ['PC', 'Mobile']?"
```

## File Structure

```
mcp_server/
├── main.py                 # Entry point
├── server.py              # FastMCP server setup
├── tools/
│   └── predict_tool.py    # Prediction tool definition
├── utils/
│   ├── game.py           # Game data collection utilities
│   └── predict_model.py  # ML model setup and prediction
├── data/                 # Generated dataset storage
│   └── games_dataset.csv # Game data (auto-generated)
├── requirements.txt      # Python dependencies
└── .env                 # Environment variables (you create this)
```

## Configuration with Claude Desktop

To use this server with Claude Desktop, add it to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "game-predictor": {
      "command": "python",
      "args": ["/path/to/your/mcp_server/main.py"],
      "env": {
        "RAWG_KEY": "your_rawg_api_key_here"
      }
    }
  }
}
```

## Limitations

- **Dataset Size**: Initially limited to 1000 games to avoid API rate limits
- **API Dependencies**: Requires internet connection for RAWG API
- **Rate Limiting**: Includes 1-second delays between API calls
- **Data Quality**: Predictions depend on the quality of training data
- **Regional Variations**: Scores may not reflect regional preferences

## Troubleshooting

### Common Issues

1. **"games_dataset.csv not found"**: 
   - This is normal on first run. The server will automatically create the dataset.

2. **API Rate Limiting**:
   - The server includes built-in delays to respect API limits
   - If you encounter rate limits, wait before retrying

3. **Model Not Trained Error**:
   - Ensure `setup_model()` is called before making predictions
   - Check that the CSV file was created successfully

4. **Missing RAWG API Key**:
   - Verify your `.env` file exists and contains the correct API key
   - Ensure the key is valid and active