Pitstop

io.github.praneethravuriPublished by GitHub account praneethravuriv0.5.0Updated Oct 24, 2026

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

Overview

AI-generated overview

Pitstop is an F1 data MCP server that gives an assistant live timing, telemetry, standings, results, news and a queryable 1950-present database.

What you can do
Fetch race, qualifying and sprint results, lap times and pit stops from 1950 onward, plus session data and telemetry from 2018 onward for chosen drivers and laps. Read live race data such as intervals, pit stops, team radio, stints, race control and weather. Look up championship standings, the race calendar, and reference data on circuits, drivers and constructors. Get F1 news headlines from RSS sources, filtered by keyword, driver, team, circuit or date. Run pace, tire degradation, stint and consistency analysis, and run read-only SPARQL queries against Wikidata. Run read-only SQL against the server's own F1 database for results, standings, driver family trees and team lineage.
When to use it
Useful when you want an assistant to answer Formula 1 questions, compare drivers or teams across eras, follow a live race weekend, or dig into telemetry and race pace without visiting several sites. It suits both quick lookups and deeper historical or analytical work.
Requirements
Runs as a local process via uvx (Python) with PITSTOP_TRANSPORT set to stdio, or as an HTTP server (default port 8000) locally or in Docker. The README also lists a free public hosted endpoint. No API keys are declared. Network access to FastF1, Jolpica, OpenF1, Wikidata and RSS feeds is needed; the hosted instance may cold-start after inactivity.
Before you install
The server sends requests to third-party data sources (FastF1, Jolpica, OpenF1, Wikidata, RSS feeds) and is subject to their rate limits and terms. The SQL and SPARQL tools are described as read-only, but review queries before running them. Data comes from third parties and may be incomplete or delayed; the project states it is not affiliated with Formula 1 or the FIA.

Installation

In SourceWeft

  1. Open Pitstop in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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.

Source: README.md at commit f3fc2d7

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.5.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts