Pitstop

io.github.praneethravuri由 GitHub 帳號 praneethravuri 發布v0.5.0更新於 Oct 24, 2026

F1 MCP server: live timing, telemetry, standings, news, and a queryable 1950-present database.

概覽

AI 產生的概覽

Pitstop 是一個 F1 資料 MCP 伺服器,讓助理取得即時計時、遙測、積分榜、賽果、新聞,並查詢 1950 年至今的資料庫。

可以做什麼
取得 1950 年至今的比賽、排位賽與衝刺賽結果、圈速與進站資料,以及 2018 年至今依車手與圈數篩選的場次資料與遙測。讀取即時比賽資料,例如間隔、進站、車隊無線電、賽段、賽事控制與天氣。查詢車手與車隊積分榜、賽曆,以及賽道、車手與車隊的歷史資料。取得來自 RSS 來源的 F1 新聞標題,可依關鍵字、車手、車隊、賽道或日期篩選。進行節奏、輪胎磨耗、賽段與穩定性分析,並向 Wikidata 執行唯讀 SPARQL 查詢。對伺服器自有的 F1 資料庫執行唯讀 SQL,查詢賽果、積分榜、車手家族樹與車隊沿革。
適用情境
適合讓助理回答一級方程式相關問題、跨年代比較車手或車隊、追蹤比賽週末的即時狀況,或深入分析遙測與比賽節奏,不必在多個網站之間切換。既適合快速查詢,也適合較深入的歷史與分析工作。
執行需求
透過 uvx(Python)作為本機程序執行,需將 PITSTOP_TRANSPORT 設為 stdio;也可在本機或 Docker 中以 HTTP 方式執行(預設連接埠 8000)。README 另列出一個免費的公開託管端點。未宣告需要 API 金鑰。需要連線至 FastF1、Jolpica、OpenF1、Wikidata 與 RSS 來源的網路;託管執行個體閒置後可能需冷啟動。
安裝前請注意
伺服器會向第三方資料來源(FastF1、Jolpica、OpenF1、Wikidata、RSS 來源)發出請求,並受其速率限制與條款約束。SQL 與 SPARQL 工具被描述為唯讀,但執行前仍應檢查查詢內容。資料來自第三方,可能不完整或有延遲;專案聲明與 Formula 1 及 FIA 無關聯。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Pitstop,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Pitstop — F1 MCP Server

An HTTP-first Model Context Protocol (MCP) server for Formula 1 data. Aggregates real-time, historical, and news data from multiple authoritative sources into 11 tools ready for any MCP client.

v0.5.0 | Author: Praneeth Ravuri


Install

Hosted endpoint (nothing to install)

A free public instance runs on Hugging Face Spaces:

https://praneeth1025-pitstop.hf.space/mcp
bash
claude mcp add --transport http pitstop https://praneeth1025-pitstop.hf.space/mcp

Note: the Space sleeps after long inactivity — the first request after a quiet spell takes a cold start.

Local install

stdio, via uvx (no clone needed):

bash
PITSTOP_TRANSPORT=stdio uvx pitstop-f1

Claude Code:

bash
claude mcp add pitstop -e PITSTOP_TRANSPORT=stdio -- uvx pitstop-f1

Codex CLI:

bash
codex mcp add pitstop --env PITSTOP_TRANSPORT=stdio -- uvx pitstop-f1

Gemini CLI:

bash
gemini mcp add pitstop uvx pitstop-f1 --env PITSTOP_TRANSPORT=stdio

VS Code:

bash
code --add-mcp '{"name":"pitstop","command":"uvx","args":["pitstop-f1"],"env":{"PITSTOP_TRANSPORT":"stdio"}}'

Claude Desktop (claude_desktop_config.json), Cursor (~/.cursor/mcp.json), and Windsurf (~/.codeium/windsurf/mcp_config.json) share the same JSON shape:

json
{  "mcpServers": {    "pitstop": {      "command": "uvx",      "args": ["pitstop-f1"],      "env": { "PITSTOP_TRANSPORT": "stdio" }    }  }}

Docker (HTTP transport, runs the full server incl. the F1 database):

bash
docker compose up# → http://localhost:8000/mcp

Overview

Pitstop exposes F1 data as 11 MCP tools over HTTP (default) or stdio. It pulls from FastF1, Jolpica, OpenF1, Wikidata, RSS feeds, and its own seeded F1 database, handling pagination, retries, caching, and concurrency limits transparently.


Data Sources

SourceCoverageType
FastF12018–presentHistorical / timing / telemetry
Jolpica-F11950–presentHistorical (Ergast-compatible)
OpenF12023–presentReal-time
WikidataAll erasSPARQL queries
RSS Feeds (20 sources)LiveNews
Pitstop F1 Database1950–presentOwned sqlite (seeded from F1DB, self-updated weekly from Jolpica) + per-lap times

Database refresh: .github/workflows/db-update.yml runs weekly to pull new Jolpica results into the owned F1 database.


Tools

ToolDescriptionKey Parameters
get_session_dataRace/qualifying results, lap times, weather, driver details (2018–present)year, gp, session, includes, page, page_size
get_telemetry_dataLap-by-lap car telemetry (speed, throttle, brake, gears) (2018–present)year, gp, session, drivers, lap_numbers, max_points, page, page_size
get_live_dataLive intervals, pit stops, team radio, stints, race control, weather, position, laps, overtakes (2023–present)data_types, year, country, session_name, driver_number, compound, flag, category, page, page_size
get_standingsDriver and constructor championship standings (1950–present)year, round, type, driver_name, team_name, page, page_size
get_scheduleRace calendar and session scheduleyear, include_testing, round, event_name, only_remaining, page, page_size
get_reference_dataCircuits, drivers, constructors encyclopedia (1950–present)reference_type, year, name, page, page_size
get_f1_newsF1 headlines from 20 RSS sourcessource, limit, keywords, driver, team, circuit, year, date_from, date_to, page, page_size
get_resultsRace/qualifying/sprint results, lap times, pit stops (1950–present)year, round, result_type, driver, page
get_race_analysisPace, tire degradation, stint summaries, consistency (2018–present)year, gp, session, drivers, analysis_type, page
query_wikidataSPARQL queries to Wikidata for F1 biography, career records, historysparql, page, page_size
query_f1_databaseRead-only SQL over pitstop's owned F1 database (1950–present): results, standings, driver family trees, team lineagesql, page, page_size

Transport

HTTP (default)

bash
uv syncuv run pitstop# → http://localhost:8000

MCP client config:

json
{  "mcpServers": {    "pitstop": {      "type": "http",      "url": "http://localhost:8000/mcp"    }  }}

stdio (opt-in)

bash
PITSTOP_TRANSPORT=stdio uv run pitstop

MCP client config:

json
{  "mcpServers": {    "pitstop": {      "command": "uv",      "args": ["run", "--directory", "/path/to/pitstop", "pitstop"],      "env": { "PITSTOP_TRANSPORT": "stdio" }    }  }}

Health API

EndpointPurpose
GET /healthPer-source status (FastF1, f1db, Jolpica, OpenF1, RSS)
GET /liveLiveness probe
GET /readyReadiness probe

Example /health response:

json
{  "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 is "ok" / "degraded" / "down". HTTP 200 / 207 / 503.


Wikidata SPARQL

query_wikidata runs SPARQL queries against Wikidata for biographical and historical F1 facts not covered by race APIs.

Only SELECT and ASK queries are accepted (read-only). Always include LIMIT in your query.

Example — find F1 drivers with their birthdate:

sparql
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

Pagination

All list-returning tools accept page (1-based, default 1) and page_size (defaults vary per tool: 10–50). Responses include a pagination block:

json
{  "data": [...],  "pagination": {    "page": 1,    "page_size": 20,    "total_items": 47,    "total_pages": 3,    "has_next": true,    "has_prev": false  }}

Configuration

VariableDefaultDescription
PITSTOP_TRANSPORThttphttp or stdio
PITSTOP_HOST0.0.0.0Bind address (HTTP only)
PITSTOP_PORT8000Listen port (HTTP only)
PITSTOP_ENVdevelopmentdevelopment or production
PITSTOP_LOG_LEVELDepends on PITSTOP_ENVDEBUG if development, else INFO
PITSTOP_LOG_FORMATDepends on PITSTOP_ENVtext if development, else json
PITSTOP_ENABLE_CACHINGtrueEnable HTTP response and FastF1 disk caching
PITSTOP_CACHE_TTL_SECONDS300HTTP response cache time-to-live (seconds)
PITSTOP_RATE_LIMIT_ENABLEDfalseEnable concurrent-call limiting
PITSTOP_RATE_LIMIT_PER_HOUR3600Max concurrent calls (derived from per-hour quota)
FASTF1_CACHEcacheFastF1 cache directory path

Caching

Pitstop uses in-memory HTTP response caching (via Hishel) for GET requests with 200 responses. This keeps tool calls inside upstream rate limits:

  • Jolpica: 4 req/s, 500/hr
  • OpenF1: 3 req/s, 30/min
  • Wikidata: Query complexity limits
  • RSS: Per-feed redirects cached

FastF1 maintains its own disk cache in FASTF1_CACHE directory. Control caching via:

  • PITSTOP_ENABLE_CACHING=true (default)
  • PITSTOP_CACHE_TTL_SECONDS=300 (default)

Development

bash
uv sync --devuv run pytestuv run ruff check src/

Contributing

See CONTRIBUTING.md.


Credits & attribution

SourceDescriptionLicense
F1DBDatabase seeded from F1DB and subsequently modified & extended by pitstopCC BY 4.0
FastF1Python library for F1 timing, telemetry, and session dataMIT
Jolpica-F1Ergast-compatible F1 data API, 1950–present; also used to self-update the F1DB-seeded database weekly—
OpenF1Free open-source API for real-time F1 dataMIT
WikidataOpen knowledge graph with SPARQL query serviceCC0
Ergast Motor Racing APIHistorical F1 data 1950–2024 (now served via Jolpica)—
RSS Feeds (20 sources)News headlines, credited collectively; see each feed's link field in get_f1_news resultsRespective publishers

Not affiliated with Formula 1 or the FIA. Data provided by third-party sources under their respective terms.

來源:README.md,提交 f3fc2d7

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.5.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分