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 分