SockOdds について
SockOddsは、SockOdds API v1を通じてオーストラリアのブックメーカーのオッズをMCPクライアントに提供するオープンソースのMCPサーバーです。イベント検索、価格比較、控除率を除いた公正オッズの計算に対応し、サンプルデータのデモモードも備えています。
主な機能
- 01リーグとイベントの検索
- 02ブックメーカーのオッズ取得
- 03最良オッズの比較
- 04控除率を除いた公正オッズの計算
- 05サンプルデータでのツール試用
活用シーン
- 01スポーツイベントのオッズ検索
- 02ブックメーカー間の価格比較
- 03公正オッズを基準に価格を評価
MCP 対応
リーグ、イベント、オッズ、最良価格、公正オッズのツールをMCPクライアントに提供します。SockOdds API v1に接続し、APIキー不要のデモデータにも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y sockodds-mcpSOCKODDS_API_KEYシークレットYour SockOdds API key, sent as an Authorization: Bearer header. A free key is available at https://sockodds.com/signup/SOCKODDS_DEMOSet to 1 to try the tools with invented sample data and no key. Ignored when a key is set.SOCKODDS_TIMEZONETime zone for start times (UTC is always shown too)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| sport_id | string | いいえ | 任意のスポーツキーによるフィルター。例:australian_football、rugby_league、soccer |
詳細
sockodds-mcp
Claude に「X の現在のオッズは?」と尋ねると、SockOdds のスポーツオッズ API(v1)から、オーストラリアのブックメーカーの価格、最高価格、マージンを除いた公正価格を取得できます。無料キーでは3つのブックメーカーと6つのリーグを利用でき、有料プランではさらに多くの対象が追加されます(料金)。
バージョン 1.0 は SockOdds API v1 に対応しています。 バージョン 0.x は古い v2 API を呼び出していましたが、SockOdds はこの API の廃止を予定しています。停止されると、0.x は動作しなくなります。1.0 に更新するには、MCP クライアントを再起動して
npx -y sockodds-mcpで取得してください。それでもサーバーが 0.x として起動する場合は、一度sockodds-mcp@latestを指定してください。キーは引き続き使用できます。0.x からのアップグレードをご覧ください。
「365日で100万ドル」シリーズ向けに作られた、無料のオープンソース MCP サーバーと Claude Code スキルです。MIT ライセンスです。
30秒デモ
このやり取りではデモモード(SOCKODDS_DEMO=1)を使用しているため、価格は実際のオッズではなく、サンプルとして作られたものです。
あなた: ライオンズ対クロウズのオッズは?
Claude は
{ "query": "Lions v Crows", "league_id": "afl" }を指定してfind_eventを呼び出します:1. Brisbane Lions v Adelaide Crows (AFL) Starts: Sat, 12 Sept 2026, 7:35 pm AEST (09:35 UTC) Event ID: ev_kqe6aepys23zあなた: ライオンズの1.95は公正な価格ですか?
Claude は
{ "event_id": "ev_kqe6aepys23z", "market": "h2h" }を指定してfair_oddsを呼び出します:No-vig fair odds: Head to head, from 3 bookmakers Brisbane Lions: fair 2.03 (49.3% chance) Adelaide Crows: fair 1.97 (50.7% chance) Per bookmaker (margin, then its own no-vig prices): Sportsbet: margin 5.3%, 2.03 / 1.97, seen 11 Sept 06:00:12 UTC TAB: margin 5.0%, 2.01 / 1.99, seen 11 Sept 06:01:40 UTC Unibet: margin 5.3%, 2.05 / 1.95, seen 11 Sept 05:59:03 UTCClaude: ライオンズの最高価格は、Unibet の1.95です(05:59 UTC に取得)。ブックメーカーのマージンを取り除くと、ライオンズは約2.03となるため、1.95は公正価格よりやや低めです。オッズは変動するため、ブックメーカーで価格をご確認ください。18歳以上。ここに記載された内容は助言ではありません。責任あるギャンブルを心がけてください。Gambling Help Online:1800 858 858。
ツール
| ツール | 機能 |
|---|---|
list_leagues | SockOdds が扱うリーグと、他のツールで使用するリーグキー(afl、nrl、rlwc など)を一覧表示します |
find_event | 「Broncos v Bulldogs」や「AFL grand final」などの検索語を、開始時刻とイベント ID(ev_...)を含むイベントに変換します |
get_odds | 各ブックメーカーのヘッド・トゥ・ヘッド、ライン、トータルの小数オッズと、SockOdds が取得した時刻を表示します |
best_price | 1つのマーケットの1つの選択肢について、フィールドとともに最高価格を表示します。他のラインの価格は除外されます |
fair_odds | 2通りまたは3通りのマーケットの、マージンを除いた公正価格を表示します(以下の計算方法を参照)。API を呼び出さずに手動での計算にも使用できます |
fair_odds の仕組み
同じラインですべての結果に価格を設定している各ブックメーカーについて、各価格をインプライド確率(1 / 価格)に変換します。これらの確率の合計は100%を超え、その超過分がブックメーカーのマージンとなります。各確率を合計で割ると、マージンが取り除かれます(比例方式)。次に、このツールはブックメーカーごとのマージン除去後の確率を平均し、価格(1 / 確率)に戻します。また、各ブックメーカーのマージンと、最高価格を組み合わせた場合のマージンも表示します。
無料プランの対象ブックメーカーは一般向けのブックメーカーであるため、これは確率の推定値であり、予測ではありません。SockOdds API v1 は各ブックメーカーの価格を、マージン込みで表示どおりに公開しているため、公正価格は常にこのサーバーでそれらの価格から算出します。
ライン変動ツールはありません
SockOdds API v1 には価格履歴(/v1/odds/history)が記録されていますが、履歴の利用は Pro プランに限られ、他のプランでは HTTP 403 が返されます。無料キーでは履歴を読み取れないため、このサーバーにはライン変動ツールが含まれていません。
無料のSockOddsキーを取得する
無料のSockOddsキーを取得する。カードは不要です。登録時にオーストラリアまたは海外の携帯電話番号を入力すると、確認用のワンタイムSMSコードが届きます。キーは一度しか表示されないため、安全な場所にコピーしてください。登録前にツールを試すには、SOCKODDS_DEMO=1を設定してください。すべてのツールを架空のサンプルデータで利用でき、キーは不要です。
料金ページおよびプランと制限に記載されている無料のDeveloperプランの内容は次のとおりです。
- 月あたり2,500オブジェクト。UTCの各月初にリセットされます。レスポンス内の各イベントが1オブジェクト、オッズレスポンス内の価格が設定された各結果も1オブジェクトです。たとえば、3つのブックメーカーがそれぞれ2択のマーケットの価格を提示する1試合では、1 + 3 x 2 = 7オブジェクトです。
- 1分あたり10リクエスト
- 6リーグ:MLB、NFL、AFL、NRL、ラグビーリーグ・ワールドカップ(男子・女子)
- 3ブックメーカー:Sportsbet、TAB、Ladbrokes。プラン対象外のブックメーカーの価格は、リクエストを拒否するのではなく、レスポンスから除外されます。
この制限内に収まるよう、このサーバーはすべてのレスポンスを60秒間キャッシュし、失敗したリクエストを再試行せず、レート制限エラー(HTTP 429)の後はSockOddsのRetry-Afterの時間が経過するまで以降の呼び出しを拒否します。find_eventは価格なしでイベントを読み込み、可能な場合は1つのリーグと日付範囲を指定してリクエストします。get_odds、best_price、fair_oddsは表示するマーケットのみをリクエストし、ライブの回答には使用したオブジェクト数が表示されます。
インストール
Node.js 20以降が必要です。サーバーはnpmのsockodds-mcpとして公開されているため、ビルドは不要です。
Claude Code
claude mcp add sockodds --env SOCKODDS_API_KEY=your-key -- npx -y sockodds-mcp
まだキーをお持ちでない場合は、まず架空のサンプルデータで試せます。
claude mcp add sockodds --env SOCKODDS_DEMO=1 -- npx -y sockodds-mcp
Claudeがツールを使うタイミングと価格の提示方法を把握できるよう、スキルを追加するには次のようにします。
mkdir -p ~/.claude/skills/sockodds-odds
curl -fsSL https://raw.githubusercontent.com/jameselle/sockodds-mcp/main/skill/SKILL.md -o ~/.claude/skills/sockodds-odds/SKILL.md
Claude Desktop
これをclaude_desktop_config.jsonに追加し(Settings、Developer、Edit Config)、Claude Desktopを再起動します。
{
"mcpServers": {
"sockodds": {
"command": "npx",
"args": ["-y", "sockodds-mcp"],
"env": {
"SOCKODDS_API_KEY": "your-key"
}
}
}
}
デモモードでは、envブロックを"SOCKODDS_DEMO": "1"に置き換えてください。
その他のMCPクライアント
ローカルの(stdio)サーバーを実行するクライアントであれば利用できます。コマンドはnpx、引数は-y sockodds-mcp、環境変数はSOCKODDS_API_KEYです。また、公式MCP Registryにもio.github.jameselle/sockodds-mcpとして掲載されています。
ソースから実行
git clone https://github.com/jameselle/sockodds-mcp.git
cd sockodds-mcp
npm install
npm run build
claude mcp add sockodds --env SOCKODDS_API_KEY=your-key -- node "$(pwd)/dist/src/index.js"
設定
| 変数 | デフォルト | 説明 |
|---|---|---|
SOCKODDS_API_KEY | none | お使いのSockOddsキーです。Authorization: Bearerヘッダーでのみ送信され、URLには含まれません。キーがない場合、オッズツールが取得方法を案内します。 |
SOCKODDS_DEMO | off | 架空のサンプルデータを使ってキーなしでツールを試すには、1を設定します。キーが設定されている場合は無視されます。 |
SOCKODDS_TIMEZONE | Australia/Sydney | 開始時刻に使用するタイムゾーンです(UTCも常に表示されます)。 |
SOCKODDS_BASE_URL | https://api.sockodds.com/v1 | APIのベースURLです。設定しないでください。/v2を指定する古い設定は、v2の廃止後に動作しなくなります。削除してください。 |
開発
npm install
npm test
テストでは、Node組み込みのテストランナーと偽のfetchを使用します。公正オッズの計算、最良価格の選択、SockOdds v1ドキュメントのサンプルレスポンスの解析、v1のパスとクエリ名、すべてのエラーステータス、MCPツールのエンドツーエンドの動作を検証します。ライブAPIを呼び出すテストはありません。
docs/API-NOTES.mdには、このサーバーが依存するすべてのエンドポイントとフィールドが、SockOddsドキュメントへのリンクとともに記載されています。fixtures/docs/にはドキュメントからコピーしたサンプルレスポンスが、fixtures/demo/にはデモモード用の同じ形式の架空データが格納されています。
1.1.0での変更点
SockOddsでは、オッズがデフォルトでマーケットごとにまとめられるようになりました。各マーケットと結果は一度だけ表示され、その配下にすべてのブックメーカーの価格が並びます。1.1.0はこの形式と従来の形式の両方を読み取るため、回答は1.0.0と同じです。最初のオッズ回答では、表示名を取得するためにブックメーカーの一覧を一度読み込み、使用状況の行にはそのオブジェクト数も含まれます。
0.x からのアップグレード
バージョン 1.0.0 では、廃止された v2 API から SockOdds API v1 に移行します。変更点は次のとおりです。
- キーはそのまま使えます。 これまでの
x-api-keyではなく、Authorization: Bearer <key>として送信されるようになりました。 - イベント ID が新しくなりました。 v1 の ID は
ev_000ckk0nc1tgのような形式です。0.x の ID(afl_2026-09-12_...など)は変換されないため、もう一度find_eventを実行してください。 - リーグとスポーツのキーは小文字です。たとえば、
afl、nrl、rlwc、australian_footballです。find_eventとlist_leaguesでは、引き続き「AFL」や「Rugby League World Cup」のような通常の名前も指定できます。 - ブックメーカーのキーは v1 に準拠します。たとえば、
betfair_exchangeです。 best_priceではodd_idの代わりにoutcome_idを指定します。outcome_idはget_oddsがall_marketsとともに表示するoc_...形式の ID です。find_eventではオッズが表示されなくなりました。 v1 では、オッズが付いた各アウトカムがオブジェクトとしてカウントされるため、検索ではイベントのみを取得します。続けてget_oddsまたはbest_priceを使ってください。- SockOdds のコンセンサスやシャープなフェアオッズはありません。 v1 では各ブックメーカーに表示されているオッズをそのまま公開し、これまでと同様に
fair_oddsがそれらから控除率なしのオッズを算出します。 - 利用量のカウント方法が変わりました。 イベントごとに 1 オブジェクト、オッズの回答に含まれるオッズ付きアウトカムごとに 1 オブジェクトがカウントされます。ライブの回答には、使用した数が表示されます。
- エラーは v1 の問題形式に従い、400、401、403、404、410、429(レート制限または月間利用枠)、503 では平易なメッセージが表示されます。
ツール名(list_leagues、find_event、get_odds、best_price、fair_odds)と設定に変更はありません。
リリース
package.json(version、mcpName)と server.json(version、packages[0].version)には、同じバージョンを設定する必要があります。リリースするには、次の手順を実行してください。
npm test
npm publish
mcp-publisher login github
mcp-publisher publish
server.json では、このサーバーを 公式 MCP Registry に io.github.jameselle/sockodds-mcp として登録しています。レジストリは、npm パッケージの mcpName が一致することを確認します。glama.json には、Glama の掲載ページの管理者が記載されています。
責任あるギャンブルを
18 歳以上が対象です。オッズは常に変動し、このツールが表示する情報はヒントや助言ではありません。ギャンブルがご自身や身近な方に悪影響を及ぼしている場合は、Gambling Help Online(1800 858 858)に電話するか、gamblinghelponline.org.au をご覧ください。BetStop では、オーストラリアのオンラインブックメーカーからの自己排除を申請できます。
ライセンス
MIT です。LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。