MCP server that serves cricket data over the Model Context Protocol on stdin/stdout, providing live cricket match information, scores, and analysis for MCP clients like Claude Desktop, Claude Code, and Cursor
Cricket-mcp has well-structured tool definitions with clear naming (verb_noun pattern) and comprehensive descriptions (avg 180 chars). All 11 tools have input schemas with typed parameters. However, parameter descriptions are sparse or missing in several tools (e.g., get_match_detail, get_match_state lack descriptions for league_id/event_id). Output schemas are not documented, LLMs cannot predict response structure. Error handling is absent; no recovery guidance or actionable error messages. Tool composition is sound (single responsibility), but missing pagination/limits guidance for list_live_matches. No security considerations visible (credentials, rate limits, input validation).
Decodes cricket ball-by-ball commentary jargon for newcomers. Annotates a commentary line with known cricket terms and their plain-English (baseball-flavored) translations. Each text region is claimed by the longest matching term only.
Turns raw cricket match state into plain English with baseball framing. Provides win probabilities, run rates, projections, and narrative explanation of the current match situation.
Calculates the current run rate (runs per over) based on balls bowled so far.
Fetches detailed match state including team scores, status, and event type from ESPN's scoreboard API. Returns simplified match information with current scores and match status.
Converts a match detail into a structured MatchState object representing the current innings in progress, including batting team, bowling team, runs, wickets, overs, target (if chasing), and innings number. Returns nil for Test matches or when no scores are available.
Returns a very rough par first-innings total by format. Scales for nonstandard overs counts. Uses venue-specific, league-specific, or global par data when available, falling back to format constants (165 for T20, 285 for ODI, 136.6 for The Hundred).
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting) for any of the 11 tools. Forces agents to guess downstream field names and types.
Parameter descriptions missing or incomplete. league_id and event_id in get_match_detail, get_match_state, get_play_by_play lack descriptions. LLMs cannot infer what values are valid (e.g., format, example values, constraints).
No error handling or recovery guidance. Tools do not document what happens on invalid league_id/event_id, network failures, or missing data. LLMs receive raw errors with no actionable next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Fetches ball-by-ball commentary from ESPN's play-by-play API for a match. Returns commentary lines in reverse chronological order (newest first), with fallback to shortText when text is empty, and drops empty lines.
Projects a first innings total based on current run rate, damped by wickets lost. Uses par score as baseline when no balls have been bowled.
Calculates the required run rate during a chase. Returns (rate, true) during a chase with balls remaining, or (0, false) otherwise.
Estimates P(batting side wins) using fitted logistic models calibrated on Cricsheet ball-by-ball archives. Transparent and reproducible, not a betting model. Handles both limited-overs innings (T20, ODI, The Hundred) and Test matches.
Returns ESPNcricinfo's curated live-match list joined with ESPN discovery for league/event IDs and clean titles. Falls back to full ESPN list if RSS is down, or raw RSS if discovery is. Cached 15s: every user shares one fetch.
No pagination or result limits documented. list_live_matches may return unbounded results; no mention of page/offset/limit parameters or total count. Large result sets blow context windows.
Tool composition assumes agent knows ESPN API structure. Tools like get_match_detail and get_match_state both accept league_id + event_id but their relationship and when to call each is not documented. Agents may call both redundantly.