Exposes live CS2 FACEIT data as MCP tools for Claude Desktop / Claude Code. Provides player stats, match history, leaderboards, and ELO trends from the FACEIT API.
Server has 8 tools with consistent verb_noun naming (get_*, compare_*) and all include descriptions. However, descriptions are terse (avg 80 chars, well below the 194-char baseline for A+ tools) and lack actionable context. Parameter descriptions exist but are minimal. No output schemas are documented in the code, LLMs cannot predict response structure. Error handling is present in the API client but not surfaced to tool callers. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only. Schema validation is basic; no enum constraints or format specifications visible.
side-by-side stats for 2–6 FACEIT nicknames
stored ELO snapshots for a registered user (requires DB with history)
registered users ranked by live ELO (requires DB with users)
full scoreboard for a match by ID: teams, score, all player stats, multi-kills
last N matches with map, W/L, K/D, kills, HS%, K/R
per-map win rate, K/D, HS%, K/R from lifetime segments
No output schemas documented. LLMs cannot predict response structure, forcing them to guess what fields are available for downstream reasoning. All 8 tools lack return type documentation.
Tool descriptions are terse (avg 80 chars vs 194-char baseline). Lack context on WHEN to use each tool vs similar ones. E.g., get_recent_form vs get_match_history distinction unclear. No dependency hints (e.g., 'Call get_player_stats first to verify player exists').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
ELO, level, region, lifetime K/D, HS%, win rate, streaks
aggregated stats from last N matches: win rate, K/D, streak, map breakdown
No tool annotations despite all tools being read-only. Missing readOnlyHint declarations prevent LLMs from understanding safety properties and optimizing retry logic.
Parameter descriptions are minimal. 'limit' params lack range constraints (e.g., 'default 10, max 100' is stated but not in schema). No enum constraints on 'nickname' or 'match_id' to guide LLM input validation.
Error handling in FaceitAPI client (FaceitNotFoundError, FaceitRateLimitError, FaceitCircuitOpenError) is not surfaced to tool callers with recovery guidance. LLMs receive raw exceptions without actionable next steps.