OpenF1 MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENF1_TOKEN | No | Bearer token for the paid real-time tier. Historical data needs no token. | |
| OPENF1_BASE_URL | No | API base URL. | https://api.openf1.org/v1 |
| OPENF1_DEFAULT_LIMIT | No | Default record limit. | 200 |
| OPENF1_MIN_INTERVAL_MS | No | Minimum time between requests. | 350 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_meetingsA | Find meetings (Grand Prix or testing weekends). Use this first to get a meeting_key. Data starts in 2023. |
| get_sessionsA | Find sessions (practice, qualifying, sprint, race). Use this to get a session_key, which most other tools need. |
| get_driversB | Driver details for a session: name, acronym, team, team colour, headshot URL. |
| get_session_resultA | Final standings of a session (position, laps, duration, gap, DNF/DNS/DSQ). In qualifying, duration and gap_to_leader are arrays for Q1, Q2, Q3. |
| get_starting_gridB | Starting grid of a race, with the qualifying lap time of each driver. |
| get_lapsB | Lap data: lap time, sector times, intermediate and speed-trap speeds, pit-out flag, mini-sector segments (segments are not available in races). |
| get_stintsC | Tyre stints: compound, first and last lap, tyre age at the start of the stint. |
| get_pitB | Pit lane passages: lap, time in pit lane (lane_duration) and stationary stop time (stop_duration, from the 2024 US GP onwards). |
| get_positionB | Driver position during a session: the initial position and each change. |
| get_intervalsB | Gap to the car ahead and gap to the leader during a race (about every 4 s). Large data: filter by driver and time. |
| get_overtakesA | Position exchanges between two drivers in a race (on track, pit stops or penalties). Data can be incomplete. |
| get_race_controlB | Race control messages: flags, safety car, DRS, penalties, track limits, session status. |
| get_weatherB | Track weather each minute: air and track temperature, humidity, pressure, rain, wind. |
| get_championship_driversA | Drivers championship points and position before and after a race. Race sessions only. |
| get_championship_teamsA | Teams championship points and position before and after a race. Race sessions only. |
| get_car_dataA | Car telemetry at about 3.7 Hz: speed, RPM, gear, throttle, brake, DRS. VERY large data: you must give session_key, ONE driver_number and a lap_number or a date range (max 10 minutes). |
| get_locationA | Approximate car position on track (x, y, z) at about 3.7 Hz. VERY large data: you must give session_key, ONE driver_number and a lap_number or a date range (max 10 minutes). |
| get_race_summaryA | Classification of a session with driver names, teams, grid position, positions gained, laps, gap and status (DNF/DNS/DSQ). Works for races, sprints, qualifying and practice. |
| get_tyre_strategyB | Tyre strategy for each driver in a session: compound sequence, stint lengths and pit stops. |
| compare_fastest_lapsA | Compare the fastest lap of 2 to 10 drivers in a session: lap time, sectors, speeds, best sectors, theoretical best lap and delta to the fastest driver. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Several tools overlap in practice: get_session_result and get_race_summary both return session classifications/standings, while get_stints and get_tyre_strategy both expose tyre-stint information. get_pit also partially overlaps with get_tyre_strategy because strategy includes pit stops. Descriptions help, but an agent could still misselect among these related tools.
All tool names follow a clear snake_case verb_noun pattern, with get_* used for the vast majority and compare_fastest_laps as a natural action-specific variant. There is no mixing of camelCase, vague names, or inconsistent structural conventions.
Twenty tools is slightly heavy, but the F1 data domain is broad and each tool maps to a recognizable data type or analysis operation. The count is reasonable for the scope, though some redundancy among result, tyre, and pit tools keeps it from being perfectly scoped.
The surface covers the core F1 workflow very well: meetings, sessions, drivers, results, championships, laps, stints, pits, positions, intervals, race control, weather, telemetry, location, and fastest-lap comparison. Minor gaps remain, such as no explicit team-radio tool and no standalone teams endpoint beyond championship context.