OpenDota MCP — Dota 2 open stats. Hero meta (pick/win rates), recent professional matches, player search and profiles (rank, win/loss). Keyless; free tier rate-limited (~60 req/min).
Server has 4 well-defined tools with complete input schemas and descriptions. All tools are READ_ONLY and follow verb_noun naming (hero_stats, pro_matches, search_players, get_player). Descriptions are clear and mention OpenDota's keyless/rate-limited nature. However, output schemas are not documented, LLMs cannot predict response structure. Parameter descriptions are minimal (e.g., 'Max heroes to return' lacks context on when to use). No error recovery guidance beyond rate-limit handling. Missing tool annotations (readOnlyHint). Role filtering in hero_stats lacks enum constraint, inviting hallucinated values.
Dota 2 player profile by account ID: name, country, rank tier, leaderboard rank, and win/loss totals. OpenDota keyless data.
Dota 2 hero meta: per-hero pick/win/ban counts in pro play, primary attribute, attack type, and roles. Optionally filter by role (e.g. "Carry", "Support"). OpenDota keyless data.
Recent professional Dota 2 matches: teams, league, winner, score and duration. OpenDota keyless data.
Search Dota 2 players by persona (display) name. Returns matching account IDs and similarity scores. OpenDota keyless data; may be empty if rate-limited.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). Responses are shaped in code but not declared in tool definitions.
hero_stats 'role' parameter accepts free-form string with no enum constraint. Description says 'e.g. Carry, Support, Initiator' but does not enforce valid values. LLMs may pass invalid roles.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are READ_ONLY but this is not declared in schema, forcing LLMs to infer safety from descriptions.
Error handling returns generic error objects but does not guide recovery. Rate-limit errors say 'try again shortly' but do not suggest backoff strategy or alternative tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Parameter descriptions lack context on when to use them. 'Max heroes to return (default 30)' does not explain why an LLM would adjust this or what happens if omitted.