Large language models do not know today's tennis scores. The Model Context Protocol fixes that by giving the model tools it can call. This connects Claude to live tennis data in one command.
Setup
Claude Code
claude mcp add livetennis -e LIVETENNISAPI_KEY=twjp_… -- npx -y livetennisapi-mcp
Claude Desktop — add to claude_desktop_config.json:
{
"mcpServers": {
"livetennis": {
"command": "npx",
"args": ["-y", "livetennisapi-mcp"],
"env": { "LIVETENNISAPI_KEY": "twjp_…" }
}
}
}
Cursor, Zed and any other MCP client take the same command and the same
environment variable. There is nothing to install — npx fetches it on demand.
Then just ask
What tennis matches are live right now?
Who's winning the Alcaraz match, and what does the model give him?
Show me Sinner's ranking and recent results.
The 12 tools
| Tool | Returns | Plan |
|---|---|---|
get_live_matches |
Matches in progress with live scores | BASIC |
get_upcoming_matches |
Matches starting soon | BASIC |
get_match |
Full detail for one match | BASIC |
get_match_score |
Current score only — fastest read | BASIC |
search_players |
Find players by name | BASIC |
get_player |
Profile, ranking, country, handedness | BASIC |
get_fixtures |
Forward schedule | BASIC |
get_recent_results |
Completed matches and winners | BASIC |
get_match_events |
Breaks, games, sets, momentum runs | PRO |
get_match_odds |
Match-winner prices, bid / ask / mid | PRO |
get_match_analysis |
Model thesis and win probability | ULTRA |
check_api_status |
Reachability and which plan your key is on | — |
Everything is read-only. No tool can modify anything.
A design decision worth explaining
The API gates endpoints by plan and returns a bare
403 {"error":"upgrade_required"}. Hand that to a language model and it will
usually invent a reason or retry pointlessly — neither of which helps you.
So every tool that can hit a plan wall returns a plain-English explanation instead, as a normal result rather than an error:
This data requires the ULTRA plan, and the configured API key is on a lower tier. Nothing is wrong with the key — the endpoint is simply not included in the current plan.
Marking it as an error makes MCP clients retry or bail, which loses the one
piece of information you actually need. check_api_status also probes upward to
report which plan your key is really on, so you can diagnose it without guessing.
Your key stays local
The server runs on your machine. The key is read from the environment by that
process and is sent only to api.livetennisapi.com.
Where to go next
- Source: github.com/livetennisapi/livetennisapi-mcp
- npm: livetennisapi-mcp
- Official MCP Registry:
io.github.livetennisapi/livetennisapi-mcp - Plans: https://livetennisapi.com/#pricing