mcpField
M
MCP Sport

MCP Sport

ローカル
github.com/andrequeiroz2ゲーム・エンタメ15 週間前に更新

MCP Sport について

MCP Sportは、OpenF1 APIのF1データをAIアシスタントに提供するMCPサーバーです。18の公開エンドポイントをカバーし、対応するMCP Appホスト向けに順位表とレースリプレイのビューも備えています。

主な機能

  1. 01OpenF1の18エンドポイント向けツール
  2. 02セッション・結果・選手権データ
  3. 03ラップ・ピットストップ・レースコントロール情報
  4. 04テレメトリー・天候・チームラジオ
  5. 05インタラクティブな順位表とレースリプレイ

活用シーン

  1. 01最近のレースにおけるドライバーの結果を確認
  2. 02ラップタイム、スティント、ピットストップを調査
  3. 03対応ホストで順位表やレースリプレイを表示

MCP 対応

OpenF1データを18のMCPツールとして公開し、2つのインタラクティブなMCP Appビューを提供します。ツールはstdioを使用し、ビューにはHTTPサーバーと対応ホストが必要です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"andrequeiroz2-mcp-sport": {
"command": "uvx",
"args": [
"mcp-sport"
]
}
}
}
起動コマンドuvx mcp-sport

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimcp-sport0.1.0

ツール

20

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
full_nameanyいいえstr — 省略可能、1~200 文字。ドライバーのフルネーム。
last_nameanyいいえstr — 省略可能、1~100 文字。ドライバーの姓。
team_nameanyいいえstr — 省略可能、1~100 文字。チーム名。
first_nameanyいいえstr — 省略可能、1~100 文字。ドライバーの名。
meeting_keyanyいいえint | str — 省略可能、正の整数または 'latest'。 ミーティング(グランプリの週末)の識別子。
session_keyanyいいえint | str — 省略可能、正の整数または 'latest'。 セッション識別子。'latest' は現在または直近のセッションを指定します。
country_codeanyいいえ文字列 — 任意、3 文字、大文字に正規化されます。 OpenF1 により非推奨となりました(2026 シーズン後に削除)。
name_acronymanyいいえ文字列 — 任意、ちょうど 3 文字(例:VER)。 大文字に正規化されます。
driver_numberanyいいえ整数 — 任意、1-99。シーズン中のドライバー番号。

詳細

MCP Sport — F1 テレメトリー MCP 🏎️

アニメーション付きのレースリプレイ

OpenF1 API の Formula 1 データを、AI アシスタント (Claude Desktop、Cursor、MCP Inspector など)向けのツールとして提供する MCP(Model Context Protocol) サーバーです。

全機能を網羅:ドキュメント化された OpenF1 エンドポイント 18 個に対応する 18 個のデータツールを提供します。対象はセッション、ミーティング、ドライバー、結果、ラップ、ピットストップ、スティント、テレメトリー、天候、選手権などです。このデータを使った MCP App ビューが 2 つあり、ドライバーの順位表とアニメーション付きレースリプレイを表示します。MCP Apps をレンダリングするホストでは HTML が表示されます。Cursor と Claude Desktop は対応しておらず、同じ内容が JSON として返されます。

技術スタック

レイヤー技術
言語Python 3.13+
MCP フレームワークFastMCP 4.x
検証Pydantic v2
データOpenF1 API(REST、2023 年以降の過去データは無料)
プロジェクト管理uv + pyproject.toml
トランスポートstdio

インストール

# Clone and install dependencies
git clone https://github.com/andrequeiroz2/mcp-sport.git mcp-sport
cd mcp-sport
uv sync

使い方

サーバーを起動する(stdio)
.venv/bin/python src/mcp_sport/server.py
MCP Inspector(ツールをテストする Web UI)
npx @modelcontextprotocol/inspector@latest .venv/bin/python src/mcp_sport/server.py

Inspector UI で、トランスポートに STDIO、コマンドに .venv/bin/python、 引数に src/mcp_sport/server.py を指定し、Connect をクリックします。

Claude Desktop / Cursor

クライアントの MCP 設定に追加します。

{
  "mcpServers": {
    "f1-telemetry": {
      "command": "/absolute/path/mcp-sport/.venv/bin/python",
      "args": ["/absolute/path/mcp-sport/src/mcp_sport/server.py"]
    }
  }
}

18 個のデータツールはどちらのクライアントでも動作します。ビューは表示されません。

ビュー(MCP Apps)

get_drivers_championship_view と get_race_replay_view は、インタラクティブな HTML を返します。Cursor と Claude Desktop は MCP Apps に対応していません。UI を無視して JSON ペイロードを表示します。MCP Inspector も結果をテキストとして扱います。

ビューは、modelcontextprotocol/ext-apps の公式 basic-host で検証されています。サーバーは HTTP で起動し、MCP セッションヘッダーを公開する CORS を設定する必要があります。 そうしないと、ブラウザーは Streamable HTTP ハンドシェイクを完了できません。

ターミナル 1 — ポート 8765 で MCP サーバーを起動します。

uv run python -c "
import uvicorn
from starlette.middleware import Middleware
from starlette.middleware.cors import CORSMiddleware
from mcp_sport.server import mcp

app = mcp.http_app(middleware=[Middleware(
    CORSMiddleware,
    allow_origins=['*'],
    allow_methods=['*'],
    allow_headers=['*'],
    expose_headers=['mcp-session-id', 'mcp-protocol-version'],
)])
uvicorn.run(app, host='127.0.0.1', port=8765)
"

ターミナル 2 — basic-host(Node.js が必要です。npm start には bun が必要なため、tsx を使用します)。

git clone --depth 1 https://github.com/modelcontextprotocol/ext-apps.git
cd ext-apps/examples/basic-host
npm install
npm run build
SERVERS='["http://127.0.0.1:8765/mcp"]' npx tsx serve.ts

http://localhost:8080(サンドボックスは :8081)を開き、get_drivers_championship_view または get_race_replay_view を呼び出します。ビューの HTML を変更した後は、ツールを再度実行する前にページをハードリフレッシュ(Ctrl+Shift+R)してください。ホストは ui:// リソースをキャッシュします。

利用可能なツール(18 個)

ドメインツール説明
ナビゲーションget_sessionsセッション(フリー走行、予選、スプリント、レース)
get_meetingsグランプリとテストの週末
登録情報get_driversセッション/ミーティングごとのドライバー
結果get_session_resultsセッションの最終順位
get_starting_gridスターティンググリッド
get_positionsセッション中の順位履歴
レースget_lapsラップタイム、セクター、速度
get_pit_stopsピットストップ
get_stintsスティントとタイヤコンパウンド
get_intervalsリアルタイムのギャップ(リーダーと前のマシン)
get_race_controlフラッグ、セーフティカー、インシデント
コンテキストget_weatherサーキットの天候(1 分ごとのサンプル)
get_overtakesオーバーテイク
get_team_radioチームラジオの抜粋(MP3)
テレメトリーget_car_data速度、RPM、ギア、スロットル、ブレーキ、DRS(約 3.7 Hz)
get_locationサーキット上のおおよそのマシン位置(約 3.7 Hz)
選手権get_drivers_championshipドライバー順位(ベータ版)
get_teams_championshipチーム順位(ベータ版)
AI との会話例

「ノリスは直近 2 レースで何ポイント獲得しましたか?」

AI は次のように処理します。最近のセッションを見つけるために get_sessions(session_type="Race") を実行し、各セッションで get_session_results(session_key=..., driver_number=4) を実行します。

プロジェクト構成

src/mcp_sport/
├── server.py           # Entrypoint: FastMCP instance + tool registration
├── exceptions.py       # Domain exceptions
├── logging_config.py   # Logging to stderr (stdout is the protocol channel)
├── clients/openf1.py   # Single OpenF1 HTTP client
├── schemas/            # Pydantic: input (BaseInput) and output per endpoint
├── validators/         # Business validations per endpoint
├── services/           # Orchestration per endpoint
├── tools/              # MCP tools (thin layer) per endpoint
└── apps/               # MCP App views (Custom HTML, ui:// resource)
    ├── championship_view.py  # Drivers standings board
    └── race_replay_view.py   # Animated race replay

正式なドキュメント

ドキュメント内容
docs/Technical_Reference.md技術スタック、バージョン、公式リンク(信頼できる情報源)
docs/Architectural_Design.md実装パターンと新しいエンドポイントの手順
docs/Logging_Strategy.mdロギング戦略(stderr + リクエストごとのテレメトリー)
tasks/計画・実行済みタスクの履歴

設定

変数デフォルト説明
MCP_SPORT_LOG_LEVELINFOstderr に出力するログレベル(DEBUG、INFO、WARNING、ERROR)

既知の制限事項

  • 2023 年以降の過去データを利用できます。リアルタイムデータには、有料の OpenF1 サブスクリプションが必要です
  • session_result と starting_grid は、公式結果が公開されるまで HTTP 404 を返します
  • テレメトリー(car_data、location)は、セッション/ドライバーごとに 18~24k 件のサンプルを返します。 speed_min や date_from/date_to などの範囲フィルターを使って、呼び出し対象を絞り込んでください
  • OpenF1 のチャンピオンシップ用エンドポイントはベータ版です

ライセンス

MIT。OpenF1 は非公式プロジェクトであり、Formula 1 関連企業とは一切関係ありません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。