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 分