AcesAPI

io.github.noahowsh由 GitHub 帳號 noahowsh 發布v1.1.6更新於 Oct 24, 2026

ATP and WTA tennis since 2007: sets, draws, rankings, head to head, surface Elo, sportsbook lines.

已驗證Streamable HTTP可網頁執行金融資料與分析

概覽

AI 產生的概覽

託管式網球資料 MCP 伺服器,讓助理查詢 2007 年以來的 ATP 與 WTA 單打賽果、籤表、排名、對戰紀錄、場地 Elo 及博彩賠率。

可以做什麼
  • 查找賽事,並依輪次讀取某屆賽事的籤表與賽果
  • 依日期、賽事或賽季查詢比賽結果,以及未來或進行中的賽程
  • 取得單場比賽的盤數比分、搶七比分、種子、評分與博彩賠率
  • 搜尋球員並查看資料、生涯戰績、近期比賽與賽季統計
  • 比較兩位球員的對戰紀錄,查看場地分項戰績與整體或分場地 Elo 評分
  • 讀取 2007 年以來的每週排名榜或某位球員的排名歷史
適用情境
適合讓助理用真實資料回答網球問題:比賽與籤表查詢、球員狀態與場地戰績、對戰比較、排名歷史,或大滿貫、大師賽與 WTA 1000 賽事的賠率。
執行需求
遠端 Streamable HTTP 端點 mcp.acesapi.com,無需安裝。呼叫工具需要 AcesAPI API 金鑰,透過 x-api-key 標頭(或金鑰查詢參數、Bearer 權杖)傳送;僅列出工具不需金鑰。也可複製 Node.js 儲存庫並以 ACESAPI_API_KEY 在本機以 stdio 執行。
安裝前請注意
呼叫會消耗額度:每月 500 免費額度,之後需付費方案或儲值,頻繁使用會產生費用。API 金鑰屬機密,請勿外流。資料為唯讀,不會寫入或刪除。涵蓋範圍有限:沒有發球統計,賠率僅涵蓋 2020 年中起的大滿貫及 2024 年 8 月起的 ATP 大師賽與 WTA 1000。與 ATP、WTA、ITF 無關聯。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 AcesAPI,將其新增到工作區。
  2. 連接 x-api-key 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.noahowsh%2Facesapi/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "acesapi": {
      "type": "http",
      "url": "https://mcp.acesapi.com/mcp",
      "headers": {
        "x-api-key": "<YOUR_API_KEY>"
      }
    }
  }
}

README

AcesAPI MCP server

[Smithery] [MCP Registry]

The tennis data API. ATP and WTA singles matches with every set and tiebreak score, tournament draws round by round, player profiles, weekly rankings, head to head, surface splits, our own Elo by surface, and sportsbook moneylines on Grand Slam and Masters / WTA 1000 matches. REST API and MCP server. 500 free credits every month, no card.

Website: https://acesapi.com · Docs: https://acesapi.com/docs · Get a key: https://acesapi.com/signup

You:    "What is Carlos Alcaraz's record on clay against top-10 players?"Claude: [calls get_surface_splits]
You:    "Who leads the Sinner and Alcaraz head to head, and how many of their meetings were finals?"Claude: [calls get_head_to_head]
You:    "Which moneylines were posted for the 2025 US Open men's final?"Claude: [calls get_matches, then get_match]

Run it locally (stdio)

Most clients connect to https://mcp.acesapi.com/mcp directly. For a client that launches a local process instead:

bash
git clone https://github.com/noahowsh/acesapi-mcp.git && cd acesapi-mcp && npm installACESAPI_API_KEY=your_key node index.js
json
{ "mcpServers": { "acesapi": { "command": "node", "args": ["/path/to/acesapi-mcp/index.js"], "env": { "ACESAPI_API_KEY": "your_key" } } } }

It forwards to the hosted server with your key, so every tool and credit cost is the same.

Skills

This repo also ships 16 free Claude skills in skills/ that turn Claude into a tennis analyst on top of the tools below: match and player lookup, surface Elo, head to head, ranking history, set-score modeling, odds math, edge detection and backtesting. They call the AcesAPI tools and keep to what the data holds (no serve statistics, moneylines on Slams, Masters and WTA 1000 only).

bash
git clone https://github.com/noahowsh/acesapi-mcp.git

Or install them as a Claude Code plugin:

/plugin marketplace add noahowsh/acesapi-mcp/plugin install acesapi-skills@acesapi

Or with the skills CLI: npx skills add noahowsh/acesapi-mcp.

Point Claude at the skills/ folder, add the MCP server (see Quick start), and ask a question such as "who is favored in tomorrow's Shanghai match and why?". Full catalog: skills/README.md. The skills also work on your own CSV or JSON without a key.

Useful pages

Python

The official Python client is on PyPI: acesapi.

bash
pip install acesapiexport ACESAPI_API_KEY=sk_live_...
python
from acesapi import Client
client = Client()
ranks = client.get_rankings(limit=5)for row in ranks["rankings"]:    print(row["rank"], row["name"], row["points"])

Typed errors for a bad key, no credits left, not found and rate limits, automatic retries, and to_dataframe for pandas.

Quick start

This is a hosted (remote) MCP server over Streamable HTTP. There is nothing to install.

Claude Code

bash
claude mcp add --transport http acesapi "https://mcp.acesapi.com/mcp?key=YOUR_API_KEY"

Claude Desktop, Cursor and other clients

json
{  "mcpServers": {    "acesapi": {      "url": "https://mcp.acesapi.com/mcp?key=YOUR_API_KEY"    }  }}

The key can also be sent as an x-api-key header or Authorization: Bearer. Connecting and listing tools works without a key; calling a tool needs one.

REST

bash
curl -X POST https://mcp.acesapi.com/v1/list_tournaments -H "x-api-key: YOUR_API_KEY"

Every tool is POST /v1/{tool} with a JSON body.

Examples

Runnable Python (standard library only) and Node 18+ (no dependencies) examples live in examples/:

bash
export ACESAPI_API_KEY=your_keypython3 examples/python/quickstart.pynode examples/node/quickstart.mjs

See examples/README.md for details. Get a free key (500 credits a month, no card) at https://acesapi.com/signup.

Tools (13)

ToolWhat it returns
list_tournamentsA season's tournaments with dates, surface, status and champion
search_playersFind players by name or country
get_tournamentA tournament's draw and results, round by round, with every set
get_matchesMatch results by day, tournament or season, with set and tiebreak scores
get_scheduleUpcoming and in-progress matches for the next days
get_matchOne match: sets, tiebreak points, seeds, ratings and what the score says
get_rankingsWeekly ranking lists since 2007, or one player's ranking history
get_ratingsOur Elo ratings, overall or by surface
get_head_to_headTwo players' meetings, wins by surface and in finals
get_surface_splitsA player's record by surface: sets, games, tiebreaks, deciding sets
get_player_statsA player's season statistics from scores, by round and opponent rank
get_playerProfile, ranking, ratings, career record, titles and recent matches
get_player_matchesA player's matches with scores and ratings, filtered by season, surface or opponent

Leagues: tennis (default, ATP), wta (pass league: "wta" to any tool).

Data

  • ATP and WTA singles since 2007 (qualifying from 2022) with set and tiebreak scores
  • Tournament draws and results round by round; weekly rankings since 2007
  • Head to head, surface splits, player season statistics derived from scores, our Elo overall and by surface
  • Sportsbook moneylines, returned in the odds array of get_match (there is no separate odds tool): Grand Slam matches from mid-2020 and ATP Masters and WTA 1000 matches from August 2024, pre-match, refreshed hourly; the array is empty for other tournaments
  • No serve statistics (aces, double faults, break points)

Coverage by season, read live from the database: https://acesapi.com/docs

Pricing

500 free credits every month, no card. Plans: Starter $19/mo (10,000 credits), Pro $49/mo (30,000), Scale $149/mo (125,000). Wallet top-ups from $5, never expire. https://acesapi.com/pricing

Attribution

Surfaces and ratings are ours. Not affiliated with the ATP, WTA, ITF or any tournament.

License

MIT for the contents of this repository. Data terms as above.

Use with Codex

Add this repo as a Codex plugin marketplace, then install the plugin:

bash
codex plugin marketplace add noahowsh/acesapi-mcp

Then open the plugin directory in Codex and install acesapi-skills from the acesapi marketplace. The plugin bundles the skills in skills/ and the AcesAPI MCP server (https://mcp.acesapi.com/mcp). Set your key first (free at https://acesapi.com/signup):

bash
export ACESAPI_API_KEY=your_key

Codex sends it as a bearer token.

Use with Gemini CLI

bash
export ACESAPI_API_KEY=your_keygemini extensions install https://github.com/noahowsh/acesapi-mcp

The extension adds the AcesAPI MCP server (https://mcp.acesapi.com/mcp) and sends the key in the x-api-key header. Get a free key (500 credits a month) at https://acesapi.com/signup.

來源:README.md,提交 c464e4a

工具

13

list_tournaments

List tournaments

Use to find tournaments. Lists a season's tournaments in calendar order with dates, city, surface, whether it is a Grand Slam, status, main-draw match count and the champion. Filter by surface (hard, clay, grass, carpet) and status. Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 1 credit.

輸入參數limitleagueoffsetseasonstatussurface

get_tournament

Tournament

Use for a tournament's draw and results: every singles match of one edition grouped by round in draw order (qualifying, then the main draw to the final), each with the score by set and tiebreak points, seeds, and the champion and runner-up. draw: main (default), qualifying or all. Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 2 credits.

輸入參數drawleaguetournament_id必填

get_matches

Matches

Use for match results by day, tournament or season: each match with both players, seeds, round, status, score and sets (games and tiebreak points). Pass a date (YYYY-MM-DD, UTC), a tournament_id or a season; filter by round (e.g. "Final") and status. Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 2 credits.

輸入參數datelimitroundleagueoffsetseasonstatustournament_id

get_schedule

Schedule

Use for upcoming matches: every scheduled or in-progress singles match in the next N days (default 7, max 30) with players, seeds, round and start time where one is set. Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 2 credits.

輸入參數daysleague

get_match

Match

Use for everything about one match: the score by set with tiebreak points, seeds, each player's sets, games and tiebreaks won, both players' ratings before and after (overall and on the surface), what the score says (total games, tiebreaks, whether it went the distance, comebacks), and each sportsbook's opening and closing moneylines where the match had them (Grand Slam, ATP Masters and WTA 1000 matches only). No serve statistics: they are not available. Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 2 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

輸入參數leaguematch_id必填

search_players

Search players

Use to find a player's id. Search by name (accents optional) and/or country code (e.g. ITA); most-played first, with matches, last match and rank on the current list (null outside the top 100 to 150 listed). Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 1 credit.

輸入參數namelimitleaguecountry

get_player

Player

Use for a player profile: date of birth, country, height, playing hand; latest ranking; our rating overall and per surface with peak; career record (wins, losses, sets, games, tiebreaks, deciding sets), titles, finals and Grand Slam titles; record by surface; and the last 10 matches. Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 5 credits.

輸入參數leagueplayer_id必填

get_player_matches

Player matches

Use for a player's matches, newest first: tournament, surface, round, opponent, result, score by set and the player's rating before and after. Filter by season, surface, opponent_id, tournament_id or draw. Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 5 credits.

輸入參數drawlimitleagueoffsetseasonsurfaceplayer_id必填opponent_idtournament_id

get_head_to_head

Head to head

Use for two players' head to head: wins each, sets won, wins by surface and in finals, and every meeting with its score. Walkovers are listed but not counted as wins; incomplete records are not counted. Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 3 credits.

輸入參數leagueplayer_id必填opponent_id必填

get_surface_splits

Surface splits

Use for a player's record by surface (hard, clay, grass, carpet): wins, losses, win rate, sets, share of games won, tiebreaks, deciding sets and 6-0 sets, plus the current surface ratings. For one season or the whole career; by_season splits each surface by year. Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 3 credits.

輸入參數leagueseasonby_seasonplayer_id必填

get_player_stats

Player stats

Use for a player's match statistics by season: wins, losses, sets and games won, tiebreaks won and lost, deciding sets, 6-0 sets and retirements, all counted from scores; plus the record by round and by the opponent's ranking (top 10, 11-50, 51-100). No serve statistics: they are not available. Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 3 credits.

輸入參數leagueseasonplayer_id必填

get_rankings

Rankings

Use for the ranking list: the latest (default), or a season and week, or the list in force on a date, with rank, previous rank, points and player. Pass player_id instead for one player's ranking history. Weekly lists hold the top 100 to 150 for most weeks since 2007. Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 2 credits.

輸入參數dateweeklimitleagueseasonplayer_id

get_ratings

Ratings

Use for our Elo ratings, highest first: overall, or on one surface (hard, clay, grass). Players with a rated match since active_since (default a year ago) and at least 10 rated matches. Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 2 credits.

輸入參數limitleaguesurfaceactive_since

版本歷史

2
  1. v1.1.6最新Oct 16, 2026
  2. v1.1.4Oct 11, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分