FirstCycling MCP server

Provides a bridge to FirstCycling.com for retrieving professional cycling statistics, race results, rider profiles, and rankings with robust error handling and data parsing
Back to servers
Setup instructions
Provider
R Huijts
Release date
Mar 25, 2025
Language
Python
Stats
14 stars

This MCP server provides professional cycling data from FirstCycling, allowing you to retrieve comprehensive information about cyclists, race results, race details, and historical cycling data through Claude's interface. It enables detailed rider analysis, race research, sports journalism support, and cycling education use cases.

Installation Requirements

  • Python 3.10 or higher
  • uv package manager (recommended)
  • Various dependencies for web scraping and data processing

Installation Steps

  1. Clone the repository to your local machine

  2. Create and activate a virtual environment:

    uv venv
    source .venv/bin/activate  # On macOS/Linux
    # or
    .venv\Scripts\activate  # On Windows
    
  3. Install the required dependencies:

    uv pip install -e .
    

Using the Server

Running in Development Mode

To test the server with MCP Inspector, run:

uv run mcp dev firstcycling.py

This will start the server and open the MCP Inspector in your browser, allowing you to test all the available tools.

Integrating with Claude for Desktop

  1. Locate your Claude for Desktop configuration file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. Add the server to your configuration:

    {
      "mcpServers": {
        "firstcycling": {
          "command": "uv",
          "args": ["--directory", "/path/to/server/directory", "run", "firstcycling.py"]
        }
      }
    }
    
  3. Restart Claude for Desktop to apply the changes

Available Tools

Rider Information Tools

  • get_rider_info: Basic biographical information including nationality, birthdate, weight, height, and current team
  • get_rider_best_results: A rider's best career results, sorted by importance
  • get_rider_grand_tour_results: Results in Grand Tours (Tour de France, Giro d'Italia, Vuelta a España)
  • get_rider_monument_results: Results in cycling's Monument classics
  • get_rider_team_and_ranking: Team history and UCI ranking evolution over time
  • get_rider_race_history: Complete race participation history, optionally filtered by year
  • get_rider_one_day_races: Results in one-day races, optionally filtered by year
  • get_rider_stage_races: Results in multi-day stage races, optionally filtered by year
  • get_rider_teams: Complete team history throughout a rider's career
  • get_rider_victories: List of career victories, with optional filters for WorldTour or UCI races

Race Information Tools

  • get_race_results: Results for a specific race edition by race ID and year
  • get_race_overview: General information including history, records, and past winners
  • get_race_stage_profiles: Stage profiles and details for multi-stage races
  • get_race_startlist: Startlist for a specific race edition with team information
  • get_race_victory_table: All-time victory table showing riders with most wins
  • get_race_year_by_year: Year-by-year results with optional classification filter
  • get_race_youngest_oldest_winners: Information about the youngest and oldest winners
  • get_race_stage_victories: Information about stage victories in multi-stage races

Search Tools

  • search_rider: Search for riders by name, returning IDs and basic information
  • search_race: Search for races by name, returning IDs and basic information

Example Queries

Rider Analysis

  • "How has Tadej Pogačar performed in the Tour de France over the years?"
  • "Show me the team history and career progression of Wout van Aert."
  • "What are Mathieu van der Poel's results in Monument classics?"
  • "List all WorldTour victories for Jonas Vingegaard."

Race Research

  • "Show me the results of the 2023 Paris-Roubaix."
  • "Who are the youngest and oldest winners of the Tour of Flanders?"
  • "Get the startlist for the 2023 Tour de France with detailed team information."
  • "Show me the victory table for Liège-Bastogne-Liège."

How to install this MCP server

For Claude Code

To add this MCP server to Claude Code, run this command in your terminal:

claude mcp add-json "firstcycling" '{"command":"uv","args":["run","firstcycling.py"]}'

See the official Claude Code MCP documentation for more details.

For Cursor

There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json file so that it is available in all of your projects.

If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json file.

Adding an MCP server to Cursor globally

To add a global MCP server go to Cursor Settings > Tools & Integrations and click "New MCP Server".

When you click that button the ~/.cursor/mcp.json file will be opened and you can add your server like this:

{
    "mcpServers": {
        "firstcycling": {
            "command": "uv",
            "args": [
                "run",
                "firstcycling.py"
            ]
        }
    }
}

Adding an MCP server to a project

To add an MCP server to a project you can create a new .cursor/mcp.json file or add it to the existing one. This will look exactly the same as the global MCP server example above.

How to use the MCP server

Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.

The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.

You can also explicitly ask the agent to use the tool by mentioning the tool name and describing what the function does.

For Claude Desktop

To add this MCP server to Claude Desktop:

1. Find your configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

2. Add this to your configuration file:

{
    "mcpServers": {
        "firstcycling": {
            "command": "uv",
            "args": [
                "run",
                "firstcycling.py"
            ]
        }
    }
}

3. Restart Claude Desktop for the changes to take effect

Want to 10x your AI skills?

Get a free account and learn to code + market your apps using AI (with or without vibes!).

Nah, maybe later