Skip to main content
Glama
Darakhsh1999

Formula 1 MCP Server

by Darakhsh1999

๐Ÿ Formula 1 MCP Server ๐ŸŽ๏ธ

This project defines a MCP server for Formula 1 data, providing fans, analysts, and developers with easy access to a vast range of F1 statistics and information. Built with Python and powered by the Gradio framework, it offers a user-friendly web interface to explore historical and recent F1 data from the FastF1 library and the official OpenF1 API.

Video Demo (Claude Desktop)

Demo Video

Related MCP server: Pitstop

Architecture

Architectural overview of the MCP server and client. The MCP server is hosted using a Gradio back-end and can be either run locally or on a remote server.

Gradio Key Features

The interface is organized into several Gradio tabs, each dedicated to a specific type of F1 data:

  • Championship Standings: View final driver and constructor championship standings for any season from 1950 to the present.

  • Event Information: Get detailed information for any Grand Prix, including schedules and circuit details.

  • Season Calendar: Display the complete race calendar for a given year.

  • Track Visualizations: Generate and view plots of the fastest race lap, visualizing speed, gear changes, and cornering G-forces.

  • Session Results: Fetch detailed results for any race session (Practice, Qualifying, or Race).

  • Driver & Constructor Info: Look up background information and statistics for drivers and teams.

  • OpenF1 API Tools: An advanced toolkit for developers to directly query the OpenF1 API, build custom requests, and view raw JSON responses.

Tech Stack

  • Backend: Python

  • Web Framework: Gradio

  • Data Sources:

    • fastf1 Python library for historical data.

    • openf1 for live and recent data via their public API.

  • Key Libraries: pandas, matplotlib

MCP Server

The MCP server is defined inside app.py.

MCP Client

The MCP client and AI agent is defined inside mcp_client.py and allows interaction with the MCP server through server side events (SSE) transport.

MCP configuration file

For MCP clients that support SSE transport (for Claude Desktop, see below), the following configuration can be used:

{
  "mcpServers": {
    "gradio": {
      "url": "https://agents-mcp-hackathon-f1-mcp-server.hf.space/gradio_api/mcp/sse"
    }
  }
}

For Claude Desktop, the following configuration can instead be used, but make sure you have Node.js installed:

{
  "mcpServers": {
    "gradio": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://agents-mcp-hackathon-f1-mcp-server.hf.space/gradio_api/mcp/sse",
        "--transport",
        "sse-only"
      ]
    }
  }
}

Available Tools

17 tools
f1_mcp_server_apply_filtersC

Apply one or more filter strings to an API endpoint URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
param_1No
api_stringNoThe base API endpoint URL.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Apply' implies a transformation, but it doesn't say whether the URL is mutated in place, what is returned (a new URL string? a request object?), how multiple filters combine, or any error behavior. That is a significant gap for a transformation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with the operation front-loaded and no filler. It is arguably under-specified rather than padded, so conciseness itself is fine.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and cryptic parameter naming in the schema, the description should do much more. It leaves the return value, filter-string format, and relationship to the sibling filter/request tools unspecified, so an agent cannot call this confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: api_string is documented in the schema, but param_1 is an undescribed string. The description partially compensates by indicating the parameter holds 'one or more filter strings', but gives no syntax, delimiter, or format for how multiple filters are expressed or combined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Apply filter strings to an API endpoint URL'), which is concrete enough for an agent to understand the operation. However it offers no differentiation from siblings like get_filter_string or send_request, which plausibly feed into or consume this operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of the related siblings (get_filter_string, get_filter_info, send_request) that an agent would need to sequence before or after this call. The condition selecting this tool is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_constructor_championship_standingsB

Get the championship standing for a specific constructor in a given year.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoThe season year
constructor_nameNoName of the constructor team (e.g., 'Mercedes')

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether this is a live API call, what authentication is required, rate limits, or what the returned standing structure looks like, which are meaningful gaps for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero wasted words that names the resource, the subject, and the scoping dimension. Nothing is padded or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description should ideally explain the return shape and behavior, but it stops at the operation summary. It is adequate for a simple read query but leaves the return format and error/empty cases unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (year, constructor_name) are already documented in the schema. The description only restates the same semantics without adding format, range, or default behavior detail, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource ('get the championship standing') scoped to a constructor and year, so an agent immediately understands the operation. It doesn't explicitly differentiate itself from the sibling f1_mcp_server_driver_championship_standings, leaving the constructor-vs-driver distinction to inference from the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the phrasing ('for a specific constructor in a given year') but there is no explicit when-to-use, when-not-to-use, or named alternative. An agent must infer that this is the constructor equivalent of the driver standings tool rather than being told.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_driver_championship_standingsC

Get the championship standing for a specific driver in a given year.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoThe season year
driver_nameNoFull name of the driver (e.g., 'Lewis Hamilton')

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, yet it says nothing about the return shape (single position vs. full standings), what happens when a driver is absent from a season, or the default-year behavior. It only restates the scope already implied by the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence with the subject (championship standing) front-loaded and zero filler. It is efficient, though its brevity is partly a symptom of under-specification rather than disciplined editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations exist to carry behavioral detail, so the description must compensate and does not. An agent cannot tell what the response contains (position, points, list of standings) or how a missing driver is handled before calling it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are documented in the schema (year with default 2026, driver_name with an example). The description adds no format or constraint detail beyond what the schema already supplies, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (championship standing) scoped to a specific driver and year, which is enough to distinguish it from the sibling constructor_championship_standings. It does not explicitly name that sibling, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no preconditions, and never mentions alternatives such as f1_mcp_server_constructor_championship_standings or f1_mcp_server_get_driver_info. Usage is only weakly implied by the driver/year scoping.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_get_api_endpointC

Retrieve the API endpoint URL and filter metadata for a given OpenF1 endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoThe name of the OpenF1 API endpoint (e.g., 'sessions', 'laps').

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, yet it says nothing about failure behavior for an unknown endpoint name, whether the lookup is local metadata or a network call, caching, or authentication. It does not contradict anything, but it discloses almost nothing beyond the bare operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence that is front-loaded with the verb and states the two returned artifacts. It is efficient with no filler, though its terseness is arguably under-specification rather than true concision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, no-output-schema lookup tool this is minimally adequate, but it omits the sibling differentiation and return/error semantics that an agent needs given the crowded namespace of similarly named metadata tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single 'endpoint' parameter is already documented with examples ('sessions', 'laps'). The description adds no further constraint, such as whether names are case-sensitive or whether the parameter is optional (required count is 0, which the description never explains).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Retrieve) and resource (API endpoint URL plus filter metadata) tied to OpenF1 endpoints, so the core operation is unambiguous. It does not, however, distinguish itself from the closely named siblings get_api_endpoints, get_endpoint_info, and get_filter_info, leaving overlap to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no mention of alternatives, and no conditions under which this tool should be chosen over get_api_endpoints, get_endpoint_info, or get_filter_info. The agent must guess from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_get_api_endpointsA

Retrieve a list of all available OpenF1 API endpoints. Returns: dict: A dictionary containing a single key 'endpoints' with a list of available endpoint names as strings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the return shape (a dict with a single 'endpoints' key), but says nothing about auth, rate limits, or whether the list is static or dynamic. Adequate for a simple no-arg read, but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, fully front-loaded, and every clause earns its place โ€” the purpose first, then the precise return structure. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by spelling out the return value, and the schema is trivially empty. Complete for a simple discovery endpoint, though it could note how the result is used downstream.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. There are no parameter semantics to document beyond what is implicit in a no-arg call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb (retrieve) and resource (list of all available OpenF1 API endpoints). The word 'all' distinguishes it from the singular sibling get_api_endpoint, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance. Discovery-before-calling usage is only implied by the description; the agent gets no direction on choosing this over get_api_endpoint or get_endpoint_info.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_get_constructor_infoC

Retrieve detailed information about a specific constructor.

ParametersJSON Schema
NameRequiredDescriptionDefault
constructor_nameNoFull name of the constructor (e.g., 'Red Bull Racing')McLaren

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Retrieve' weakly implies a read-only operation, but the description says nothing about what 'detailed information' contains, whether the data is live or cached, or any auth/rate-limit constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the verb and object front-loaded and no filler. It is efficient, though arguably under-specified rather than optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter enumerated lookup this is nearly sufficient, but with no output schema the vague phrase 'detailed information' leaves the agent unsure what fields to expect. Minimal but acceptable coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is fully enumerated with a default and an example, so the schema does all the work. The description adds no extra meaning about the constructor_name argument, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Retrieve detailed information about a specific constructor'), which is clear enough to distinguish from get_driver_info and the standings/update siblings by resource type. However, it never explicitly contrasts itself with those siblings, so an agent must infer the boundary rather than read it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as get_constructor_championship_standings or update_constructors. The agent must guess the boundary from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_get_driver_infoC

Retrieve detailed information about a specific driver.

ParametersJSON Schema
NameRequiredDescriptionDefault
driver_nameNoFull name of the driver (e.g., 'Max Verstappen')Max Verstappen

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden. 'Retrieve' implies a read with no side effects, but the description says nothing about permissions, whether it hits a live API or a cache, or what 'detailed information' actually returns. For a tool with zero annotation coverage this is a real gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence, front-loaded with the verb, with no filler. It is efficient, though its brevity is partly the source of the missing detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The parameter is fully documented, so the agent can invoke the tool. But no output schema exists, and the description does not say what fields 'detailed information' comprises, leaving the return payload entirely opaque.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is a fully enumerated driver-name field with its own description and default, so the schema does all the work. The description adds no syntax, format, or matching guidance beyond what the schema already provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Retrieve detailed information about a specific driver.' That is clearer than a bare name restatement and lets an agent distinguish it from the mutation siblings like f1_mcp_server_update_drivers. However, it never names the parallel read sibling f1_mcp_server_get_constructor_info, so sibling differentiation is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no alternatives named. The only clue that it is a lookup rather than the standings tools is the word 'driver'. The agent must infer the routing on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_get_endpoint_infoC

Retrieve detailed information about a specific OpenF1 API endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoThe name of the endpoint to get information about.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. 'Retrieve' implies a read-only operation, but nothing is said about authentication, rate limits, error behavior, or what 'detailed information' actually contains (schema fields, examples, param listings).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, which is appropriate for a one-parameter tool. It is efficient, though not maximally informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with a fully described parameter, the description is adequate but leaves the relationship to closely related siblings (get_api_endpoint, get_api_endpoints) unexplained. Nothing an agent needs to call it is strictly missing, but the disambiguation gap keeps it at minimum viable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single 'endpoint' parameter is already documented in the schema, and a baseline of 3 applies. The description adds no extra meaning such as accepted endpoint-name formats or examples beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (retrieve) and resource (detailed information about an OpenF1 API endpoint), so the core purpose is clear. However, it does not distinguish itself from the similarly named siblings get_api_endpoint and get_api_endpoints, leaving ambiguity about which tool returns what.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over get_api_endpoint, get_api_endpoints, or get_filter_info, nor any prerequisite or exclusion. The agent must infer the selection criteria entirely on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_get_event_infoC

Retrieve information about a specific Formula 1 event.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoThe season year
roundNoThe race round number or name
formatNoOutput format ('human' for readable text, 'LLM' for structured data)human

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only implies a read operation via 'Retrieve' but says nothing about permissions, rate limits, return format behavior (despite a format parameter), or what happens when optional parameters are omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. While concise, it could be slightly more informative without becoming verbose, but it meets the conciseness goal effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should explain what information is returned and how the format parameter affects output. It fails to do so, leaving the agent without crucial context for calling the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (year, round, format) are fully documented in the schema. The description adds no parameter-level meaning beyond what the schema already provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Retrieve) and resource (Formula 1 event information), making the core purpose clear. However, it does not differentiate this tool from siblings like get_session_results or get_season_calendar, which also retrieve event-related data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description lacks any mention of prerequisites, exclusions, or the sibling tools that might serve similar needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_get_filter_infoC

Retrieve detailed information about a specific OpenF1 API filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
filter_nameNoThe name of the filter to get information about.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, yet it only says 'retrieve detailed information' without disclosing what that information contains, whether it is read-only, or how a missing/invalid filter_name behaves. It adds almost nothing beyond implying a safe read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single tight sentence with the resource and action front-loaded and no wasted words. It is tersely efficient, though arguably under-specified rather than concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with 100% schema coverage but no annotations and no output schema, the description is minimally sufficient to identify the operation. It omits any indication of what 'detailed information' is returned, which the missing output schema would otherwise need compensating for.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single filter_name parameter is already fully documented in the schema. The description's phrase 'a specific OpenF1 API filter' restates that without adding syntax, valid values, or format details, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Retrieve detailed information') and resource ('a specific OpenF1 API filter'), so the agent knows this is a metadata lookup for a filter. However, it does not distinguish itself from sibling tools like get_filter_string or apply_filters, leaving the exact scope ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the many siblings such as get_filter_string, apply_filters, or get_endpoint_info. No prerequisites, no exclusions, no routing logic are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_get_filter_stringC

Create a filter string for OpenF1 API requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
operatorNoThe comparison operator. Defaults to "=".=
filter_nameNoThe name of the filter to apply.
filter_valueNoThe value to filter by.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it says nothing beyond the one-line purpose. It does not disclose the shape of the returned string, whether multiple filters can be combined, or how the result should be consumed โ€” all important for a utility whose output feeds other calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no waste, which is appropriate for a simple helper. It is arguably under-specified rather than over-long, but the size itself is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description should explain what the generated filter string looks like and how it relates to send_request or apply_filters. Neither the output format nor the chaining workflow is covered, leaving a real gap for a tool whose value is its output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the operator enum and both string parameters fully documented in the schema, so the baseline is 3. The description adds no syntax or format detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Create') and resource ('filter string') scoped to OpenF1 API requests, which is clearer than a tautology. It does not, however, distinguish itself from closely related siblings such as get_filter_info, apply_filters, or send_request, leaving the agent to infer where it fits in the pipeline.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus get_filter_info, apply_filters, or send_request, nor any stated prerequisites or ordering. The agent must guess that this is a helper for building a query fragment before calling send_request.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_get_season_calendarA

Get the complete race calendar for a specific F1 season.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoThe season year to get the calendar for

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full disclosure burden. The word 'complete' usefully signals the whole season is returned without filtering or truncation, but nothing is said about read-only nature, ordering, response shape, or the default year behavior. Adequate but thin for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler; the resource and the scoping qualifier both appear before the period. Nothing here could be trimmed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple one-parameter read tool with no output schema and no annotations, so the description is the only source of behavioral context. It identifies the resource but says nothing about what a calendar entry contains (rounds, dates, circuits), leaving the agent to guess at the return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter and schema description coverage is 100%, so the schema already documents 'year' fully including its 2026 default. The phrase 'specific F1 season' in the description maps onto that parameter but adds no format or constraint detail beyond it, matching the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Get') and resource ('complete race calendar') scoped to a 'specific F1 season', so an agent immediately knows what is produced. It does not, however, distinguish itself from nearby siblings such as get_event_info or get_session_results, which also return race-related data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the reader can infer this is the season-level calendar lookup rather than a per-event or per-session tool. There is no explicit when-to-use statement, no prerequisites, and no named alternative for narrowing to a single race weekend.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_get_session_resultsC

Retrieve and format the results of a specific session.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoThe season year
roundNoThe race round number or name
session_typeNoType of session (e.g., 'Q', 'R', 'Sprint')race

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. "Retrieve" implies a read-only operation, but there is no disclosure of data freshness, error behavior for invalid sessions, or what "format" means, and no output schema compensates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words, but it is thin to the point of under-specification for a tool with three parameters and no annotations. Brevity here reflects omission rather than disciplined editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description should explain what "results" contain and any caveats. It instead says only that results are retrieved and formatted, leaving the agent unable to predict the return payload or failure modes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents year, round, and session_type with defaults and an enum. The description adds nothing beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ("Retrieve and format") and resource ("results of a specific session"), which is clear on its own. However, it does not distinguish this tool from siblings like f1_mcp_server_get_event_info or f1_mcp_server_get_season_calendar, and "results" is left ambiguous (race classification? lap times? qualifying order?).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the many other session/event retrieval siblings, nor any mention of prerequisites such as updating data first or valid year/round combinations. The agent must infer usage entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_send_requestB

Send an HTTP GET request to the specified API endpoint and return the JSON response.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_stringNoThe complete API URL to send the request to.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the HTTP method (GET) and that the response is JSON, which implies a safe read, but omits authentication requirements, rate limits, error semantics, and whether the endpoint must be one returned by a sibling lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words that covers action, target, and output. Appropriately sized for a one-parameter primitive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter primitive with no output schema, the definition states enough to invoke the tool, but leaves error handling, auth, and how api_string values are obtained entirely unaddressed. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single, fully described parameter (api_string). The description's phrase 'the specified API endpoint' restates the schema without adding format examples, URL constraints, or a pointer to where valid endpoints come from. Baseline 3 is correct when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (send an HTTP GET request), resource (the specified API endpoint), and return type (JSON response). However, it does not differentiate itself from the many sibling lookup tools (get_api_endpoint, get_endpoint_info, get_session_results, etc.) that a raw request tool presumably underlies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of alternatives, despite 17 siblings. An agent cannot tell from the description whether to use this raw GET or the purpose-built tools like f1_mcp_server_get_session_results.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_track_visualizationC

Generate a visualization of the track with specified data.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoThe season year
roundNoThe race round number or name
visualization_typeNoType of visualization ('speed', 'corners', or 'gear')speed

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only says a visualization is generated, without disclosing safety profile, return format, data requirements, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted clauses. 'With specified data' is slightly vague filler, but overall it is concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three optional parameters, no output schema, and no annotations, the description is too thin. It does not explain the return value, limitations, or how the visualization types differ.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents year, round, and visualization_type. The description adds no parameter meaning beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: generate a visualization of the track. It does not differentiate from sibling tools or specify what data is used beyond the schema, so it is clear but lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use, when-not-to-use, or alternative guidance. The tool's purpose is implied by its name, but the description itself provides no usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_update_constructorsD
ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

f1_mcp_server_update_driversD
ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 17 tool updatesv0.1.0
    • First observedf1_mcp_server_apply_filters
    • First observedf1_mcp_server_constructor_championship_standings
    • First observedf1_mcp_server_driver_championship_standings
    • First observedf1_mcp_server_get_api_endpoint
    • First observedf1_mcp_server_get_api_endpoints
    • First observedf1_mcp_server_get_constructor_info
    • First observedf1_mcp_server_get_driver_info
    • First observedf1_mcp_server_get_endpoint_info
    • First observedf1_mcp_server_get_event_info
    • First observedf1_mcp_server_get_filter_info
    • First observedf1_mcp_server_get_filter_string
    • First observedf1_mcp_server_get_season_calendar
    • First observedf1_mcp_server_get_session_results
    • First observedf1_mcp_server_send_request
    • First observedf1_mcp_server_track_visualization
    • First observedf1_mcp_server_update_constructors
    • First observedf1_mcp_server_update_drivers

TDQS

C2.5/5.0

Scored across 17 tools

Disambiguation3/5

Core F1 retrieval tools (standings, event info, session results, driver/constructor info) are clearly distinct. However, the OpenF1 API plumbing tools (get_api_endpoints, get_api_endpoint, get_endpoint_info, get_filter_info, get_filter_string, apply_filters, send_request) overlap heavily in purpose, and update_drivers/update_constructors have no descriptions, making their boundaries unclear.

Naming Consistency4/5

All tools share a consistent f1_mcp_server_ prefix and mostly use verb_noun or verb_resource naming (get_*, update_*). Minor deviations exist: championship_standings and track_visualization lack explicit verbs, and get_api_endpoint vs get_api_endpoints differ only by plural.

Tool Count3/5

17 tools is on the heavy side for an F1 data server. While core domain tools are justified, seven generic OpenF1 API access/filter tools appear to expose implementation plumbing rather than distinct user-facing capabilities, inflating the count.

Completeness4/5

The surface covers key F1 entities (drivers, constructors, standings, events, calendars, session results) and generic OpenF1 request tools provide fallback access to unmodeled data like laps, telemetry, or pit stops. Explicit list/search tools and clear update semantics are missing, but agents can work around most gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides comprehensive Formula 1 data access including race schedules, session results, lap times, telemetry data, driver/constructor standings, and circuit information. Enables users to retrieve and analyze F1 racing data through natural language queries using the FastF1 Python package.
    5
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Provides access to Formula 1 data including driver and constructor championship standings with support for current and historical seasons. Enables users to query F1 championship information through natural language with plans for expanded race data and telemetry.
    22
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables access to Formula 1 data from the openF1.org API, including driver information, race results, lap times, telemetry, pit stops, weather conditions, and live position data across multiple seasons.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to query real-time and historical Formula 1 data through the OpenF1 API, providing tools for driver info, lap times, telemetry, race events, and more.
    MIT