Sportsdata Mcp について
sportsdata-mcp は、ブックメーカー、リーグのデータフィード、予測市場を MCP ツールとして公開するオープンソースの MCP サーバーです。同じ市場のオッズを複数のブックメーカー間で比較することに重点を置いており、オーストラリアとニュージーランドの市場を深くカバーしています。
主な機能
- 01複数のブックメーカーと取引所のオッズ取得
- 02AU/NZ ブックメーカーと競馬データの充実
- 03公式リーグおよび統計データフィード
- 04設定によるツールグループの有効化
- 05ユーザーの認証情報を要する投票ツール
活用シーン
- 01試合ごとにブックメーカー間のオッズを比較
- 02MLB や NBA などリーグのオッズと統計を取得
MCP 対応
本プロジェクトは MCP サーバーとして、スポーツデータ API をツールとして公開し、MCP クライアントが能力タグを使って検索・呼び出しできるようにします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
200掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
sportsdata-mcp
どのブックメーカーがより多く支払うのかを AI に聞いて、実際の答えを得ましょう。
無料かつオープンソース(MIT)。Claude Desktop、Cursor、その他任意の MCP クライアントで、65 プロバイダーにまたがる約 856 個のツール。uvx sportsdata-mcp serve で完了です。
あなた: Parramatta 対 Penrith で最も良いオッズを出しているブックはどこですか?また、その差はどのくらいですか?
Claude は 5 つのブックに同時に問い合わせて、次の結果を返します。
| Book | Eels | Panthers |
|---|---|---|
| Betfair | 1.18 | 6.20 |
| BetR | 1.17 | 5.00 |
| PointsBet | 1.17 | 4.80 |
| Pinnacle | 1.17 | 4.78 |
| Sportsbet | 1.19 | 4.75 |
実際に取得したオッズ。Penrith への同じベットは Betfair では $6.20 を支払い、Sportsbet では $4.75 です。同一のリスクに対して 30% の差があります。何かがすべてのブックを同時に読んでいない限り、この差は見えません。
これは何のためのものか: 単にスコアを取得するだけでなく、オッズを比較するためです。 多くのスポーツ MCP サーバーは、試合日程や順位表を取得できます。これは ブック間の見解の相違 を中心に構築されています。同一マーケット上で 11 のブックメーカー、Betfair 取引所、2 つの予測市場(Kalshi、Polymarket)が並び、さらに 27 の公式リーグ/統計フィードがあります。AU/NZ のブック(Sportsbet、TAB、Ladbrokes、PointsBet、BetR、Dabble)と競馬(サラブレッド、グレーハウンド、ハーネス、トートプールと取引所マネーを含む)に深く対応しており、これはほとんどのカタログが完全に省略しています。ケイパビリティタグによってプロバイダーが相互交換可能になるため、「ブックをまたいでオッズを比較する」は 43 個の連携ではなく 1 つの質問になります。
これはあなた向けですか?
率直に言う価値があります。というのも、最初に聞くことがうまく機能するか壊れて見えるかを、これが決めるからです。
最適な用途 — オーストラリアのマーケットを追っている、またはそこにベットしている場合。 上記のブック横断の優位性がこれが存在する理由であり、8 つのオーストラリアのブックにまたがる 159 個のツール の上に構築されています: Sportsbet、TAB、PointsBet、BetR、Ladbrokes/Neds、Betfair、Dabble、Unibet。これを公開しているものは他にありませんし、競馬(サラブレッド、グレーハウンド、ハーネス、トートプールと取引所マネーを含む)も同じ深さでカバーされています。
これも良い用途 — 世界中どこでもスポーツデータが欲しい場合。 残りの 57 プロバイダーにまたがる 697 個のツール は地域限定ではありません: MLB、NBA、NFL、NHL、プレミアリーグ、クリケット、ゴルフ、テニス、F1、UFC、ファンタジー(ESPN、Sleeper、FPL)、さらに Pinnacle と Kalshi および Polymarket の予測市場。そのうち 491 個はキーがまったく不要です。
適さない用途 — 米国のスポーツブックのオッズが欲しい場合。 これら 8 つのブックはオーストラリア向けにライセンスされており、国外からのトラフィックをブロックします。米国からは、価格として Pinnacle、FanDuel、Kalshi、Polymarket が得られます。統計とファンタジーの側は完全に機能します。ブック横断の米国価格が目的なら、これはそのツールではありません。
ベットを賭けられるようになりました。この部分をお読みください。
0.31.0 以降、カタログには sportsbet_place_bet、tab_place_bet、
entain_place_bet、unibet_place_bet が含まれています。これらは、あなたが提供した認証情報を使用して、あなた自身のアカウントから実際のお金を賭けます。これらを単独で呼び出すものは何もありません — これらは通常のツールであるため、このサーバーを何に接続するかによって、いつ実行されるかが決まります。
そこから 2 つのことが導かれますが、どちらも任意の読み物ではありません。
- これらのツールをスコープに含む LLM はベットを賭けることができます。 それが望ましくない場合は、アカウントグループを有効にしないでください。他のすべてのグループは影響を受けず、
list-groupsは有効にしたものを正確に表示します。 - 実際のアカウントに対してラウンドトリップ検証が行われたのは Sportsbet と TAB のみです。 Unibet と Ladbrokes/Neds は、ブラウザで行われた賭けからリクエスト形状を取得しており、それはリクエストを証明しますが、保存された認証情報だけで受け入れられるかどうかについては何も示していません。
エージェントワークベンチは、この上に独自のポリシーを適用します — すべては paper モードで開始し、あなたがブックをオプトインするまで何も賭けません — ただし、それはアプリのガードレールであり、このサーバーのものではありません。単独では、このパッケージは要求されたことを実行します。
それを信頼して受け入れるのではなく、尋ねてみてください。
sportsdata-mcp coverage
これはあなたのマシンからすべてのプロバイダーをプローブし、応答したもの、あなたの場所がブロックしているもの、キーが必要なものを出力します — したがって、空の結果が「データなし」と「間違った国」の間で曖昧になることは決してありません。
このサーバー上に構築
2 つのライブターミナル、どちらもオープンソース、どちらもこれらのツールだけで動作しています。
sportsdata-ai.com/sports — 予測 マーケット + 取引所をデビグされたシャープラインとして、すべてのブックがそれに対して測定されます。

sportsdata-ai.com/board — 競馬のマネーフロー: どのランナーが堅くなっているか、フェアプライス対フィールド、勝率/ROI スコアカード。

インストール後にこれを試してみてください
- 「今夜の NRL の試合について、すべてのブックのヘッドツーヘッドオッズを比較して。」
- 「ブックメーカー間でオッズの不一致が最も大きい AFL の試合はどれ?」
- 「Betfair が Panthers について示唆するものと、Sportsbet が提示しているものは?」
- 「今日のすべての MLB の試合について Pinnacle のラインを見せて。」
- 「Hawthorn のラダーと直近 5 試合の結果を取得して。」
スポーツデータ API (ブックメーカー、リーグ/統括団体のフィード、アグリゲーター) をツールとして公開する MCP サーバーで、必要なツールグループだけを読み込むように設定可能です。ケイパビリティタグシステムにより、同じ問いに答える場所であれば、異なるプロバイダーのツールが互換可能になります — そのため、モデルは 1 回のディスカバリー呼び出しでブック間のオッズやデータソース間の統計を比較できます。
カタログはブックメーカー、リーグ/統括団体のフィード、統計アグリゲーターにわたり、成長を続けています。新しいプロバイダーは src/sportsdata_mcp/specs/ に YAML スペックを置くだけで追加され — エンジンにはコード変更が不要です — そのため、プロバイダーとツールの正確な数は時間とともに変わります。ライブのインベントリを確認するには sportsdata-mcp list-groups を実行してください。また、3 つのメタツール (グループディスカバリー、ケイパビリティ検索、リソース一覧) は、何を有効にしても常にオンです。
インストール
ワンライナー (uv 経由で、任意の MCP クライアント設定):
uvx sportsdata-mcp serve # or: pip install sportsdata-mcp
ビルド済みアプリ (Python 不要): 最新の
リリース
(macOS + Windows) を取得し、解凍して sportsdata-mcp setup を実行します — Claude Desktop / Cursor 用の設定を書いてくれます。macOS ビルドは今のところ未署名です: 初回は右クリック → 開くを選択してください。
ソースから:
git clone https://github.com/DanielTomaro13/sportsdata-mcp.git
cd sportsdata-mcp
pip install -e . # add ".[dev]" for the test + lint toolchain
クイックスタート
sportsdata-mcp version # print version info
sportsdata-mcp list-groups # see every available tool group
sportsdata-mcp lint # validate the packaged specs
sportsdata-mcp doctor # probe enabled groups for reachability + auth
sportsdata-mcp serve # start the MCP stdio server (default command)
sportsdata-mcp update-specs # OTA-refresh provider specs (signed bundle); --clear reverts
プロバイダーのエンドポイントは変化します(たとえば Entain は GraphQL の永続クエリハッシュをローテーションします)。
update-specs は署名済みのスペックバンドルを取得し、~/.sportsdata/spec-overlay 配下のオーバーレイに適用します。ローダーはパッケージ同梱のコピーよりもこのオーバーレイを優先するため、変化への修正にアプリ全体の再ビルドは不要です。バンドルは焼き込み済みの鍵に対して Ed25519 で検証されます(製品ビルドは未署名・偽造バンドルを拒否し、ロールバック防止機構は古いリプレイを拒否します)。
scripts/publish-spec-bundle.py で公開し、--url / $SPORTSDATA_SPEC_FEED_URL をそのアセットに向けてください。適用後はサーバーを再起動してください。
ツールグループは設定ファイルまたは SPORTSDATA_MCP_GROUPS 環境変数で有効化します:
SPORTSDATA_MCP_GROUPS="afl.public.core,sportsbet.racing,entain.graphql" sportsdata-mcp serve
Claude Desktop / Claude Code の設定スニペット、ブックメーカーをまたいだオッズ比較プロンプトの実例、そして nba_stats_call ディスパッチャーパターンを端から端まで示す NBA ショットチャート + ボックススコアのウォークスルーについては examples/ を参照してください。
設定
設定は次の順序で解決されます(最初に一致したものが優先):
--config <path>フラグ$SPORTSDATA_MCP_CONFIG./sportsdata-mcp.yaml~/.config/sportsdata-mcp/config.yaml- 組み込みのデフォルト
# sportsdata-mcp.yaml
enabled_groups:
- afl.public.core
- sportsbet.racing
- entain.graphql
providers: # all optional; sensible defaults apply
sportsbet:
request_timeout_seconds: 30
rate_limit_rps: 10 # sustained requests/sec (token bucket)
max_response_bytes: 0 # 0 = no cap (default); set a positive byte count to guard context
secrets: {} # for authenticated providers; prefer env vars in prod
認証が env: SOME_VAR を参照するプロバイダーは、まず実際の環境変数によって満たされ、次に同名の secrets: { SOME_VAR: "..." } エントリによって満たされます(ローカル開発用の便宜機能です。本番環境では実際のシークレットを環境変数に保持してください)。
環境変数
| 変数 | 効果 |
|---|---|
SPORTSDATA_MCP_GROUPS | グループセレクター。enabled_groups を上書きします。プリセット(free、au-books、racing、arb、fantasy、chess、official-stats、aus、odds、motorsport、all)、プロバイダー ID(espn)または glob(espn.*)、リテラルのグループ、および除外(*,-twitter)を受け付けます。すべてのプリセットとそのツール数を確認するには list-groups を実行してください。 |
SPORTSDATA_MCP_CONFIG | 設定ファイルへのパス(上記の解決順序を参照)。 |
SPORTSDATA_MCP_MAX_BYTES | 独自の max_response_bytes を設定していないすべてのプロバイダーに対する、レスポンスサイズのグローバル上限(バイト単位)。0(デフォルト)は上限なしを意味します。 |
SPORTSDATA_MCP_CACHE_TTL | 同一の GET レスポンスをキャッシュする秒数(デフォルト 60、0 で無効化)。モデルが推論中に行う重複呼び出しを吸収しつつ、ライブ価格を古くしません。プロバイダーごとの設定: providers.<id>.cache_ttl_seconds。 |
SPORTSDATA_MCP_HTTP / SPORTSDATA_MCP_HOST / SPORTSDATA_MCP_PORT | stdio の代わりに HTTP で提供します(serve --http --host --port と同じ)。デフォルトでは 127.0.0.1 にバインドされます — このエンドポイントは認証されません。そのため、より広い範囲に公開すると、有効化されたすべてのツールと、プロセス内のあらゆるプロバイダー認証情報がそのネットワークに露出します。 |
SPORTSDATA_LICENSE | 休眠中 — 本製品は無料であり、ライセンスを必要とするものはありません。署名付きエンタイトルメントの仕組みは、ゲート付きのプレミアムフィードをセルフホストする人向けに残されています(下記参照)。 |
SPORTSDATA_ENTITLEMENT_URL / SPORTSDATA_ENTITLEMENT_PUBKEY | 上記の休眠中のエンタイトルメントゲートを使用する場合にのみ関係します。通常は未設定です。 |
(休眠中の)エンタイトルメントゲート
このプロジェクトは以前は有償製品でした。現在は無料です — ライセンスは存在せず、必要もなく、すべてのグループがデフォルトで利用可能です — ただし、署名付きエンタイトルメントの仕組み(Ed25519 で検証されるフィードグラント、オフラインキャッシュ、15 分ごとの再検証)は削除せず休眠状態で維持されています。テスト済みで、未設定時は無害であり、このサーバーをセルフホストして独自のユーザー向けにプレミアムフィードを制限したい人にとって有用だからです。有効化するには、独自の発行サービスに対して SPORTSDATA_LICENSE と SPORTSDATA_ENTITLEMENT_URL を設定してください。未設定(デフォルト)のままにすれば、何も変わりません。
キーが必要なフィード。 一部のプロバイダーは、ご自身で用意する上流の資格情報を必要とします — たとえば DataGolf 用の DATAGOLF_KEY、Twitter/X 用の X_BEARER_TOKEN などです。それ以外はキーがまったく不要です。
メタツール(list_available_groups、list_tools_by_capability、list_resources)は、何が有効化されているかに関係なく常に登録されるため、インストール直後でもモデルを誘導してグループを有効化できます。
レスポンスサイズの上限について。 デフォルトでは上限はありません — すべてのツールは上流 API が送信するものをそのまま返します。モデルのコンテキストウィンドウを保護したい場合は、上限をオプトインできます。優先順位は providers.<id>.max_response_bytes > SPORTSDATA_MCP_MAX_BYTES > デフォルト(0、無制限)です。非常に大きなペイロード(たとえば Sportsbet の *_event_markets の全ファイアホース、約 2 MB)は、いずれにせよ Claude の約 200 K トークンのコンテキストに収まらない点にご注意ください — そのような場合は、includeTopMarkets: true を指定した sportsbet_sports_card のような、より絞り込んだツールを優先してください。
ツールグループ
ライブのカウントと説明については sportsdata-mcp list-groups を実行してください。
AFL — api.afl.com.au
| グループ | ツール | 備考 |
|---|---|---|
afl.public.core | 22 | 大会、シーズン、ラウンド、日程、順位表、試合統計 |
afl.public.broadcasting | 9 | 放送地域、ガイド、プロバイダー |
afl.public.content | 8 | ニュース/記事、動画、写真 |
afl.premium.cfs | 1 | CFS プレミアム操作 — 匿名の x-media-mis-token が必要 |
afl.premium.statspro | 1 | StatsPro 操作 — x-media-mis-token が必要 |
afl.premium.keyserver | 1 | HLS 動画 URL の署名 |
Sportsbet — sportsbet.com.au
| グループ | ツール | 備考 |
|---|---|---|
sportsbet.racing | 15 | レース開催、レースカード、結果、先物、SRM |
sportsbet.sports | 14 | スポーツイベント、マーケット、オッズ、SGM |
sportsbet.cross | 12 | ライブステータス、実況、順位表、プロモ、動画 |
sportsbet.results | 2 | 日付別の結果確定イベント |
sportsbet.graphql | 1 | 永続化 GraphQL ゲートウェイ(apigw/sportsbook/graph) |
Entain / Ladbrokes — ladbrokes.com.au
| グループ | ツール | 備考 |
|---|---|---|
entain.rest | 13 | ナビゲーションのクイックリンクと REST サーフェス |
entain.graphql | 1 | 127 個の永続化 GraphQL オペレーション(gql/router) |
entain.cdn | 1 | Contentful CMS エントリ(プロモーション、主要イベントナビ) |
PointsBet — pointsbet.com.au
| グループ | ツール | 備考 |
|---|---|---|
pointsbet.sports | 10 | スポーツカタログ、大会/イベントフィード、全イベントマーケット、イン�プレイ、検索 |
pointsbet.racing | 11 | 開催、レースカード、結果、先物、SRM、予想、フォーム |
pointsbet.content | 3 | プロモーション、プロモコードのスプラッシュ、および静的 CMS/ナビ資産に対する pointsbet_content_call |
TAB — tab.com.au
| グループ | ツール | 備考 |
|---|---|---|
tab.racing | 9 | 日付、開催、レースカード(固定オッズ + パリミュチュエル)、フォーム、ネクストトゥゴー、ジャックポット、先物 |
tab.sports | 9 | スポーツ/大会ツリー、全試合マーケット + SGM、絞り込んだ試合マーケット、ネクストトゥゴー、結果、マルチビルダー |
tab.discovery | 4 | 特集/ライブのおすすめ、および CMS コンテンツフィードに対する tab_cms_call |
Unibet — unibet.com.au
| グループ | ツール | 備考 |
|---|---|---|
unibet.racing | 1 | unibet_racing_call — 永続化 GraphQL: 開催情報、レースカード、フォーム、先物、スペシャル |
unibet.sport | 3 | Kambi オッファリング API 経由の unibet_kambi_call(グループ、イベント、ベットオファー、インディプレイ、ベットビルダー)+ ライブ統計 + オッズラダー |
BetR — betr.com.au(BlueBet プラットフォーム)
| グループ | ツール | 備考 |
|---|---|---|
betr.racing | 8 | 次走、本日/グループ化されたレースカード、レースカード、フォーム、変動、ムーバー |
betr.sport | 7 | イベントタイプ、競技カテゴリ、イベントマーケット、試合詳細、人気の SGM |
betr.content | 4 | プロモーション + 注目のレース + 人気マーケットへのリンク |
Pinnacle — pinnacle.com(シャープオッズ)
| グループ | ツール | 備考 |
|---|---|---|
pinnacle.sports | 13 | スポーツ/リーグ、全 + 注目 + ライブ + リーグ別のマッチアップ、カルーセル、マッチアップ詳細、ストレート + パーレー市場(アメリカンオッズ価格) |
pinnacle.reference | 4 | 列挙型、マーケットラベル辞書、ティーザー定義、API ステータス |
Betfair Exchange — betfair.com.au(エクスチェンジオッズ)
| グループ | ツール | 備考 |
|---|---|---|
betfair.exchange | 3 | bymarket + byevent のバック/レイ価格フィード(最もシャープなオッズ)+ キャッシュアウトの可否 |
betfair.navigation | 1 | bynode カタロググラフ(スポーツ → 開催 → イベント → マーケット) |
betfair.inplay | 5 | ライブスコア、イベント詳細、タイムライン(単一 + バッチ)、スコア + 配信 |
Dabble — dabble.com.au(iOS アプリのバックエンド)
| グループ | ツール | 備考 |
|---|---|---|
dabble.sport | 5 | 任意の競技を発見(アクティブ一覧 / 名前検索 / スポーツ)、次にそのフィクスチャ(埋め込みマーケット + 小数オッズ)+ フィクスチャごとの完全なブック(400 以上のマーケット + Pick'em プロップ) |
オーストラリアのソーシャルベッティングアプリのバックエンドを、直接読み取ります。アクセスには
iOS アプリを装う方法を用います — 仕様にあらかじめアプリの User-Agent + x-device-id +
x-app-version が組み込まれているため、公開フィードが匿名で JSON を返します。AU 限定で
Cloudflare のフロントに置かれています(他の AU ブックと同様、AU 以外の IP からは 403)。
任意の競技で動作します — dabble_active_competitions は全スポーツにわたる現在ベット可能な
約 269 件を一覧表示します。読み取り専用オッズ — ベットの発注はありません。
sport.event_markets / sport.prices を介して他のブックと連携します。
SuperCoach — supercoach.com.au(News Corp / Champion Data ファンタジー)
| グループ | ツール | 備考 |
|---|---|---|
supercoach.fantasy | 6 | 全 7 ゲーム(afl/nrl/epl/nba/nbl/nfl/bbl)× 2 モード(classic + draft)にわたる単一の統一サーフェス: 競技状態、選手ごとの完全なフィード(価格 + ppts1 予測 + オーナーシップ + マッチアップ、draft では predraft_rank を追加)、フィクスチャ(H2H オッズ付き)、クラブ + 単一選手のカタログ、リーグ |
News Corp / Champion Data のサラリーキャップファンタジーゲームです。すべてのフィードは
/{year}/api/{sport}/classic/v1/… 以下にあります — sport(7 つのうちの 1 つ)と year
(シーズンキー: afl/nrl は現在の暦年、それ以外は年をまたいで進行するため現在は 2025)を渡します。
認証不要、地理的ブロックなし(CI で実行されます)。
中核の supercoach_players フィードはラウンド単位で大容量(約 1〜3 MB)です。ppts ではなく
ppts1(実際の予測)を使用してください。Data Golf と並んで stats.fantasy_projections を介して
ファンタジー / 予測の切り口を追加します。詳細は
documentation/SuperCoach.md をご覧ください。
NBL — nbl.com.au (オーストラリア・ナショナル・バスケットボール・リーグ)
| グループ | ツール | 備考 |
|---|---|---|
nbl.basketball | 16 | シーズン、チーム、順位表、スケジュール (スコア)、1 試合のボックススコアとプレーバイプレー、選手 + ロスター、選手ごとのシーズン成績 + ゲームログのボックススコア、チーム成績、シーズン成績リーダー (ソート可能)、ニュース |
リーグ公式サイトのデータ API — prod.rosetta.nbl.com.au/get/… にある Genius
Sports の統計をラップした Redis キャッシュ付きプロキシ (「rosetta」) です。トークンは不要ですが、referer による制限があります (nbl.com.au の Origin + Referer がないと 403 — どちらも仕様に組み込み済み)。すべてのレスポンスは {type, count, source, data:[…]} で包まれています。year (シーズン開始年: 2026 = NBL27、現行) によってシーズン単位でスコープされ、stat-leaders は nbl_seasons からシーズン UUID を取得します。SuperCoach の nbl ファンタジーフィードとは別物で、こちらが公式のボックススコアのソースです。詳細は documentation/NBL.md をご覧ください。
WTA — wtatennis.com (女子テニス協会、公式)
| グループ | ツール | 備考 |
|---|---|---|
wta.tennis | 8 | 公式 WTA API: シングルス/ダブルスのランキング、選手カタログ + プロフィール + 試合履歴、トーナメントカレンダー + 各回の結果 + エントリーリスト (シード) |
WTA の 公式 データ API (api.wtatennis.com/tennis/…) — 公開された Spring REST で、認証/キー不要、地域ブロックなし、CI で実行されます。ランキングには type+metric が必要で (rankSingles+singles または rankDoubles+doubles)、トーナメントは tournamentGroup.id + year で識別されます (全豪オープン = group 901)。統計面におけるテニスの空白を埋め、ブックメーカーのライブテニス市場と組み合わせて利用できます。詳細は documentation/WTA.md をご覧ください。(ATP には同等のオープン API がありません — atptour.com は Cloudflare のボット保護下にあります — そのためモデル化されていません。)
Racing and Sports — racingandsports.com.au
| グループ | ツール | 備考 |
|---|---|---|
racingandsports.racing | 3 | 本日の競走開催 (全コード、検証済み) + スポーツの試合リスト + レースごとのオッズ (トークン) |
PuntersEdge — puntersedge.online (AU + NZ のオッズアグリゲーター、デモはキー不要)
| グループ | ツール | 備考 |
|---|---|---|
puntersedge.demo | 3 | キー不要 — 次走の競馬、ベストオッズ + アーブ判定、1 つのブックの 1 スポーツの価格 |
puntersedge.racing | 7 | レースごとの全ブックの価格、出走馬ごとのベスト win/place/tote、出走表、結果、オッズ変動、会場、クロージングラインのアーカイブ |
puntersedge.sport | 3 | スポーツカタログ、sport_key ごとのブック別価格、選択ごとのベストプライス + アーブ判定 |
ブックそのものではなくオーストラリアのブックパネルを対象としたアグリゲーターで、ほとんどの AU ブックとは異なり地域ブロックがなく、CLV やバックテスト作業向けの永続的なクロージングラインのアーカイブを備えています。デモツールはキー不要で、それ以外は PUNTERSEDGE_API_KEY を読み取ります。詳細は documentation/PuntersEdge.md をご覧ください。
Data Golf — datagolf.com (キーが必要)
| グループ | ツール | 備考 |
|---|---|---|
datagolf.general | 3 | 選手リスト、ツアースケジュール、現在のイベントの出場者 |
datagolf.predictions | 11 | DG ランキング、大会前 (+ アーカイブ) + 進行中のモデル確率、スキル + アプローチスキルのレーティング、選手/ライブの SG 分解、ライブストロークゲインド、ライブのホール統計、DFS 予測 |
datagolf.betting | 3 | 約 13 のブックにわたる単勝 + マッチアップ + 全組み合わせのオッズ (モデルラインを含む) |
datagolf.historical | 9 | アーカイブされた生のラウンドデータ、イベント単位の結果 (順位/獲得賞金/ポイント)、過去のブックメーカーオッズ (単勝 + マッチアップ)、DFS 結果 |
DATAGOLF_KEY 環境変数に Data Golf API キーが必要です (個人用サブスクリプションキー — static_query 認証スキーム経由で取得され、リポジトリには保存されません)。
FanDuel — fanduel.com (米国)
| グループ | ツール | 備考 |
|---|---|---|
fanduel.racing | 4 | fanduel_racing_call (フルクエリ GraphQL: 注目/本日のレース + オッズ、単一レースの出走表、トラック、プール、タレントの予想) + メッセージ/クイックリンク/プロモーション |
fanduel.sportsbook | 2 | fanduel_sb_call (REST: イベントページ + マーケット、進行中、プロモ、_ak キー経由の設定) + ライブスコア |
NRL — mc.championdata.com
| グループ | ツール | 備考 |
|---|---|---|
nrl.public.core | 4 | Champion Data マッチセンター: 大会、日程、試合ごとの選手統計、アプリ設定 |
さらに nrl://stats/definitions リソース(すべての NRL 統計コードの辞書)があります。
NBA — cdn.nba.com + stats.nba.com
| グループ | ツール | 備考 |
|---|---|---|
nba.public.cdn | 5 | オープンな CDN JSON: 本日のスコアボード、全スケジュール、ライブボックススコア + プレーバイプレー、オッズ |
nba.stats | 2 | nba_daily_lineups + nba_stats_call、138 エンドポイントの /stats/ API を束ねるディスパッチャー |
nba_stats_call は stats.nba.com の /stats/ 分析サーフェス全体(選手/チーム
ダッシュボード、ボックススコア v2+v3、ショットチャート、プレーバイプレー、リーダーズ、順位表、ドラフト、ハッスル、
トラッキングなど)を前面に押し出します。すべてのオペレーション、その必須パラメータ、デフォルト値は
nba://stats/operations リソースで参照できます。
ESPN — espn.com JSON フィード
| グループ | ツール | 備考 |
|---|---|---|
espn.scores | 5 | サイト API の便利なエンドポイント: スコアボード、チーム、順位表、試合サマリー、ニュース |
espn.site | 1 | espn_site_call — チーム詳細、ロスター、スケジュール、怪我、深度チャート、トレード、履歴、選手ニュース、グループ、ランキング(10 オペレーション) |
espn.core | 1 | espn_core_call — 正規の $ref リンクモデル: イベント/大会、オッズ、勝率、プレー、会場、ドラフト、コーチ、カレンダー、トレード(37 オペレーション) |
espn.web | 1 | espn_web_call — サイト全体の検索 + common/v3 選手ビュー(7 オペレーション) |
espn.cdn | 1 | espn_cdn_call — CDN ライブコアフィード: スコアボード/試合/ボックススコア/プレーバイプレー(4 オペレーション) |
すべての ESPN ツールは sport + league スラッグ(例: football/nfl、
basketball/nba、soccer/eng.1)に対してパラメータ化されているため、5 つのグループで ESPN が
扱うすべてのリーグをカバーします。各ディスパッチャーのオペレーションは espn://{site,core,web,cdn}/operations
リソースで参照できます。
OpenDota — api.opendota.com(Dota 2 esports、キー不要)
| グループ | ツール | 備考 |
|---|---|---|
opendota.reference | 4 | ヒーロー、スキルブラケット別のヒーローメタ、プロチーム、リーグ |
opendota.matches | 3 | プロマッチ、試合詳細全体、公開ラダーマッチ |
opendota.players | 4 | プロフィール + ランク、マッチログ、勝敗、ヒーロープール |
カタログ初の esports プロバイダーです。サイドはホーム/アウェイではなく Radiant/Dire であり、ヒーロー統計は勝率ではなくスキルブラケットごとのピック数/勝利数のペアです — どちらも文書化され、どちらもテストで固定されています。4.4 MB のプロ選手リストは意図的に 公開していません。詳しくは documentation/OpenDota.md を参照してください。
OpenLigaDB — api.openligadb.de(ドイツのサッカー、キー不要)
| グループ | ツール | 備考 |
|---|---|---|
openligadb.football | 8 | ブンデスリーガ 1/2/3 + DFB ポカール: 日程、結果、順位表、節 |
ビッグファイブの穴を埋めます — プレミアリーグ、ラ・リーガ、セリエ A はありましたが
ブンデスリーガがありませんでした。クラウドメンテナンスのため、ロングテールは遅れることがあります。スコアは
matchResults にあり、そこにはハーフタイムとフルタイムの両方のエントリが含まれる点に注意してください。詳しくは
documentation/OpenLigaDB.md を参照してください。
EuroLeague — api-live.euroleague.net(バスケットボール、キー不要)
| グループ | ツール | 備考 |
|---|---|---|
euroleague.basketball | 7 | ユーロリーグ + ユーロカップ: シーズン、クラブ、ラウンド、試合、ボックススコア |
NBA と NBL に並んでバスケットボールを完成させます。1 文字で大会を選択し
(E/U)、シーズンコードは E2024、ホーム/アウェイは local/road、ボックススコアには
NBA スタイルの効率値ではなく PIR が含まれます。詳しくは
documentation/EuroLeague.md を参照してください。
NCAA — ncaa-api.henrygd.me(米国の大学スポーツ、キー不要)
| グループ | ツール | 備考 |
|---|---|---|
ncaa.college | 3 | すべての大学スポーツにわたるスコアボード、カンファレンス順位表、AP/コーチ投票 |
ESPN はすでに大学のスコアを提供していますが、これは NCAA 自身の投票とカンファレンス 順位表を正規化された形で追加します。公式フィードではなく NCAA.com のサードパーティ ミラーです。詳しくは documentation/NCAA.md を参照してください。
Fantasy Premier League — fantasy.premierleague.com(公式、キー不要)
| グループ | ツール | 備考 |
|---|---|---|
fpl.players | 2 | 価格、フォーム、保有率、xG/xA を備えた全選手。1 選手については詳細な情報 |
fpl.reference | 3 | 強さ評価付きのクラブ、締め切りを含む全 38 ゲームウィーク、得点ルール |
fpl.fixtures | 5 | 難易度 1〜5 のフィクスチャ、選手ごとのライブ得点、ドリームチーム、セットプレーキッカー |
fpl.managers | 6 | 任意のマネージャーのスカッド、履歴、ピック。クラシックおよび H2H リーグ。あなた自身のチーム |
世界で最もプレイされているファンタジーゲーム — 登録スカッド数 4,085,510 — であり、 あなた自身のスカッドを除いて公開されています。
1 つの癖がプロバイダー全体を形作っています。bootstrap-static は 単一の 1.37 MB のブロブであり、
その選手行だけで 約 362,000 トークンにもなりますが、サーバー側のフィールド選択はありません。4 つのツールが
その 1 つの URL にアクセスし、それぞれが 1 つのスライスを返すため、fpl_players は使用不能になる代わりに
約 58k トークンに収まります。何も捏造も改名もされていません — 削除されているだけです。
単位に注意してください。now_cost は 100 万の 10 分の 1(145 = £14.5m)、form と
期待ゴール系の値は 文字列、そして team はプレミアリーグのものではなく FPL 独自の 1〜20 の id です。
documentation/FPL.md を参照してください。
UFC — ufc.com JSON:API(公式、キー不要)
| グループ | ツール | 備考 |
|---|---|---|
ufc.events | 3 | セグメントごとのカード時刻と会場を備えたイベント、完全なファイトカード、UFC 1 まで遡る試合 |
ufc.athletes | 2 | 統計情報が付属するファイター検索とプロフィール |
ufc.stats | 2 | FightMetric のキャリア統計テーブルと階級別ランキング |
ufc.records | 2 | 単一ラウンドの記録集、および JSON:API リソースインデックス |
明らかな情報源である ufcstats.com は行き止まりです — noindex を伴う JavaScript の
プルーフ・オブ・ワーク型ボットチャレンジを返し、HTML 内のデータ行はゼロなので、読むにはボット検出回避の
構築が必要になります。ufc.com のほうが結局は優れています。Drupal を実行し JSON:API が公開されており、
athlete_stat は 同じ FightMetric データセットを、同じ fightmetric_id 識別子に至るまで保持しています。
ファイターごとに 48 の統計 — 有効打は位置(スタンディング/クリンチ/グラウンド)および ターゲット(頭/胴/脚)別に分割され、テイクダウン成功/試行/成功率/防御率、サブミッションと ノックダウンの平均、毎分の打撃成功と被弾、決着方法別のキャリア記録。
知っておく価値のある 2 つの罠: 関連レコードは決してインライン化されません(include=athlete_stat なしでは
ファイターに統計がまったく付きません)、そして フィルターはエラーではなく静かに 0 行を返します
統計コレクションでは — そのためこれらのパラメーターは公開されておらず、代わりに並べ替えが
リーダーボードの仕組みになっています。robots.txt が crawl-delay: 15 を要求しているため、
レート制限は 0.5 rps です。documentation/UFC.md を参照してください。
Football-Data.co.uk — クロージングオッズ付きの過去結果(キー不要)
| グループ | ツール | 備考 |
|---|---|---|
footballdatauk.history | 1 | 呼び出しごとに 1 リーグシーズン: 結果、シュート、カード、および約 10 のブックメーカーからのクロージング価格、1990 年代まで遡る |
ここで唯一バックテストできる情報源です。他のすべてのフットボールプロバイダーは
何が起きたかを教えてくれますが、これは市場が何が起きると考えていたかを、試合ごとに教えてくれます。
完了したシーズンを取得し、クロージング価格を結果と比較すれば、今日のライブの
sportsbet/pinnacle/betfair の価格を測定するための CLV ベースラインが得られます。
CSV として公開されています — エンジンの response_format: csv を使用する唯一のプロバイダーですが、
モデルは依然として通常の JSON を受け取ります。
documentation/FootballDataUK.md を参照してください。
F1 以外のモータースポーツ — MotoGP、Formula E、NASCAR(キー不要)
| グループ | ツール | 備考 |
|---|---|---|
motogp.racing | 6 | MotoGP/Moto2/Moto3/MotoE を 1949 年まで遡って収録:イベント、トラックコンディション付きセッション、順位、選手権 |
formulae.racing | 5 | 2014-15 年以降の Formula E:カレンダー、レースごとのポイント付きのドライバーおよびチーム選手権 |
nascar.racing | 2 | Cup/Xfinity/Truck:シーズン全体のサマリーと、プラクティス、予選、レース結果を含む週末のフィード |
openf1(ライブテレメトリー)と jolpicaf1(履歴)を合わせると、motorsport プリセットは
5 つのシリーズをカバーするようになりました。それぞれに、そのページで文書化されている構造上の
癖があります — MotoGP は 4 階層の uuid ウォークが必要で、Formula E はレースをラップするが
スタンディングはラップせず、NASCAR の results 配列はソートされておらず
ポジション 0 に非出走者が含まれるため、results[0] が勝者とは限りません。詳しくは
MotoGP.md、
FormulaE.md、NASCAR.md をご覧ください。
Jolpica F1 — api.jolpi.ca(F1 の歴史 1950 年 →、キー不要)
| グループ | ツール | 備考 |
|---|---|---|
jolpicaf1.reference | 4 | シーズン、ドライバー、コンストラクター、サーキット |
jolpicaf1.schedule | 1 | セッションごとの時間付きのレースカレンダー |
jolpicaf1.results | 5 | レース、予選、スプリントの結果、ラップタイム、ピットストップ |
jolpicaf1.standings | 2 | ドライバーおよびコンストラクターの選手権 |
2024 年末に非推奨となった Ergast のコミュニティによる後継です。openf1 と重複する
のではなく補完します。OpenF1 は 2023 年以降のライブテレメトリーであり、Jolpica は 1950 年
以降のすべてのレースです。「1976 年の日本 GP は誰が勝ったのか」と「フェルスタッペンは
今どのラップにいるのか」は別のプロバイダーです。レスポンスは Ergast の二重の MRData
エンベロープを使用し、すべての値を文字列として返します — 詳しくは
documentation/JolpicaF1.md をご覧ください。
チェス — lichess.org + api.chess.com(キー不要)
| グループ | ツール | 備考 |
|---|---|---|
lichess.chess | 6 | タイムコントロール別のレーティング、リーダーボード、ユーザーステータス、デイリーパズル、アリーナ |
chesscom.chess | 7 | プロフィール、形式別のレーティング、リーダーボード、タイトル保持者、月ごとのゲームアーカイブ |
両方とも主要なチェスプラットフォームです。レーティングは両者間で比較できないことに 注意してください — プールと計算式が異なります — また、ゲーム履歴を JSON として提供するのは Chess.com のみです。Lichess はエクスポートを NDJSON としてストリーミングするためです。 詳しくは Lichess.md と ChessCom.md をご覧ください。
Squiggle — squiggle.com.au(AFL 予測モデル)
| グループ | ツール | 備考 |
|---|---|---|
squiggle.afl | 6 | 41 の独立した AFL 予測モデル:各モデルが何を予想したか、その信頼度とマージン、さらに実際と予測のラダー |
単なる結果フィードではありません — AFL の試合に関する意見のマーケットであり、
ブックメーカーのオッズに対する自然な対抗軸です。あるラウンドの予想を取得し、同じ試合を
ブックから取得し、オッズからベッグを除去すれば、41 モデルのコンセンサスとマーケットを
比較できます。squiggle_ladder は各予測の背後にあるシミュレートされた最終順位分布である
swarms も保持しています。あるボランティアのサーバーであるため、プロバイダーは正直な
連絡先 User-Agent と意図的に穏やかなレート制限を提供しています — 詳しくは
documentation/Squiggle.md をご覧ください。
NHL — api-web.nhle.com(公式 Web API、キー不要)
| グループ | ツール | 備考 |
|---|---|---|
nhl.reference | 3 | シーズン、ポジショングループ別のクラブロスター、選手のプロフィール/ドラフト/経歴 |
nhl.schedule | 2 | 週ごとのリーグ日程、およびクラブのシーズン全体の試合ログ |
nhl.game | 3 | ライブスコアボード、選手ごとのアイスタイム付きボックススコア、得点サマリー |
nhl.stats | 3 | ディビジョン/カンファレンス/ワイルドカードの順序付き順位表、スケーターとゴーリーのリーダー |
リーグ自身の API — nhl.com が読み取っているもの(旧 statsapi.web.nhl.com は終了)。
espn.* グループはすでに「NHL のスコアは?」に答えますが、これはその深掘りレイヤーです。
知っておく価値のある2つの慣習:シーズン ID は年を連結したもの(20242025)で、
/now パスは 307 リダイレクトします。詳しくは documentation/NHL.md を参照してください。
Sleeper — api.sleeper.app(ファンタジーフットボール、完全公開)
| グループ | ツール | 備考 |
|---|---|---|
sleeper.reference | 3 | シーズン/週の状態、ユーザー名 → ユーザー ID、プラットフォーム全体のトレンドの追加/削除 |
sleeper.league | 8 | 設定、ロスター、マネージャー、週ごとのマッチアップ、トランザクション、プレーオフブラケット、トレードされた指名権 |
sleeper.draft | 3 | リーグのドラフト、ドラフト設定、そして選手名付きのすべての指名 |
もう一つの主要なファンタジープラットフォームであり、2つの中ではアクセスしやすい方です。Sleeper の読み取り
API はキーも Cookie も不要 — リーグ ID だけで十分です。fantasy.* の機能で espnfantasy と結びつくため、
「自分のリーグを見せて」が両方で機能します。15 MB の選手カタログは意図的に公開されておらず、
代わりにドラフトの指名が選手名を保持しています。詳しくは
documentation/Sleeper.md を参照してください。
ESPN Fantasy — あなた自身のファンタジーリーグ
| グループ | ツール | 備考 |
|---|---|---|
espnfantasy.reference | 6 | ゲームカタログ(現在のシーズン+週を解決)、シーズン状態、プロチーム+バイウィーク、選手ユニバース、スコアリングプリセット、選手ニュース |
espnfantasy.league | 14 | 設定、チーム、ロスター、順位表、マッチアップ、ドラフトボード、トランザクション、メッセージボード、リーグ履歴、さらに非公開の allon メガビュー |
espnfantasy.scoring | 5 | ボックススコア(実際のおよび予想ポイント付きのラインナップ)、マッチアップスコア、スコアボード、ライブスコアリング、ポジション別評価 |
espnfantasy.players | 2 | 所有状況と予想付きのフリーエージェント/ウェイバープール、選手ごとの詳細なスタッツ分割 |
ESPN スコアボード(それは上記の espn.*)ではなく、ファンタジープラットフォームです — リーグごとに1つの URL があり、
そのペイロードは再現可能な view パラメータで選択され、すべてのツールの game パラメータを通じて
5つのゲーム(ffl フットボール、flb 野球、fba バスケットボール、fhl ホッケー、wfba WNBA)をカバーします。
公開リーグには認証情報は不要です。ESPN_FANTASY_COOKIE を espn_s2=…; SWID={…} に設定すると、
同じツールでプライベートリーグにもアクセスできます。ファンタジーの playerId は ESPN のアスリート ID なので、
ここのロスターは実世界の espn.* フィードにそのまま結びつきます。ビューカタログ、
x-fantasy-filter のクックブック、ID デコーダーの表については
documentation/ESPNFantasy.md を参照してください。
OpenF1 — api.openf1.org(Formula 1、キー不要)
| グループ | ツール | 備考 |
|---|---|---|
openf1.reference | 3 | グランプリウィークエンド(ミーティング)、セッション(フィクスチャフィード)、ドライバーロスター |
openf1.results | 5 | セッションのクラシフィケーション、スターティンググリッド、ドライバーズ/コンストラクターズ選手権順位、オーバーテイク |
openf1.timing | 5 | ラップごとのセクター+スピードトラップのタイミング、ピットストップ、タイヤスティント、ライブのギャップ/インターバル、トラックポジション |
openf1.telemetry | 2 | 車両テレメトリー(速度/スロットル/ブレーキ/ギア/RPM/DRS)+約 3.7 Hz の (x,y,z) 位置 |
openf1.live | 3 | レースコントロールメッセージ(フラッグ/SC/インシデント)、チームラジオクリップ、天気 |
無料、認証不要の公開 REST サーフェス(auth: none)。フィードは session_key /
meeting_key(どちらもリテラルの latest を受け付けます)と driver_number で絞り込みます。キーは
まず openf1_sessions / openf1_meetings で見つけてください。
Cricket Australia — cricket.com.au (キー不要)
| グループ | ツール | 備考 |
|---|---|---|
cricketaustralia.core | 7 | fixtures (/matches フィード)、大会、ツアー/シリーズ、チーム、選手プロフィール (バッチ)、会場検索、大会順位表 |
cricketaustralia.match | 3 | 完全なスコアカード (イニングごとの打撃/投球/ウィケット)、ラン推移グラフのシリーズ、ライブ動画ストリーム |
cricketaustralia.content | 2 | Pulselive CMS: 動画/テキスト/音声/プレイリストのコンテンツ一覧 + キュレーションされたプレイリスト |
2 つの認証不要ホスト (apiv2.cricket.com.au/web と Pulselive CMS)。apiv2
エンドポイントはデフォルトで jsconfig=eccn:true を伴うため、ドキュメント化された
キャメルケース形式で返します。フローは cricketaustralia_fixtures → cricketaustralia_scorecard?fixtureId= →
cricketaustralia_players?playerIds= です。
MLB — statsapi.mlb.com (公式 Stats API、キー不要)
| グループ | ツール | 備考 |
|---|---|---|
mlb.reference | 22 | スポーツ/リーグ/地区/カンファレンス、チーム (+ 単体、提携チーム、履歴、ユニフォーム)、ロースター、卒業生、コーチ、スタッフ、選手 (プロフィール、バッチ、検索、シーズンカタログ、変更フィード)、会場、シーズン (現行 + 全履歴) |
mlb.schedule | 5 | 日付 / 期間 / チーム別の試合、さらにポストシーズン (スケジュール、シリーズ、視聴情報) と引き分け試合 |
mlb.game | 10 | ボックススコア、ラインスコア、プレー・バイ・プレー、v1.1 feed/live ファイアホース、勝利確率、コンテキスト指標、コンテンツ、選手ごとの試合成績、変更、ユニフォーム |
mlb.stats | 9 | 順位表、シーズン成績、1 選手の成績、リーグ + チームのリーダー、チームシーズン成績、試合ペース、高/低記録 |
mlb.extra | 15 | ドラフト (+ 有望株)、賞 (カタログ + 受賞者)、観客動員、トレード、フリーエージェント、求人 (審判/データキャスター/記録員)、ホームランダービー、オールスター投票 |
mlb.meta | 1 | mlb_meta — すべての列挙型 (ポジション、statTypes、gameTypes、pitchCodes など) の /{type} ルックアップ |
MLB-StatsAPI ライブラリがラップする公式 MLB Stats API を直接読み取ります (キー不要) —
公開サーフェスの包括的なカバレッジ。sportId=1 は MLB です。ID は
mlb_teams / mlb_schedule / mlb_player_search で見つけてから、試合や
選手へ掘り下げてください。ほとんどのツールは API の hydrate 文字列を受け付け、1 回の
呼び出しで関連オブジェクトを埋め込むことができます。
Premier League — premierleague.com (キー不要)
| グループ | ツール | 備考 |
|---|---|---|
premierleague.core | 7 | 大会、シーズン構成、賞、リーグ順位表、現在のゲームウィーク、地理 |
premierleague.teams | 10 | チーム (+ バッチ)、スカッド、フォーム (単体 + 全チーム)、チーム統計、次節の対戦、クラブメタデータ |
premierleague.matches | 8 | fixtures/結果フィード + マッチセンター: 詳細、イベント、ラインナップ、チーム統計 (~200 の Opta 指標)、審判、解説 |
premierleague.players | 8 | 選手ディレクトリ、プロフィール (基本/キャリア/シーズン)、バッチ検索、シーズン + 大会統計、メタデータ |
premierleague.stats | 2 | 選手 + チームの統計リーダーボード (任意の Opta 指標で並べ替え) |
premierleague.content | 8 | 編集コンテンツ/検索、最新 + 人気のニュース/動画、放送スケジュール |
premierleague.com を支えるプライベート JSON API を直接読み取ります (キー不要、
Cookie 不要)。3 つのホスト (SDP 統計プラットフォーム、編集/放送用の
api.premierleague.com、resources.premierleague.com 上の静的設定) にまたがります。
基盤データは Opta です。Premier League = 大会 8、シーズン ID は
開始年 (2025 = 2025/26)。フロー: pl_teams → pl_matches → 試合 ID →
pl_match/pl_match_stats。順位表には pl_standings。非公式/非ドキュメント —
約 5 rps のレート制限を尊重してください。SDP のワイヤパラメータ (_limit、_sort、
kickoff>/kickoff<) はクリーンなツール名 (limit、sort、
kickoff_after/kickoff_before) で公開されています。
LaLiga — apim.laliga.com (公開キー同梱)
| グループ | ツール | 備考 |
|---|---|---|
laliga.core | 6 | 大会、シーズンインスタンス(サブスクリプション)、リーグ順位表、ラウンド/節 |
laliga.teams | 3 | シーズンのチーム一覧、単一チーム、クラブの選手名簿 |
laliga.players | 3 | 全選手のシーズン統計(約749名、完全な Opta メトリクス)、選手プロフィール + 統計 |
laliga.matches | 2 | 試合フィード + 単一試合の詳細 |
laliga.com の背後にあるプライベート JSON API(Azure APIM)を直接読み取ります。基盤
データは Opta です。公開 の Ocp-Apim-Subscription-Key が 動作する
デフォルトとして同梱 されているため、すぐにそのまま動作します — ただしキーは
ローテーションされるため、読み取りが 401 を返し始めたら LALIGA_SUBSCRIPTION_KEY
(環境変数または secrets:)で上書きしてください(laliga.com の __NEXT_DATA__ から
再収集)。「サブスクリプション」とはシーズンインスタンスのことです(スラッグ
laliga-easports-2025 = 2025/26)。詳細エンドポイントは スラッグ をキーとします。
共有の stats.ladder / sport.fixtures_by_date / stats.player_season タグを
通じて、Premier League プロバイダーと組み合わせればリーグ横断のサッカー比較が
可能です。
Serie A — api-sdp.legaseriea.it (認証なし)
| グループ | ツール | 備考 |
|---|---|---|
seriea.core | 3 | 全大会、41シーズンのカタログ、単一シーズンの詳細 |
seriea.season | 6 | リーグ順位表(全体/ホーム/アウェイ)、20チーム、全選手 + チームの Opta 統計(ページネーションあり)、全380試合、試合のラインナップ |
legaseriea.it の背後にある公開 SDP JSON API を直接読み取ります(認証なし)。
基盤データは Opta です。Serie A の大会 ID は埋め込まれているため、指定する
のは seasonId だけです(seriea_seasons から取得、seasonName は
2025/2026 のような形式)。選手統計は 1 回の呼び出しで身元 および 約279の
Opta メトリクスを返します(チーム名簿エンドポイントはありません)。30件/ページ
でページネーションされ、category=General|Goalkeeping を指定します。
共有の stats.ladder / sport.fixtures_by_date / stats.player_season タグを
通じて、Premier League + La Liga と並んでサッカー三大リーグを完成させます。
Kalshi — kalshi.com (予測市場、キー不要)
| グループ | ツール | 備考 |
|---|---|---|
kalshi.markets | 6 | 市場カタログ + 詳細、オーダーブック、公開取引、OHLC ローソク足(単一 + バッチ) |
kalshi.events | 9 | イベント、シリーズカタログ(カテゴリ別)、単一シリーズ、マイルストーン、MVE コンボコレクション、エンティティレジストリ |
kalshi.exchange | 3 | 取引所ステータス、取引スケジュール、アナウンスメント |
CFTC 規制の米国イベントコントラクト取引所です。市場データは公開されており、
キーは不要 です。任意で KALSHI_API_KEY_ID + KALSHI_PRIVATE_KEY(_PATH)
を設定すると、すべてのリクエストが RSA 署名され、Kalshi の認証済みのより高い
レート制限を利用できます(pip install "sportsdata-mcp[kalshi-auth]" が必要)。
取引機能は対象外です(読み取り専用プロバイダー)。ID チェーン:
kalshi_series_list(category) → kalshi_events → kalshi_markets →
ティッカーによる orderbook/trades/candles。価格はドル建てです。
Polymarket — polymarket.com (予測市場、キー不要、地域制限あり)
| グループ | ツール | 備考 |
|---|---|---|
polymarket.gamma | 9 | 市場/イベント/シリーズ/スポーツ/タグのカタログ + サイト検索(ディスカバリープレーン) |
polymarket.clob | 6 | オーダーブック、最良価格、ミッドポイント、スプレッド、価格履歴、CLOB カタログ |
polymarket.data | 2 | 公開取引テープ + トップホルダー |
最大の暗号資産予測市場です。すべての読み取りエンドポイントは匿名 です —
Polymarket の SDK が使用するウォレットキーは注文の発注専用です(対象外)。
⚠️ 地域制限あり: Polymarket は制限された管轄区域からの接続をネットワーク
エッジで切断します(確認済み: AU の IP はすべてのホストでタイムアウト)。
制限のない地域または VPN から実行してください。フロー: polymarket_events →
市場の clobTokenIds → polymarket_book / polymarket_price_history。
X(Twitter) — api.x.com(Bearer トークンが必要)
| グループ | ツール | 備考 |
|---|---|---|
twitter.tweets | 7 | 7日間検索、ボリュームカウント、投稿検索(バッチ+単体)、引用/リポスト/いいねのエンゲージメント |
twitter.users | 6 | プロフィール検索(ハンドル/id、バッチ)、ユーザータイムライン、メンション |
twitter.trends | 2 | 地域別トレンド(WOEID)+プロジェクト使用量/上限モニター |
X API v2 の読み取りサーフェス — 匿名ティアはないため、Bearer トークンが
必要です。まず環境変数 X_BEARER_TOKEN(運用者はデプロイ全体のトークンを
すべてのユーザー向けに配布できます)、次に config の secrets: ブロック
(各ユーザーが自分のもの)を使用します。環境変数にはトークンそのものを入れ、
スペック側で Bearer が付加されます。ティアの月間読み取り上限
(twitter_usage)に注意してください。スペックは約0.5 req/s にスロットリングし、
429 を自動リトライすることはありません。書き込み/ユーザーコンテキストの
サーフェス(投稿、DM、フォロー)は対象外です。フロー:
twitter_user_by_username("AFL") → id →
twitter_user_tweets、X オペレーターでの検索("Storm" lang:en -is:retweet)。
自分のキーを持ち込む
17 のプロバイダーは、ご自身で登録するキーを必要とします。これらは free
プリセットおよびデフォルトのグループセットから除外されているため、
オプトインしない限りここでの動作は変わりません — 環境変数を設定し、
グループを追加してください。
| プロバイダー | 環境変数 | ツール | ここにある他のどれにもない、これが追加するもの |
|---|---|---|---|
apisports | API_SPORTS_KEY | 20 | 1つのキーで10スポーツ — またここで唯一のラグビーユニオン対応 |
theoddsapi | THE_ODDS_API_KEY | 6 | 約40の国際ブックメーカーからのオッズ、CLV 作業用の履歴スナップショット付き |
oddsapiio | ODDS_API_IO_KEY | 5 | 34スポーツにわたる274のブックメーカー、パデル、バンディ、ゲーリックフットボールまで |
sportsgameodds | SPORTSGAMEODDS_API_KEY | 7 | ブックや時間をまたいで結合できる安定したマーケット id を持つプレイヤープロップ |
sportsdataio | SPORTSDATAIO_*_KEY | 9 | DFS のサラリーと予測(DraftKings/FanDuel)。公式フィードはどれも公開していません |
sportmonks | SPORTMONKS_TOKEN | 8 | 本当に無料のティアで、サッカーのラインナップ、イベント、選手別スタッツ |
cfbd | CFBD_API_KEY | 10 | カレッジフットボールの分析: SP+、Elo、高度なボックススコア、過去のライン |
footballdataorg | FOOTBALL_DATA_ORG_KEY | 10 | ここに公式フィードがない欧州の大会 — UCL、エールディヴィジ、チャンピオンシップ |
balldontlie | BALLDONTLIE_API_KEY | 10 | NBA、NFL、MLB、EPL をまたいで一貫した形状 |
pandascore | PANDASCORE_TOKEN | 8 | Dota 2 以外のeスポーツ — CS2、LoL、Valorant、R6 |
apitennis | API_TENNIS_KEY | 7 | ATP と ITF のドロー、H2H、ランキング(wta は女子ツアーのみ) |
cricketdata | CRICKETDATA_API_KEY | 8 | 国際およびフランチャイズクリケット(cricketaustralia は AU のみ) |
highlightly | HIGHLIGHTLY_API_KEY | 7 | 5スポーツにわたるハイライト動画 — ここで単一リーグではない唯一の動画サーフェス |
mysportsfeeds | MYSPORTSFEEDS_API_KEY | 5 | 無料の非商用ティアで米国の主要リーグ、クリーンな試合別選手ログ付き |
isportsapi | ISPORTS_API_KEY | 5 | アジアのブックを通じたアジアンハンディキャップオッズ |
entitysport | ENTITYSPORT_TOKEN | 5 | クリケットのボールバイボール実況(cricketdata より詳細) |
golfcourseapi | GOLFCOURSE_API_KEY | 2 | 30k 以上のゴルフコース、ホール別パー、ヤーデージ、ストロークインデックス付き |
export THE_ODDS_API_KEY=...
sportsdata-mcp serve --groups "free,theoddsapi.*"
これらに依存する前に知っておくべき 2 つのこと
これらのレスポンス形状は文書化されているだけで、検証はされていません。 私たちはどれについてもキーを保有していないため、各スペックに記載されている形状は、実際のプローブによるものではなく、ベンダー自身のドキュメントに基づいています。これらのツールにはすべて、概略図を信用するのではなく、実際に受け取ったペイロードを検査するようモデルに指示する明示的な注記が付いています。このカタログの他の箇所では、形状はプローブされて修正されています。およそ 3 分の 1 がドキュメントから推測される内容と異なっていました。そのため、あなたのキーで実行するまでは、このティアは信頼度が低いものとして扱ってください。もし実行したなら、修正を加えて shapes_verified: true に変更する PR が、可能な中で最も有用な貢献です。
そのうち 4 つは HTTP 200 で失敗を報告します。 apitennis は不正なキーに対して 200 {"error":"1", …} を返し、cricketdata は 200 {"status":"failure","reason":"Invalid API Key"} を返し、isportsapi は 200 {"code":2,"message":"Invalid [api_key]…"} を返し、apisports は日次クォータを使い果たすと、errors オブジェクトに値が入り response が空 の状態で 200 を返します。最後のものは最も厄介です。今日の試合を求めたモデルは空のリストを受け取り、「今日は試合なし」と報告するため、クォータ超過と静かな火曜日を区別できません。4 つのスペックはすべて error_signals を宣言しており、エンジンは設定すべき変数名を示す本物のエラーを発生させます。これらの API をこのサーバー以外で利用する場合は、ボディを確認してください。ステータスコードはあなたに嘘をつきます。
Odds-API.io は /v2/ ではなく /v3/ です。 ベンダー自身のページは v2 パスを宣伝していますが、そのすべてが 404 を返します。スペックが書かれる前のプローブで発見されました。そうでなければ、5 つのツールすべてが壊れた状態でリリースされていたでしょう。
含まれていないもの
3 つの候補は、壊れた状態でリリースするのではなく、プローブされて却下されました。
SportDevs — 2026-08-10 時点で、sportdevs.com、api.sportdevs.com、rugby.sportdevs.com には DNS レコードがまったくありません。サービスは消滅しているため、宣伝されていたラグビー/バレーボール/ハンドボールのカバレッジは、そこからは利用できません。(ラグビーユニオンは代わりに apisports でカバーされています。)
Live Golf API — use.livegolfapi.com は解決しますが、ルートを含むすべてのパスが 404 {"message":"Application not found"} を返します。ホストは稼働していますが、その背後のアプリケーションはデプロイされていません。
Fighting Tomatoes — fightingtomatoes.com/API/… 配下の文書化された API パスは、サイトの 404 ページを返します。このドメインは Web アプリを提供しているのであり、宣伝している API を提供しているのではありません。
TheSportsDB の無料ティアは、サイレントに切り詰められたデータを返します。EPL の順位表は 20 行のうち 5 行で返ってきて、それが部分的であることを示すものは何もありません。順位表の 5 分の 1 で静かに応答するプロバイダーは、プロバイダーがないよりも悪いため、警告付きでリリースするのではなく除外されています。
テレメトリー
有効にしない限り、何も送信されません。 送信するデフォルト設定はなく、初回起動時に デフォルトで「はい」になるプロンプトもなく、同意は環境変数からのみ読み取られます — 設定ファイルから読み取ることは決してありません。設定ファイルはリポジトリにコミットされたり、 他人の Docker イメージに焼き込まれたりする可能性があるからです。
常に有効なのはローカル記録であり、これはあなたのものです:
sportsdata-mcp stats
ツールごとの呼び出し回数、エラー率、エラーコード、空結果の件数を、ワースト順に表示します。
モデルは sportsdata_session_stats を介してセッション中に同じ情報を読み取ることができます —
通常、キーの欠落(エラー 100%、コード AUTH_REQUIRED)と、データのない上流(エラーなし、
empty が多い)を区別する最速の方法です。
共有するには、2 つの意図的な操作が必要で、どちらか一方だけでは送信されません:
export SPORTSDATA_TELEMETRY=1
export SPORTSDATA_TELEMETRY_ENDPOINT=https://your/collector
ツールの引数は決して記録されません。そしてこの保証はフィルターではなく構造的なものです:
Telemetry.record() には引数を受け取れるパラメーターが存在しません。これはほとんどのプロジェクト
以上にここで重要です — ESPN Fantasy のリーグ id はリーグとそのメンバーを特定し、Sleeper の
ユーザー名はまさにユーザー名だからです。
sportsdata-mcp telemetry --show-payload
送信に含まれる正確な JSON を出力するため、主張は約束ではなく検証可能です。唯一の自由記述 フィールドが何をするかを含む詳細はこちら: docs/TELEMETRY.md。
ユーザーに一切触れない採用指標 — PyPI ダウンロード数、ユニーククローン数、リファラー —
については、python scripts/metrics.py がパッケージに関する公開データを読み取ります。
プロバイダー間の比較
すべてのツールには、プロバイダーに依存しないケイパビリティスラッグ(例:
sport.event_markets、racing.race_card)が付けられています。同じスラッグを共有するツールは
同じ問いに答えるため、プロバイダー間で直接比較できます。ディスカバリーの流れ:
list_tools_by_capability("sport.event_markets")→ それを公開している有効なすべてのツール- 解決されたイベント id を使って、各プロバイダーのツールを並行して呼び出す
- 生のスナップショットを比較する(スキーマは正規化されません — モデルがそれらを突き合わせます)
「Storm 対 Cowboys のオッズをブックメーカー間で比較する」完全なウォークスルーについては、
examples/comparator-prompt.md を参照してください。
プロバイダーごとの注意事項
- Sportsbet — 匿名のパブリック API で、シークレットは不要です。REST イベントは整数の
eventIdをキーとし、永続化 GraphQL ゲートウェイはsportsbet_graphql_call経由で公開されています(sportsbet://graphql/operationsを参照)。 - Entain / Ladbrokes — 永続化 GraphQL ゲートウェイです。モデルがオペレーション名と変数を指定します(
entain://graphql/operationsで確認できます)。フロントエンドのバンドルが更新されるとハッシュがずれることがあります。その場合はsportsdata-mcp refresh-hashes entainで更新してください。 - AFL —
afl.public.*は匿名です。afl.premium.*は匿名のx-media-mis-tokenを自動的に発行しますが、一部のプレミアムエンドポイントは匿名呼び出しに対して依然として 401 を返します。 - NRL — 匿名の Champion Data マッチセンター CDN(
mc.championdata.com)で、公式 nrl.com マッチセンターが読み込むのと同じ静的 JSON です。シークレットもキャッシュバスターパラメータも不要です。nrl_competitionsからcompetitionId(例: 12999 = 2026 NRL Premiership)を、nrl_fixtureからmatchIdを解決し、nrl_matchから選手ごとの試合統計を取得します。統計コードはnrl://stats/definitionsでデコードできます。 - NBA — シークレット不要の 2 つのサーフェスがあります。
cdn.nba.comは完全にオープンです(JSON をtext/plainとして返しますが、クライアントはそれを受け入れます)。stats.nba.comは Akamai の背後にあり、完全なブラウザヘッダーバンドルがないリクエストはすべてブラックホール化されますが、スペックがそのバンドルをprovider.default_headersに同梱しているため、そのまま動作します。Akamai はレート制限も厳しいため、スペックのdefaultsブロックは NBA を約 1 リクエスト/2.5 秒にスロットリングし、45 秒のタイムアウトを設定し、一時的な429/5xxを指数バックオフでリトライします(すべてproviders.nba.*で上書き可能)。/stats/ファミリーは 1 つのディスパッチャー(nba_stats_call)です。operation(パスセグメント、例:leaguedashplayerstats)を選び、query_paramsを渡します。各オペレーションには NBA の完全なデフォルトパラメータセットがすでに含まれているため、必要なものだけを上書きします。ほとんどのレスポンスは列指向(resultSets:[{name, headers, rowSet}]})で、v3 のボックススコアはネストされています。 - ESPN — 4 つのパブリックホストがあり、認証も API キーも不要です:
site.api.espn.com(スコア、チーム、順位、ニュース、サマリー)、sports.core.api.espn.com(正規の$refリンクモデル — オッズ、勝率、プレー、会場、ドラフト、コーチ)、site.web.api.espn.com(検索 + アスリートビュー)、cdn.espn.com(ライブコアフィード、?xhr=1が必要)。ほぼすべての URL は.../sports/{sport}/{league}/{resource}の形式であるため、ツールはsport+leagueをパラメータとして受け取り、すべての ESPN リーグをパラメトリックにカバーします — NFL、NBA、MLB、NHL、カレッジ、サッカー(eng.1、esp.1、…)、ゴルフ、レース、テニス、MMA など。ディスカバリー:espn_scoreboard(sport, league)→eventid →espn_game_summaryまたは深いespn_core_call(event_*)オペレーション。スペックは約 5 リクエスト/秒にスロットリングし、一時的な429/5xxをリトライします(providers.espn.*で上書き可能)。コア API のパスはleagues/{league}(複数形)を使用することに注意してください。コアのリストレスポンスは遅延{count, items:[{$ref}]}エンベロープです — 詳細は ref を辿ってください。 - PointsBet — 匿名のパブリック API で、シークレットは不要です。
api.au.pointsbet.comはスポーツブック(スポーツ + レース)を提供し、pointsbet.com.auはpointsbet_content_callディスパッチャー経由で静的 CMS/ナビアセットを提供します。スポーツのディスカバリー:pointsbet_sport_competitions(sportKey)→ コンペティションキー → 完全なマーケットブックについてはpointsbet_event(eventKey)。レース:pointsbet_racing_meetings(startDate, endDate)→raceId→pointsbet_racing_race。多くのフィードはトップレベルの JSON 配列を返します。 - TAB (Tabcorp) — 匿名のパブリックデータで、シークレットは不要です。
api.beta.tab.com.auは Akamai の背後にあり(スペックは NBA と同様にブラウザヘッダーバンドル + 約 2.5 rps のスロットリングを同梱)、cmsapi.tab.com.auはtab_cms_call経由で CMS フィードを提供します。すべてのエンドポイントにはjurisdictionが必要です(デフォルトはNSW)。API は HATEOAS かつ名前ベースです — パスにはスポーツ/コンペティション/試合/会場の名前がスペース込みで埋め込まれ(…/AFL Football/competitions/AFL/matches/Adelaide v Geelong)、HTTP レイヤーがパーセントエンコードします。生の名前を渡してください。レース:tab_racing_meetings(date)→raceType+venueMnemonic→tab_racing_race。スポーツ:tab_sport→tab_competition→ 完全なマーケットブックについてはtab_match。 - Unibet — 匿名の AU データで、シークレットは不要、2 つのサーフェスがあります。レースは永続化 GraphQL(
unibet_racing_call、graphql_persistedディスパッチャー)でrsa.unibet.com.auにあります — レース id は202606040200.T.AUS.hawkesbury.1のようなeventKeyです。エンドポイントは Apollo CSRF を強制するため、Content-Type: application/jsonヘッダーが送信されます。スポーツは Kambi オファリング API(*.kambicdn.com上のunibet_kambi_call、マーケット AU)です: グループツリー、イベント、ベットオファー、イン�プレイ、ベットビルダー。オペレーションはunibet://{racing,sport}/operationsで参照できます。 - BetR — 匿名の AU データで、シークレットは不要です。BetR は BlueBet プラットフォーム上で動作しているため、API は
web20-api.bluebet.com.auです — レース(次レース、グループ化されたレースカード、レースカード、フォーム、オッズ変動)とスポーツ(イベントタイプ → カテゴリ → マーケット、SGM)をカバーするフラットな REST サーフェスです。betr.com.auの Next.js_next/data/{buildHash}ブロブはスキップされます(デプロイごとに変わる脆弱なハッシュ。API が同じデータを提供します)。 - Racing and Sports —
www.racingandsports.com.auのレース/フォームデータで、認証は不要です。racingandsports_todays_racing(/todays-racing-json-v2)が検証済みのフィードです — 今日のサラブレッド/ハーネス/グレイハウンドのミーティングを国別に提供します。サイトは Cloudflare の背後にあり、そのフィードはホワイトリスト化されていますが、他のパスはデータセンター IP からの JS チャレンジがあります(レジデンシャル/ブラウザ IP からは動作します)。フォーム/フィールド/結果は HTML ページであり、GetOddsにはレースごとのトークンが必要なため、JSON フィードのみがモデル化されています。 - Betfair Exchange — 匿名で、公開
_akクエリパラメータをキーとするオープンな読み取り専用 Web API です。目玉はbetfair_market_prices(ero …/bymarket)です — エクスチェンジの back/lay 価格で、最も鋭いリファレンスオッズです。マーケット id はbetfair_navigation(scan …/bynode、例:EVENT_TYPE:7= Horse Racing)を MARKET ノードまで辿って発見します。ライブスコア/詳細はipsインプレイサービスから取得します。string_csvid パラメータはリストを受け取ります。(apiedsレースウィジェットはデータセンター IP から Cloudflare で制限され、appsyncGraphQL はセッションが必要なためスコープ外です — レースは navigation→bymarket 経由でカバーされます。) - Pinnacle — 匿名で、キーは不要です。Arcadia の「ゲスト」API(
guest.api.arcadia.pinnacle.com)— Web スポーツブックが読み込むオープンフィードです。スポーツのみ(シャープオッズブック、レースなし)。価格はアメリカンオッズです。フロー:pinnacle_sports→pinnacle_sport_matchups(sportId)→pinnacle_matchup_markets(matchupId)。プロバイダーは Pinnacle の公開 Web クライアントX-API-Keyを送信し、これがスポーツごと + リーグごとの完全なマッチアップリストとパーレーマーケットを解放します。 - FanDuel (US) — 匿名の US データで、シークレットは不要、1 つのプロバイダーの下に 2 つのサーフェスがあります。レースは最初のフルクエリ GraphQL プロバイダーです:
fanduel_racing_callはリテラルのクエリテキストを POST します(graphql_queryディスパッチャー種別で、永続化ハッシュのgraphql_persistedの兄弟です)。定型変数(brand/product/device/プロファイル)はオペレーションごとのdefault_variablesとして組み込まれています — ほとんどの呼び出しでは不要で、変わるものだけを上書きします({results: 12}、{trackCode, raceNumber})。スポーツブックは REST(fanduel_sb_call)で、静的な公開_akWeb キーをキーとし、リージョンは NJ です。2 つの半分は異なるOriginヘッダーを必要とするため、スポーツブックディスパッチャーはレースオリジンのプロバイダーデフォルトに対してOrigin+x-sportsbook-regionを上書きします。オペレーションはfanduel://{racing,sportsbook}/operationsで参照できます。(US データ — ケイパビリティタグを介して他の US ソースと組み合わせ可能です。)
CLI リファレンス
| コマンド | 目的 |
|---|---|
serve | MCP stdio サーバーを起動します(サブコマンドなしの場合はデフォルト) |
list-groups | すべてのグループをツール数 + 説明とともに出力します |
lint | スペックをスキーマ + ケイパビリティカタログに対して検証します(失敗時は非ゼロ) |
coverage | あなたの場所から何が動作するか: 到達可能なプロバイダー、あなたの地域がブロックするもの、キーが必要なもの |
doctor | プロバイダーごとの到達可能性 + 認証 + REST コントラクトのプローブ(失敗時は非ゼロ) |
refresh-hashes <provider> | ライブのフロントエンドバンドルから永続化されたクエリハッシュを更新します(--dry-run でプレビュー) |
version | バージョン情報を出力します |
-v / --verbose は DEBUG ログを有効にします(また httpx/httpcore の出力抑制を解除します)。
コントリビューション
完全なガイドについては documentation/ADDING_A_PROVIDER.md を参照してください。ブックメーカー を追加する場合と スポーツウェブサイト / データ API を追加する場合で別々のプレイブックがあります。要するに、一般的なケースではプロバイダーの追加はスペックのみの変更です:
src/sportsdata_mcp/specs/<provider>.yamlを作成します(既存のスペックをコピーします)。- 各ツールに
specs/_capabilities.yamlのケイパビリティスラッグを付けます。合うものがない場合はそこに新しいスラッグを追加します(2 つのプロバイダーがスラッグを共有すると比較可能になります)。 sportsdata-mcp lint— パスする必要があります。sportsdata-mcp doctor(新しいグループを有効にした状態) — ライブでプローブします。pytest -m "not live"— オフラインスイート。マーカーフィルターを外すとライブテストを実行します。tests/contract/test_api_contracts.pyに行を追加し、新しいプロバイダーの文書化されたレスポンス形状が毎回の PR でライブ検証されるようにします(以下を参照)。
pip install -e ".[dev]"
pytest -m "not live" # offline suite (the CI gate)
pytest -m contract # live response-contract checks (see below)
ruff check .
CI
毎回のプッシュ / PR で 3 つのジョブが実行されます(.github/workflows/ci.yml):
- test — ruff、
sportsdata-mcp lint、およびオフラインスイート(pytest -m "not live")を Python 3.11–3.13 で実行します。決定論的なゲートです。 - contract —
pytest -m contract: 各アップストリーム API にアクセスし、それが依然として 文書化された 形状(トップレベルのキー、およびリスト項目の文書化されたキー)を返すことをアサートするライブのレスポンスコントラクトチェックです。設計上耐障害性があり、私たちの制御外のもの(ネットワークエラー、5xx、401/403/429、地理的ブロック、DATAGOLF_KEYの欠落、または空のフィード)では スキップ し、真の形状リグレッションまたは壊れたスペック(誤ったパス / パラメータ →4xx)でのみ 失敗 します。GitHub のランナーを地理的にブロックするブックメーカー API は、そこでは単にスキップされます。 - package — wheel をビルドし、CLI がクリーンインストールからパッケージ化されたスペックを読み込むことを証明します。
このプロジェクトを支援する
sportsdata-mcp は無料で、MIT ライセンスであり、有料プランはありません — すべてのプロバイダーとすべてのツールが同梱されています。予告なく変更される API に対して 62 のプロバイダースペックを動作させ続けることが継続的なコストです。もし時間の節約になれば、ko-fi.com/danieltomaro で支援できます。
完全に任意であり、これによって制限されるものは何もありません。リポジトリにスターを付ける、良いバグレポートを提出する、またはプロバイダースペックを追加することも、同じくらい役立ちます。
ライセンス
MIT。 Copyright (c) 2026 Daniel Tomaro。著作権表示および許諾表示を保持した上で、自由に使用、コピー、改変、配布できます — LICENSE を参照してください。
mcp-name: io.github.DanielTomaro13/sportsdata-mcp
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。