A side-by-side look at the Livetennisapi MCP and SportAPI MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Livetennisapi MCP for sports work as a local process; choose SportAPI for sports as a local process. You can also run both side by side in one mcpServers block.
LIVETENNISAPI_KEY.get_live_matches, get_upcoming_matches, get_match.SPORTAPI_KEY, SPORTAPI_BASE_URL, SPORTAPI_LANGUAGE.list_sports, get_menu, list_countries.Rows where the two servers differ are marked.
| Spec | S SportAPI | |
|---|---|---|
| Category | Sports | Sports |
| Quality signal | 50/100 · Good | 52/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | API key required | Not declared |
| Pricing | Freemium | Not declared |
| Required env vars | LIVETENNISAPI_KEY | SPORTAPI_KEYSPORTAPI_BASE_URLSPORTAPI_LANGUAGE |
| Verified owner | Community listing | Community listing |
| GitHub stars | 152 | 0 |
| Directory activity | 4 views 0 installs 0 upvotes | 0 views 0 installs 0 upvotes |
| Tools | 24 | 11 |
| Full listing | View Livetennisapi MCP | View SportAPI |
get_live_matchesList tennis matches currently in progress, with live scores. Covers ATP, WTA, Challenger, ITF and juniors. Use this for "what tennis is on right now". Works on the FREE plan (no card needed).get_upcoming_matchesList tennis matches scheduled to start soon, with players, tournament and start time. Use this for "who plays next" or to find a match id before it starts. Works on the FREE plan (no card needed).get_matchFull detail for one match by id: players, score, surface, round and status. Includes market prices on PRO and model analysis on ULTRA. Works on the FREE plan (no card needed).get_match_scoreCurrent score for one match — the fastest, lowest-latency read. Use this when you only need the score and already know the match id. Works on the FREE plan (no card needed).search_playersSearch tennis players by name. Returns id, country, ranking and tour. Use the returned id with get_player. Works on the FREE plan (no card needed).get_playerOne player's profile: ranking, country, handedness, date of birth and cached stats. Works on the FREE plan (no card needed).get_fixturesUpcoming scheduled tennis fixtures, earliest first — the forward schedule, filterable by tour, player and date. Use this for "what is on this week". Works on the FREE plan (no card needed).search_tournamentsSearch the tournament catalogue — the stable id space that match objects carry as tournament_id. Returns surface, indoor, host city/country and category where curated. Works on the FREE plan (no card needed).get_tournamentOne tournament by its stable id — the tournament_id carried on match objects. Name, tour, surface, indoor, plus host city/country and category where curated. Works on the FREE plan (no card needed).get_recent_resultsRecently completed tennis matches with final scores and winners. Filterable by tour, player, nationality and play date. Requires the BASIC plan or any History plan.search_archive_matchesSearch the results archive — completed-match RESULTS from 1968 through 2022: ATP and WTA, main draws, qualifying and the ITF/futures tiers. Winner/loser-shaped records with final score, seeds and ranks AT THE TIME of the match. Use this for historical questions ("Borg's Wimbledon finals"); the archive ends 2022-12-31 where our own results (get_recent_results) begin. Requires the BASIC plan or any History plan.get_archive_matchOne result from the results archive (1968–2022), with per-match serve statistics where the era recorded them — stats are null for most rows before 1991, honestly, never synthesised. Requires the BASIC plan or any History plan.list_sports[`sports`](https://sportapi.net/docs/sport-line/api-reference/optional-methods/sports.html)get_menu[`menu`](https://sportapi.net/docs/sport-line/api-reference/menu.html)list_countries[`countries`](https://sportapi.net/docs/sport-line/api-reference/optional-methods/countries.html)list_tournaments[`tournaments`](https://sportapi.net/docs/sport-line/api-reference/optional-methods/tournaments.html)list_live_matches[`events`](https://sportapi.net/docs/sport-line/api-reference/events.html)list_prematch_matches[`events`](https://sportapi.net/docs/sport-line/api-reference/events.html), [calendar](https://sportapi.net/docs/sport-line/api-reference/events-by-period.html)get_match[`event`](https://sportapi.net/docs/sport-line/api-reference/event.html)search_matches[`search`](https://sportapi.net/docs/sport-line/api-reference/search.html)top_matches[`topmatches`](https://sportapi.net/docs/sport-line/api-reference/optional-methods/topmatches.html), [`toplist`](https://sportapi.net/docs/sport-line/api-reference/optional-methods/toplist.html)top_championships[`topchampionships`](https://sportapi.net/docs/sport-line/api-reference/optional-methods/topchampionships.html)account_status[`account`](https://sportapi.net/docs/sport-line/api-reference/optional-methods/account.html)Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"livetennisapi-livetennisapi-mcp": {
"command": "npx",
"args": [
"-y",
"livetennisapi-mcp"
],
"env": {
"LIVETENNISAPI_KEY": "YOUR_LIVETENNISAPI_KEY_HERE"
}
}
}
}
{
"mcpServers": {
"sportapi": {
"command": "uvx",
"args": [
"sportapi-mcp"
],
"env": {
"SPORTAPI_KEY": "YOUR_SPORTAPI_KEY_HERE",
"SPORTAPI_BASE_URL": "YOUR_SPORTAPI_BASE_URL_HERE",
"SPORTAPI_LANGUAGE": "YOUR_SPORTAPI_LANGUAGE_HERE"
}
}
}
}