pitstop について
Pitstopは、F1のリアルタイムデータ、過去の記録、ニュースを検索するMCPサーバーです。ファンや分析担当者向けに、テレメトリー、レース分析、順位、自前データベースへの読み取り専用SQLなど11種類のツールを提供します。
主な機能
- 01リアルタイムの計時・レースデータ
- 021950年以降の結果と順位
- 03ラップ単位のテレメトリーと分析
- 0420のRSSフィードによるF1ニュース
- 05読み取り専用SQLとWikidata検索
活用シーン
- 01指定したドライバーやラップのテレメトリーを確認
- 02シーズンごとの選手権順位を比較
- 03レースペースやタイヤの劣化を分析
- 04F1の過去記録や最新ニュースを検索
MCP 対応
HTTPまたはstdioで、11種類のF1データツールをMCPクライアントに提供し、ホスト型HTTPエンドポイントも利用できます。ツールはリアルタイム・過去データ、ニュース、データベース検索を扱います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Pitstop — F1 MCP Server
Formula 1 データを扱う、HTTP ファーストの Model Context Protocol(MCP)サーバーです。複数の信頼できるソースからリアルタイム、過去のレース、ニュースのデータを集約し、あらゆる MCP クライアントですぐに使える 11 個のツールを提供します。
v0.5.0 | 作成者:Praneeth Ravuri
インストール
ホステッドエンドポイント(インストール不要)
無料の公開インスタンスが Hugging Face Spaces で稼働しています。
https://praneeth1025-pitstop.hf.space/mcp
claude mcp add --transport http pitstop https://praneeth1025-pitstop.hf.space/mcp
注:Space は長時間アクセスがないとスリープします。しばらくアクセスがなかった後の最初のリクエストでは、コールドスタートが発生します。
ローカルインストール
uvx 経由の stdio(クローン不要):
PITSTOP_TRANSPORT=stdio uvx pitstop-f1
claude mcp add pitstop -e PITSTOP_TRANSPORT=stdio -- uvx pitstop-f1
codex mcp add pitstop --env PITSTOP_TRANSPORT=stdio -- uvx pitstop-f1
gemini mcp add pitstop uvx pitstop-f1 --env PITSTOP_TRANSPORT=stdio
VS Code:
code --add-mcp '{"name":"pitstop","command":"uvx","args":["pitstop-f1"],"env":{"PITSTOP_TRANSPORT":"stdio"}}'
Claude Desktop(claude_desktop_config.json)、Cursor(~/.cursor/mcp.json)、Windsurf(~/.codeium/windsurf/mcp_config.json)では、同じ JSON 形式を使用します。
{
"mcpServers": {
"pitstop": {
"command": "uvx",
"args": ["pitstop-f1"],
"env": { "PITSTOP_TRANSPORT": "stdio" }
}
}
}
Docker(HTTP トランスポート。F1 データベースを含む完全なサーバーを実行します):
docker compose up
# → http://localhost:8000/mcp
概要
Pitstop は、HTTP(デフォルト)または stdio 経由で、F1 データを 11 個の MCP ツールとして提供します。FastF1、Jolpica、OpenF1、Wikidata、RSS フィード、および独自の F1 データベースからデータを取得し、ページネーション、リトライ、キャッシュ、同時実行数の制限を自動的に処理します。
データソース
| ソース | 対象期間 | 種類 |
|---|---|---|
| FastF1 | 2018年~現在 | 過去のレース/タイミング/テレメトリー |
| Jolpica-F1 | 1950年~現在 | 過去のレース(Ergast 互換) |
| OpenF1 | 2023年~現在 | リアルタイム |
| Wikidata | 全時代 | SPARQL クエリ |
| RSS フィード(20 ソース) | 最新情報 | ニュース |
| Pitstop F1 データベース | 1950年~現在 | 独自の sqlite(F1DB から初期データを投入し、Jolpica から毎週自動更新)+ラップごとのタイム |
データベースの更新:.github/workflows/db-update.yml が毎週実行され、Jolpica の新しい結果を独自の F1 データベースに取り込みます。
ツール
| ツール | 説明 | 主なパラメーター |
|---|---|---|
get_session_data | レース/予選の結果、ラップタイム、天候、ドライバーの詳細(2018年〜現在) | year, gp, session, includes, page, page_size |
get_telemetry_data | ラップごとのマシンのテレメトリデータ(速度、スロットル、ブレーキ、ギア)(2018年〜現在) | year, gp, session, drivers, lap_numbers, max_points, page, page_size |
get_live_data | ライブのタイム差、ピットストップ、チームラジオ、スティント、レースコントロール、天候、順位、ラップ、オーバーテイク(2023年〜現在) | data_types, year, country, session_name, driver_number, compound, flag, category, page, page_size |
get_standings | ドライバーおよびコンストラクターのチャンピオンシップ順位(1950年〜現在) | year, round, type, driver_name, team_name, page, page_size |
get_schedule | レースカレンダーとセッションスケジュール | year, include_testing, round, event_name, only_remaining, page, page_size |
get_reference_data | サーキット、ドライバー、コンストラクターの百科事典(1950年〜現在) | reference_type, year, name, page, page_size |
get_f1_news | 20のRSSソースからのF1ニュース見出し | source, limit, keywords, driver, team, circuit, year, date_from, date_to, page, page_size |
get_results | レース/予選/スプリントの結果、ラップタイム、ピットストップ(1950年〜現在) | year, round, result_type, driver, page |
get_race_analysis | ペース、タイヤの劣化、スティントの概要、一貫性(2018年〜現在) | year, gp, session, drivers, analysis_type, page |
query_wikidata | F1の人物紹介、キャリア記録、歴史に関するWikidataへのSPARQLクエリー | sparql, page, page_size |
query_f1_database | pitstopが所有するF1データベース(1950年〜現在)への読み取り専用SQL:結果、順位、ドライバーの家系図、チームの系譜 | sql, page, page_size |
トランスポート
HTTP(デフォルト)
uv sync
uv run pitstop
# → http://localhost:8000
MCP クライアントの設定:
{
"mcpServers": {
"pitstop": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}
stdio(オプトイン)
PITSTOP_TRANSPORT=stdio uv run pitstop
MCP クライアントの設定:
{
"mcpServers": {
"pitstop": {
"command": "uv",
"args": ["run", "--directory", "/path/to/pitstop", "pitstop"],
"env": { "PITSTOP_TRANSPORT": "stdio" }
}
}
}
ヘルス API
| エンドポイント | 用途 |
|---|---|
GET /health | ソースごとのステータス(FastF1、f1db、Jolpica、OpenF1、RSS) |
GET /live | 稼働状況のプローブ |
GET /ready | 準備状況のプローブ |
/health のレスポンス例:
{
"version": "0.5.0",
"overall": "ok",
"sources": [
{ "name": "fastf1", "status": "ok", "latency_ms": 2, "detail": "cache writable" },
{ "name": "f1db", "status": "ok", "latency_ms": 1, "detail": "" },
{ "name": "jolpica", "status": "ok", "latency_ms": 134, "detail": "" },
{ "name": "openf1", "status": "ok", "latency_ms": 98, "detail": "" },
{ "name": "rss", "status": "ok", "latency_ms": 210, "detail": "" }
]
}
overall は "ok"/"degraded"/"down" です。HTTP 200/207/503。
Wikidata SPARQL
query_wikidata は、レース API でカバーされていないF1の人物情報や歴史的事実を取得するため、Wikidata に対してSPARQLクエリーを実行します。
SELECT と ASK のクエリーのみ受け付けます(読み取り専用)。クエリーには必ず LIMIT を含めてください。
例 — 生年月日を含むF1ドライバーを検索する:
SELECT ?driver ?driverLabel ?birthDate WHERE {
?driver wdt:P31 wd:Q5 ;
wdt:P641 wd:Q1968 ;
wdt:P569 ?birthDate .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
} ORDER BY DESC(?birthDate) LIMIT 10
ページネーション
リストを返すすべてのツールは、page(1から始まり、デフォルトは1)と page_size(ツールによって異なり、デフォルトは10〜50)を受け付けます。レスポンスには pagination ブロックが含まれます:
{
"data": [...],
"pagination": {
"page": 1,
"page_size": 20,
"total_items": 47,
"total_pages": 3,
"has_next": true,
"has_prev": false
}
}
設定
| 変数 | デフォルト | 説明 |
|---|---|---|
PITSTOP_TRANSPORT | http | http または stdio |
PITSTOP_HOST | 0.0.0.0 | バインドアドレス(HTTP のみ) |
PITSTOP_PORT | 8000 | リッスンポート(HTTP のみ) |
PITSTOP_ENV | development | development または production |
PITSTOP_LOG_LEVEL | PITSTOP_ENV に依存 | 開発環境では DEBUG、それ以外では INFO |
PITSTOP_LOG_FORMAT | PITSTOP_ENV に依存 | 開発環境では text、それ以外では json |
PITSTOP_ENABLE_CACHING | true | HTTP レスポンスと FastF1 のディスクキャッシュを有効にする |
PITSTOP_CACHE_TTL_SECONDS | 300 | HTTP レスポンスのキャッシュ有効期間(秒) |
PITSTOP_RATE_LIMIT_ENABLED | false | 同時呼び出し数の制限を有効にする |
PITSTOP_RATE_LIMIT_PER_HOUR | 3600 | 最大同時呼び出し数(1時間あたりのクォータから算出) |
FASTF1_CACHE | cache | FastF1 キャッシュディレクトリのパス |
キャッシュ
Pitstop は、200 のレスポンスを返す GET リクエストに対して、メモリ内の HTTP レスポンスキャッシュ(Hishel を使用)を利用します。これにより、ツールの呼び出しを上流サービスのレート制限内に抑えます。
- Jolpica:4 req/s、500/hr
- OpenF1:3 req/s、30/min
- Wikidata:クエリの複雑さに関する制限
- RSS:フィードごとのリダイレクトをキャッシュ
FastF1 は、FASTF1_CACHE ディレクトリに独自のディスクキャッシュを保持します。キャッシュは以下で制御します。
PITSTOP_ENABLE_CACHING=true(デフォルト)PITSTOP_CACHE_TTL_SECONDS=300(デフォルト)
開発
uv sync --dev
uv run pytest
uv run ruff check src/
貢献
CONTRIBUTING.md をご覧ください。
クレジットと帰属表示
| ソース | 説明 | ライセンス |
|---|---|---|
| F1DB | F1DB を基にデータベースを作成し、その後 pitstop が変更・拡張 | CC BY 4.0 |
| FastF1 | F1 のタイミング、テレメトリ、セッションデータを扱う Python ライブラリ | MIT |
| Jolpica-F1 | 1950 年から現在までの Ergast 互換 F1 データ API。F1DB を基にしたデータベースの週次自動更新にも使用 | — |
| OpenF1 | リアルタイムの F1 データを提供する無料のオープンソース API | MIT |
| Wikidata | SPARQL クエリサービスを備えたオープンなナレッジグラフ | CC0 |
| Ergast Motor Racing API | 1950~2024 年の F1 歴史データ(現在は Jolpica 経由で提供) | — |
| RSS フィード(20 ソース) | ニュースの見出し。まとめてクレジットを表示します。get_f1_news の結果にある各フィードの link フィールドをご覧ください | 各発行元のライセンス |
Formula 1 または FIA とは提携していません。データは、各利用規約に基づいてサードパーティのソースから提供されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。