Skip to main content
Glama
tqakdev

faceit-mcp

by tqakdev
README.md
# faceit-mcp

A standalone [MCP](https://modelcontextprotocol.io/) server that gives Claude live **CS2 FACEIT** data — player stats, match history, side-by-side comparisons, leaderboard, and ELO trend.

Works with **Claude Desktop** and **Claude Code**. Single-file, no framework dependencies beyond `mcp`, `aiohttp`, `aiosqlite`, and `python-dotenv`.

## Demo

> **You:** Compare zywoo, NiKo, and sh1ro side by side

> **Claude:** Here's a side-by-side comparison of the three players:
>
> | | ZywOo | NiKo | sh1ro |
> |---|---|---|---|
> | **ELO** | 4521 | 4218 | 4384 |
> | **Level** | 10 | 10 | 10 |
> | **K/D** | 1.43 | 1.38 | 1.41 |
> | **HS%** | 52.1% | 48.7% | 44.2% |
> | **Win Rate** | 61.3% | 58.9% | 60.1% |
> | **Avg Kills** | 24.8 | 23.6 | 23.1 |
> | **K/R** | 0.91 | 0.87 | 0.89 |

---

> **You:** How has NiKo been playing in his last 20 matches?

> **Claude:** NiKo's recent form over 20 matches:
> - **Record:** 13W – 7L (65.0% win rate)
> - **Avg K/D:** 1.42 | **Avg kills:** 24.3 | **Avg HS%:** 49.1%
> - **Current streak:** 3W
>
> Best maps: de_inferno (8W-2L, 70% wr), de_ancient (4W-1L, 80% wr)
> Worst map: de_vertigo (1W-3L, 25% wr)

## Tools

| Tool | Description |
|------|-------------|
| `get_player_stats` | ELO, skill level, region, lifetime K/D, HS%, win rate, streaks |
| `get_match_history` | Last N matches — map, W/L, K/D, kills, HS%, K/R |
| `compare_players` | Side-by-side stats for 2–6 FACEIT nicknames |
| `get_recent_form` | Aggregated stats from last N matches: win rate, avg K/D, current streak, per-map breakdown |
| `get_match_details` | Full scoreboard for a match by ID — teams, score, all player stats, multi-kills |
| `get_player_map_stats` | Per-map win rate, K/D, HS%, and K/R from lifetime segments |
| `get_leaderboard` | Registered users ranked by live ELO |
| `get_elo_trend` | Stored ELO snapshots for a registered user |

> All tools except `get_leaderboard` and `get_elo_trend` work for **any** public FACEIT player with just an API key. The leaderboard and ELO trend tools require a SQLite DB with registered users (see [DB setup](#leaderboard--elo-trend)).

## Requirements

- Python 3.12+
- [FACEIT Data API key](https://developers.faceit.com/) (free)

## Setup

**1. Clone and install deps**

```bash
git clone https://github.com/bluemadisonblue/faceit-mcp.git
cd faceit-mcp
pip install -r requirements.txt
```

**2. Set your API key**

Create a `.env` file next to the script:

```
FACEIT_API_KEY=your_key_here
```

Or pass it as an environment variable directly in the config below.

## Connect to Claude Desktop

Add to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "faceit-cs2": {
      "command": "python",
      "args": ["C:/full/path/to/faceit-mcp/faceit_mcp_server.py"],
      "env": { "FACEIT_API_KEY": "your_key_here" }
    }
  }
}
```

Config file location:
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`

## Connect to Claude Code

```bash
claude mcp add faceit-cs2 -- python /full/path/to/faceit-mcp/faceit_mcp_server.py
```

Then set `FACEIT_API_KEY` in the `.env` file next to the script.

## Example prompts

Once connected, just ask Claude naturally:

- *"What are s1mple's lifetime stats?"*
- *"Show me the last 10 matches for NiKo"*
- *"Compare zywoo, device, and sh1ro side by side"*
- *"How has NiKo been performing over his last 20 matches?"*
- *"Show the full scoreboard for match 1-abc123…"*
- *"Which maps does sh1ro perform best on?"*
- *"Show the leaderboard for our group"*
- *"How has my ELO changed over the last month?"*

## Leaderboard & ELO trend

`get_leaderboard` and `get_elo_trend` read from a local SQLite database. By default the DB lives at `~/.faceit-mcp/data.db` and is created automatically on startup.

To populate it, point `DB_PATH` at a database that has a `users` table:

```
DB_PATH=/path/to/your/bot_data.db
```

If you use the companion [CS2 FACEIT Telegram bot](https://github.com/bluemadisonblue/CS2DATA), set `DB_PATH` to the bot's database and these tools will reflect your registered users automatically.

## Environment variables

| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `FACEIT_API_KEY` | Yes | — | FACEIT Data API v4 key |
| `DB_PATH` | No | `~/.faceit-mcp/data.db` | SQLite database path |
| `FACEIT_CIRCUIT_FAILURE_THRESHOLD` | No | `4` | Consecutive failures before circuit opens (`0` to disable) |
| `FACEIT_CIRCUIT_OPEN_SEC` | No | `60` | How long the circuit stays open (seconds) |

## License

MIT