Tennis Analytics MCP
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
🎾 tennis-mcp
Zero-clone Model Context Protocol (MCP) server for Open Era ATP tennis.
Query 200,105 ATP matches (1968–2026), 7,622 player careers, 113,744 surface-split head-to-heads, 7,663 Match Charting Project shot/rally breakdowns, and curated dominance/drama indices (GSDI, NBI, Race to Greatness, Young Guns) directly inside Claude, Cursor, Antigravity, or VS Code — without cloning the 265 MB data repo.
⚡ Quick Start (Zero Clone)
tennis-mcp runs via uvx (or pip) and lazily caches only the Parquet/JSON tables your questions need into ~/.cache/tennis-mcp/.
Claude Desktop / Cursor / Antigravity (mcpServers)
{
"mcpServers": {
"tennis-mcp": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/sorukumar/tennis-mcp",
"tennis-mcp"
]
}
}
}Claude Code (CLI)
claude mcp add tennis-mcp -- uvx --from git+https://github.com/sorukumar/tennis-mcp tennis-mcpVS Code (.vscode/mcp.json)
{
"servers": {
"tennis-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/sorukumar/tennis-mcp",
"tennis-mcp"
]
}
}
}Local Development / Offline tml-data Override
If you already cloned sorukumar/tml-data, point TML_DATA_DIR at it to skip HTTPS downloads completely:
pip install -e ".[dev]"
TML_DATA_DIR=/path/to/tml-data/data tennis-mcpRelated MCP server: livetennisapi-mcp
🛠 Available MCP Capabilities
15 Tools (Powered by DuckDB + Parquet + Story JSONs)
Category | Tool | What It Queries |
Warehouse |
| Live row counts, date window, charting counts, and licenses |
Players |
| Filter 7,622 ATP careers by name, country IOC code, or Slam champion status |
Players |
| Career W-L, surface splits, Top 10 win%, recent matches, and MCP charting profile |
Rivalries |
| Surface-by-surface H2H breakdown ( |
Matches |
| Parameterized SQL search over |
Shot / Rally |
| 475 players' serve/return, rally length (1–3 / 4–6 / 7–9 / 10+), UF rate, Serve+1, and surface splits |
Shot / Rally |
| Per-match winners, unforced errors, rally distributions across |
Compare |
| Side-by-side comparison of 2–6 players across career stats, charting, and age snapshots |
Indices |
| Grand Slam Dominance Index (231 title runs) |
Indices |
| Nail-Biter Index (687 Grand Slam Finals & Semifinals) |
Indices |
| Age-for-age title & Slam pace: Big 3, Alcaraz, Sinner, Borg, Sampras, McEnroe, Lendl, Agassi |
Indices |
| Fonseca, Mensik, Tien, Jodar benchmarked against Alcaraz & Sinner |
Indices |
| Career age, matches, and years before first Grand Slam title across 59 champions |
Geography |
| Top 100 / Top 10 ATP evolution across 50 years by IOC code or snapshot year |
India |
| Open Era Indian ATP singles milestones & histories |
7 Resources (tennis://*)
tennis://overview,tennis://gsdi/top,tennis://nbi/top,tennis://greatness/summary,tennis://young-guns/summary,tennis://global/timeline,tennis://indian/notable
3 Prompt Templates
scouting_report(player_name)rivalry_breakdown(player1, player2)slam_campaign_audit(player_name, tournament)
💬 Example Questions You Can Ask Your AI
"Compare Jannik Sinner and Carlos Alcaraz on 1st-serve won%, unforced error rate, and Clay charting metrics."
"Show me Novak Djokovic vs Rafael Nadal head-to-head by surface, plus their highest Nail-Biter Index Slam matches."
"Which players won a Grand Slam with the fewest tour matches before their first major?"
"How does Joao Fonseca at age 18–20 track against Carlos Alcaraz in ATP wins and Top 50 wins?"
"List the top 5 Grass-court Grand Slam comebacks since 2000 sorted by comeback score and duration."
🏗 Architecture
Claude / Cursor / Antigravity / VS Code
│ (stdio MCP)
▼
tennis-mcp (Python + FastMCP/MCPServer + DuckDB)
│
├── TML_DATA_DIR set? ──▶ Local tml-data/data/*.parquet + *.json
│
└── Otherwise ──────────▶ Lazy cache (~/.cache/tennis-mcp/, 7-day TTL)
fetched via HTTPS from sorukumar/tml-data📄 License & Data Attribution
Code: MIT License (LICENSE)
ATP Match & Career Warehouse (
sorukumar/tml-data): Built on Tennismylife / TML-Database and Jeff Sackmann's ATP archive (MIT).Match Charting Project Tables (
mcp_*.parquet): Derived from Jeff Sackmann's Match Charting Project, licensed under CC BY-NC-SA 4.0 (attribution required; non-commercial share-alike for charting tables).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Google Search Console, GA4 and PageSpeed MCP server for Claude, ChatGPT and Cursor. Free, hosted.
Query, join, profile, clean and convert CSV/JSON/Parquet with server-side DuckDB over MCP.
The all-in-one data stack for agents. Upload files, run SQL, evolve tables, and render charts.
Hosted BigQuery MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceAn MCP server that enables natural language querying of over 10 million ball-by-ball cricket deliveries stored in a local DuckDB database. It provides 26 tools for analyzing player matchups, situational stats, and historical records across all major cricket formats and tournaments.3-
- AlicenseAqualityBmaintenanceReal-time tennis data for ATP, WTA, Challenger and ITF: live scores, player rankings, match-winner odds, and model win-probability. 12 read-only tools; a tier-gated endpoint returns a plain-English explanation of which plan it needs rather than a bare 403. Requires a paid API key.25245 npm134MIT
- AlicenseAqualityCmaintenanceA minimal MCP server that provides a persistent DuckDB SQL engine to AI assistants, enabling natural-language querying of CSVs, Parquet, and cloud data with 12 tools and optional read-only mode.12MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to answer tennis tactical questions using shot-by-shot charted match data, producing game plans, serve and return tendencies, scouting reports, match forecasts, and explanations of why a match turned. Exposes read-only tools for player reports, head-to-head game plans, match breakdowns, and tactical leaderboards, each with confidence margins and links to full pages.MIT