Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

MCP Sport

PYPI · MCP-SPORT · SCANNED SEP 22

MCP server that exposes Formula 1 data from the OpenF1 API.

Available components

50 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security44
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs a script at install time (build_backend) that we could not recognise. It may be perfectly ordinary, but we do not read the published tarball, so we cannot say what it does. View diagnostics → Partial
  • 1 of 15 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency32
Schema Quality & AI Usability78
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 3284 tokens (~149/item across 22 items; 20 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage85
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 49% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 20 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 21 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
  • Supports UI / widget rendering.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the MCP Sport server?

MCP Sport runs locally as a PyPI package, launched with uvx mcp-sport. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · mcp-sport

# add to Claude Code
claude mcp add andrequeiroz2-mcp-sport -- uvx mcp-sport
// .cursor/mcp.json
{
  "mcpServers": {
    "andrequeiroz2-mcp-sport": {
      "command": "uvx",
      "args": [
        "mcp-sport"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "andrequeiroz2-mcp-sport": {
      "command": "uvx",
      "args": [
        "mcp-sport"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add andrequeiroz2-mcp-sport -- uvx mcp-sport
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "andrequeiroz2-mcp-sport": {
      "type": "local",
      "command": [
        "uvx",
        "mcp-sport"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add andrequeiroz2-mcp-sport --command uvx --arg mcp-sport
# ~/.hermes/config.yaml
mcp_servers:
  andrequeiroz2-mcp-sport:
    command: "uvx"
    args: ["mcp-sport"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "andrequeiroz2-mcp-sport": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "mcp-sport"
      ]
    }
  }
}
# add to Vellum
assistant mcp add andrequeiroz2-mcp-sport -t stdio -c uvx -a mcp-sport
// mcp.json
{
  "mcpServers": {
    "andrequeiroz2-mcp-sport": {
      "command": "uvx",
      "args": [
        "mcp-sport"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 22 Sept 26 50

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 22 Sept 2026 · Analysed pypi/mcp-sport@0.1.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend unreviewed uv_build

Background: Why install scripts are a supply-chain risk →

Dependencies 15 packages
Packages resolved 15
Stale 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 20 exposed · ~3,252 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
get_car_data ~200

Fetch car telemetry (speed, rpm, gear, throttle, brake, DRS) from OpenF1. Sampled at ~3.7 Hz — always narrow down with the range filters below (e.g., a single lap via date_from/date_to, or high-speed samples via speed_min) to keep responses usable.

NameTypeReqDescription
date_from
date_to
driver_numberint — required, 1-99. Driver number for the season.
drs_max
drs_min
n_gear_max
n_gear_min
rpm_max
rpm_min
session_keyint | str — required, positive int or 'latest'. Session identifier; use get_sessions to discover it.
speed_max
speed_min
throttle_max
throttle_min
NameTypeReqDescription
resultarrayyes

No examples provided.

get_drivers ~234

Fetch F1 drivers from OpenF1, filtered by session, meeting or identity fields.

NameTypeReqDescription
country_codestr — optional, 3 letters, normalized to uppercase. Deprecated by OpenF1 (removed after the 2026 season).
driver_numberint — optional, 1-99. Driver number for the season.
first_namestr — optional, 1-100 chars. Driver first name.
full_namestr — optional, 1-200 chars. Driver full name.
last_namestr — optional, 1-100 chars. Driver last name.
meeting_keyint | str — optional, positive int or 'latest'. Meeting (Grand Prix weekend) identifier.
name_acronymstr — optional, exactly 3 letters (e.g., VER). Normalized to uppercase.
session_keyint | str — optional, positive int or 'latest'. Session identifier; 'latest' targets the current/most recent session.
team_namestr — optional, 1-100 chars. Team name.
NameTypeReqDescription
resultarrayyes

No examples provided.

get_drivers_championship ~104

Fetch drivers championship standings from OpenF1 (beta endpoint). Only available for race sessions. This endpoint is in beta: its behavior or fields may change without notice.

NameTypeReqDescription
driver_numberint — optional, 1-99. Driver number for the season.
session_keyint | str — required in practice, positive int or 'latest'. Race session identifier; use get_sessions with session_type='Race' to discover it.
NameTypeReqDescription
resultarrayyes

No examples provided.

get_drivers_championship_view ~111

Fetch drivers championship standings and render them as a visual board. MCP App spike (task 05): in hosts supporting the MCP Apps extension, the result renders as an interactive HTML board with driver photos, team colors and points. In other hosts, the same data is returned as JSON text.

NameTypeReqDescription
session_keyint | str — required in practice, positive int or 'latest'. Race session identifier; use get_sessions with session_type='Race' to discover it.
NameTypeReqDescription
resultstringyes

No examples provided.

get_intervals ~116

Fetch real-time gaps between drivers and to the race leader from OpenF1. Available during races only, with updates approximately every 4 seconds. Use date_from/date_to to bound the response (e.g., the closing laps).

NameTypeReqDescription
date_from
date_to
driver_numberint — optional, 1-99. Driver number for the season.
session_keyint | str — required in practice, positive int or 'latest'. Session identifier; use get_sessions to discover it.
NameTypeReqDescription
resultarrayyes

No examples provided.

get_laps ~242

Fetch detailed lap-by-lap data for an F1 session from OpenF1.

NameTypeReqDescription
date_from
date_to
driver_numberint — optional, 1-99. Driver number for the season.
duration_sector_1_max
duration_sector_1_min
duration_sector_2_max
duration_sector_2_min
duration_sector_3_max
duration_sector_3_min
i1_speed_max
i1_speed_min
i2_speed_max
i2_speed_min
lap_duration_max
lap_duration_min
lap_numberint — optional, >= 1. Exact lap number (do not combine with lap_number_min/max).
lap_number_max
lap_number_min
session_keyint | str — required in practice, positive int or 'latest'. Session identifier; use get_sessions to discover it.
st_speed_max
st_speed_min
NameTypeReqDescription
resultarrayyes

No examples provided.

get_location ~180

Fetch approximate car positions on the circuit from OpenF1. Sampled at ~3.7 Hz — always narrow down with date_from/date_to (e.g., a single lap) to keep responses usable. Useful for gauging progress along the track, but lacks lateral placement (left/right side). The origin point (0, 0, 0) is arbitrary.

NameTypeReqDescription
date_from
date_to
driver_numberint — required, 1-99. Driver number for the season.
session_keyint | str — required, positive int or 'latest'. Session identifier; use get_sessions to discover it.
x_max
x_min
y_max
y_min
z_max
z_min
NameTypeReqDescription
resultarrayyes

No examples provided.

get_meetings ~161

Fetch F1 meetings (Grand Prix or testing weekends) from OpenF1.

NameTypeReqDescription
circuit_keyint — optional, positive int. Circuit identifier.
country_namestr — optional, 1-100 chars, e.g., 'Singapore'.
locationstr — optional, 1-100 chars, e.g., 'Marina Bay'.
meeting_keyint | str — optional, positive int or 'latest'. Meeting identifier; 'latest' targets the current/most recent meeting.
meeting_namestr — optional, 1-100 chars, e.g., 'Singapore Grand Prix'.
yearint — optional, >= 2023 (OpenF1 data starts in 2023).
NameTypeReqDescription
resultarrayyes

No examples provided.

get_overtakes ~143

Fetch overtakes during F1 races from OpenF1. Covers on-track passes and position changes from pit stops or post-race penalties. Only available during races and may be incomplete.

NameTypeReqDescription
overtaken_driver_numberint — optional, 1-99. The passed driver.
overtaking_driver_numberint — optional, 1-99. The attacking driver.
positionint — optional, >= 1. Position of the overtaking driver after the overtake.
session_keyint | str — required in practice, positive int or 'latest'. Race session identifier; use get_sessions to discover it.
NameTypeReqDescription
resultarrayyes

No examples provided.

get_pit_stops ~143

Fetch pit lane passes for an F1 session from OpenF1.

NameTypeReqDescription
date_from
date_to
driver_numberint — optional, 1-99. Driver number for the season.
lane_duration_max
lane_duration_min
lap_numberint — optional, >= 1. Exact lap of the stop (do not combine with lap_number_min/max).
lap_number_max
lap_number_min
session_keyint | str — required in practice, positive int or 'latest'. Session identifier; use get_sessions to discover it.
NameTypeReqDescription
resultarrayyes

No examples provided.

get_positions ~142

Fetch driver position changes throughout an F1 session from OpenF1.

NameTypeReqDescription
date_from
date_to
driver_numberint — optional, 1-99. Driver number for the season.
meeting_keyint | str — optional, positive int or 'latest'. Meeting (Grand Prix weekend) identifier.
positionint — optional, >= 1. Exact position (do not combine with position_min/max).
position_max
position_min
session_keyint | str — optional, positive int or 'latest'. Session identifier; use get_sessions to discover it.
NameTypeReqDescription
resultarrayyes

No examples provided.

get_race_control ~180

Fetch race control events (flags, safety car, incidents) from OpenF1.

NameTypeReqDescription
categorystr — optional, e.g., 'SessionStatus', 'CarEvent', 'Drs', 'Flag', 'SafetyCar'.
date_from
date_to
driver_numberint — optional, 1-99. Driver number for the season.
flagstr — optional, 1-50 chars, e.g., 'YELLOW', 'BLACK AND WHITE'. Normalized to uppercase.
lap_number_max
lap_number_min
scopestr — optional, e.g., 'Track', 'Driver', 'Sector'.
session_keyint | str — optional, positive int or 'latest'. Session identifier; use get_sessions to discover it.
NameTypeReqDescription
resultarrayyes

No examples provided.

get_race_replay_view ~249

Replay a race as an animated position chart (bar-chart-race style). MCP App (task 06): in hosts supporting the MCP Apps extension, renders cars stacked by official position with a checkered treadmill paced by the leader (a new lap opens when the leader crosses), tyre compound badges (red S / yellow M / white H), per-sector times with broadcast colors recomputed at the displayed instant (one purple per sector, green = personal best, yellow = slower), the lap time as MM:SS:mmm, PIT badges, a centered Safety Car / VSC / race-suspended banner, and a header with circuit, local start time and track conditions. Retired cars show a permanent OUT or DNS tag and drop gap, sectors and lap time. In other hosts the same payload is returned as JSON text.

NameTypeReqDescription
session_keyint | str — optional, positive int or 'latest'. Defaults to 'latest' when omitted. RACE session identifier; use get_sessions with session_type='Race' to discover it. During a live race, 'latest' yiel…
NameTypeReqDescription
resultstringyes

No examples provided.

get_session_results ~145

Fetch the final classification of an F1 session from OpenF1. Results become available a few minutes after the official results are published on the Formula 1 website. If the API returns HTTP 404, the results are not yet published for that session — retry with an earlier session_key (use get_sessions to find completed sessions).

NameTypeReqDescription
driver_numberint — optional, 1-99. Driver number for the season.
positionint — optional, >= 1. Final position in the session.
session_keyint | str — required in practice, positive int or 'latest'. Session identifier; use get_sessions to discover it.
NameTypeReqDescription
resultarrayyes

No examples provided.

get_sessions ~212

Fetch F1 sessions (practice, qualifying, sprint, race) from OpenF1.

NameTypeReqDescription
circuit_keyint — optional, positive int. Circuit identifier.
country_namestr — optional, 1-100 chars, e.g., 'Belgium'.
locationstr — optional, 1-100 chars, e.g., 'Spa-Francorchamps'.
meeting_keyint | str — optional, positive int or 'latest'. Meeting (Grand Prix weekend) identifier.
session_keyint | str — optional, positive int or 'latest'. Session identifier; 'latest' targets the current/most recent session.
session_namestr — optional, e.g., 'Practice 1', 'Qualifying', 'Race'.
session_typestr — optional, e.g., 'Practice', 'Qualifying', 'Race'.
yearint — optional, >= 2023 (OpenF1 data starts in 2023).
NameTypeReqDescription
resultarrayyes

No examples provided.

get_starting_grid ~145

Fetch the starting grid for an F1 race from OpenF1. Grid data becomes available a few minutes after the official results are published on the Formula 1 website. If the API returns HTTP 404, the grid is not yet published for that session — retry with an earlier session_key (use get_sessions to find completed sessions).

NameTypeReqDescription
driver_numberint — optional, 1-99. Driver number for the season.
positionint — optional, >= 1. Position on the grid.
session_keyint | str — required in practice, positive int or 'latest'. Session identifier; use get_sessions to discover it.
NameTypeReqDescription
resultarrayyes

No examples provided.

get_stints ~170

Fetch tyre stints (periods of continuous driving) from OpenF1.

NameTypeReqDescription
compoundstr — optional, 1-20 chars, e.g., 'SOFT', 'MEDIUM', 'HARD'. Normalized to uppercase.
driver_numberint — optional, 1-99. Driver number for the season.
lap_end_max
lap_end_min
lap_start_max
lap_start_min
session_keyint | str — required in practice, positive int or 'latest'. Session identifier; use get_sessions to discover it.
stint_numberint — optional, >= 1. Sequential stint number.
tyre_age_at_start_max
tyre_age_at_start_min
NameTypeReqDescription
resultarrayyes

No examples provided.

get_team_radio ~115

Fetch team radio exchanges between drivers and teams from OpenF1. Only a limited selection of communications is included, not the complete record. Coverage has decreased significantly starting in 2026, with most events providing no radio data at all (a limitation on F1's side).

NameTypeReqDescription
driver_numberint — optional, 1-99. Driver number for the season.
session_keyint | str — required in practice, positive int or 'latest'. Session identifier; use get_sessions to discover it.
NameTypeReqDescription
resultarrayyes

No examples provided.

get_teams_championship ~106

Fetch teams championship standings from OpenF1 (beta endpoint). Only available for race sessions. This endpoint is in beta: its behavior or fields may change without notice.

NameTypeReqDescription
session_keyint | str — required in practice, positive int or 'latest'. Race session identifier; use get_sessions with session_type='Race' to discover it.
team_namestr — optional, 1-100 chars, e.g., 'McLaren'.
NameTypeReqDescription
resultarrayyes

No examples provided.

get_weather ~154

Fetch weather conditions over the track from OpenF1 (sampled every minute).

NameTypeReqDescription
air_temperature_max
air_temperature_min
date_from
date_to
humidity_max
humidity_min
meeting_keyint | str — optional, positive int or 'latest'. Meeting (Grand Prix weekend) identifier.
rainfall_max
rainfall_min
session_keyint | str — optional, positive int or 'latest'. Session identifier; use get_sessions to discover it.
track_temperature_max
track_temperature_min
wind_speed_max
wind_speed_min
NameTypeReqDescription
resultarrayyes

No examples provided.

Common questions

What is the MCP Sport server?

MCP Sport is listed in the public MCP registry as io.github.andrequeiroz2/mcp-sport. MCP server that exposes Formula 1 data from the OpenF1 API. This page covers its PyPI package (mcp-sport).

Is the MCP Sport server safe to use?

MCP Sport scores 50 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 22 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the MCP Sport server expose?

MCP Sport exposes 20 tools: get_drivers, get_sessions, get_meetings, get_session_results, get_starting_grid, and 15 more. Their descriptions and schemas cost roughly 3,252 tokens of context every time the server is loaded.

Is the MCP Sport server still maintained?

MCP Sport is still listed as active in the MCP registry. We last reached this channel on 22 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.