
FirstCycling MCP Server
提供来自 FirstCycling 的专业自行车数据,允许用户通过自然语言查询检索关于自行车手、比赛结果、历史自行车数据和车队信息的全面信息。
Tools
get_rider_year_results
Retrieve detailed results for a professional cyclist for a specific year. This tool provides comprehensive information about a rider's performance in all races during a given calendar year. It includes positions achieved, race categories, dates, and additional details. Note: If you don't know the rider's ID, use the search_rider tool first to find it by name. Example usage: - Get 2023 results for Tadej Pogačar (ID: 16973) - Get 2022 results for Jonas Vingegaard (ID: 16974) Returns a formatted string with: - Complete results for the specified year - Position and time for each race - Race category and details - Chronological organization by date
get_rider_victories
Get a comprehensive list of a rider's UCI victories. This tool retrieves detailed information about all UCI-registered race victories achieved by the cyclist throughout their career. Victories can be filtered to show only WorldTour wins if desired. Note: If you don't know the rider's ID, use the search_rider tool first to find it by name. Example usage: - Get all UCI victories for Tadej Pogačar (ID: 16973) - Get WorldTour victories for Jonas Vingegaard (ID: 16974) Returns a formatted string with: - Complete list of victories - Race details including category - Date and year of each victory - Option to filter by WorldTour races only
get_rider_teams
Get a detailed history of a professional cyclist's team affiliations throughout their career. This tool provides a chronological list of all teams the rider has been part of, including years and team details. Note: If you don't know the rider's ID, use the search_rider tool first to find it by name. Example usage: - Get team history for Peter Sagan (ID: 12345) - Get career team changes for Chris Froome (ID: 67890) Returns a formatted string with: - Complete team history - Years with each team - Team names and details - Chronological organization
search_rider
Search for professional cyclists by name. This tool helps find riders by their name, returning a list of matching riders with their IDs and basic information. This is useful when you need a rider's ID for other operations but only know their name. Example usage: - Search for "Tadej Pogacar" to find Tadej Pogačar's ID - Search for "Van Aert" to find Wout van Aert's ID Returns a formatted string with: - List of matching riders - Each rider's ID, name, nationality, and current team - Number of matches found
get_rider_info
Get comprehensive information about a professional cyclist including their current team, nationality, date of birth, and recent race results. This tool provides a detailed overview of a rider's current status and recent performance in professional cycling races. The information includes their current team affiliation, nationality, age, and their most recent race results with positions and times. Note: If you don't know the rider's ID, use the search_rider tool first to find it by name. Example usage: - Get basic info for Tadej Pogačar (ID: 16973) - Get basic info for Jonas Vingegaard (ID: 16974) Returns a formatted string with: - Full name and current team - Nationality and date of birth - UCI ID and social media handles - Last 5 race results with positions and times - Total number of UCI victories
get_rider_best_results
Retrieve the best career results of a professional cyclist, including their top finishes in various races. This tool provides a comprehensive overview of a rider's most significant achievements throughout their career, including their highest positions in major races, stage wins, and overall classifications. Results are sorted by importance and include detailed information about each race. Note: If you don't know the rider's ID, use the search_rider tool first to find it by name. Example usage: - Get top 10 best results for Tadej Pogačar (ID: 16973) - Get top 5 best results for Jonas Vingegaard (ID: 16974) Returns a formatted string with: - Rider's name and career highlights - Top results sorted by importance - Race details including category and country - Date and position for each result
get_rider_grand_tour_results
Get comprehensive results for a rider in Grand Tours (Tour de France, Giro d'Italia, and Vuelta a España). This tool provides detailed information about a rider's performance in cycling's most prestigious three-week races, including their overall classification positions, stage wins, and special classification results. The data is organized chronologically and includes all relevant race details. Note: If you don't know the rider's ID, use the search_rider tool first to find it by name. Example usage: - Get Grand Tour results for Tadej Pogačar (ID: 16973) - Get Grand Tour results for Jonas Vingegaard (ID: 16974) Returns a formatted string with: - Results for each Grand Tour (Tour de France, Giro, Vuelta) - Overall classification positions - Stage wins and special classification results - Time gaps and race details
get_rider_monument_results
Retrieve detailed results for a rider in cycling's five Monument races (Milan-San Remo, Tour of Flanders, Paris-Roubaix, Liège-Bastogne-Liège, and Il Lombardia). These are the most prestigious one-day races in professional cycling. The tool provides comprehensive information about a rider's performance in these historic races, including their positions, times, and any special achievements. Note: If you don't know the rider's ID, use the search_rider tool first to find it by name. Example usage: - Get Monument results for Tadej Pogačar (ID: 16973) - Get Monument results for Mathieu van der Poel (ID: 16975) Returns a formatted string with: - Results for each Monument race - Position and time for each participation - Race details and special achievements - Chronological organization by year
get_rider_team_and_ranking
Get information about a professional cyclist's team affiliations and UCI rankings throughout their career. This tool retrieves the rider's team history and their UCI ranking points over time. It provides a comprehensive overview of their professional career progression through different teams and their performance in the UCI rankings. Note: If you don't know the rider's ID, use the search_rider tool first to find it by name. Example usage: - Get team and ranking history for Tadej Pogačar (ID: 16973) - Get team and ranking history for Jonas Vingegaard (ID: 16974) Returns a formatted string with: - Complete team history with years - UCI ranking positions and points - Career progression timeline - Current team and ranking status
get_rider_race_history
Get the complete race history of a professional cyclist, optionally filtered by year. This tool retrieves a comprehensive list of all races the rider has participated in, including their positions, times, and race categories. It provides a detailed overview of their racing career. Note: If you don't know the rider's ID, use the search_rider tool first to find it by name. Example usage: - Get complete race history for Tadej Pogačar (ID: 16973) - Get 2023 race history for Jonas Vingegaard (ID: 16974) Returns a formatted string with: - All races organized by year - Position and time for each race - Race category and details - Chronological organization
search_race
Search for cycling races by name. This tool helps find races by their name, returning a list of matching races with their IDs and countries. This is useful when you know a race's name but need its ID for other operations. Example usage: - Search for "tour" to find Tour de France and other tours - Search for "giro" to find Giro d'Italia Returns a formatted string with: - List of matching races - Each race's ID, name, and country - Number of matches found
get_rider_one_day_races
Get a rider's results in one-day races, optionally filtered by year. This tool retrieves detailed information about a rider's performance in one-day races (classics and one-day events). It provides comprehensive data about positions, times, and race categories. Results can be filtered by a specific year. Note: If you don't know the rider's ID, use the search_rider tool first to find it by name. Example usage: - Get one-day race results for Mathieu van der Poel (ID: 16672) - Get 2023 one-day race results for Wout van Aert (ID: 16948) Returns a formatted string with: - Results in one-day races organized by year - Position and time for each race - Race category and details - Chronological organization
get_rider_stage_races
Get a rider's results in stage races, optionally filtered by year. This tool retrieves detailed information about a rider's performance in stage races (multi-day races like Tour de France, Giro d'Italia, etc.). It provides comprehensive data about positions, times, and race categories. Results can be filtered by a specific year. Note: If you don't know the rider's ID, use the search_rider tool first to find it by name. Example usage: - Get stage race results for Tadej Pogačar (ID: 16973) - Get 2023 stage race results for Jonas Vingegaard (ID: 16974) Returns a formatted string with: - Results in stage races organized by year - Position and time for each race - Race category and details - Chronological organization
get_race_details
Get comprehensive details about a cycling race. This tool provides detailed information about a specific race, including its history, key statistics, route details, and other relevant information. The data can be filtered by specific classification. Note: If you don't know the race's ID, use the search_race tool first to find it by name. Example usage: - Get details for Tour de France (ID: 17) - Get details for Paris-Roubaix (ID: 30) Returns a formatted string with: - Race name, country, and category - Historical information and key statistics - Course details and characteristics - Optional classification details
get_race_edition_results
Get detailed results for a specific edition of a cycling race. This tool provides comprehensive results for a particular edition of a race, including rankings, time gaps, and other relevant statistics. Results can be filtered by classification or stage. Note: If you don't know the race's ID, use the search_race tool first to find it by name. Example usage: - Get 2023 Tour de France general classification results (Race ID: 17, Year: 2023) - Get 2022 Paris-Roubaix results (Race ID: 30, Year: 2022) - Get results for stage 5 of 2023 Tour de France (Race ID: 17, Year: 2023, Stage: 5) Returns a formatted string with: - Race name, year, and category - Complete result list with rankings and time gaps - Rider names and teams - Classification or stage specific information
get_start_list
Get the start list for a specific edition of a cycling race. The start list includes rider numbers, names, and teams. Note: If you don't know the race's ID, use the search_race tool first to find it by name. If no year is specified, the current year will be used. Example usage: - Get start list for current year's Tour de France (Race ID: 17) - Get start list for 2023 Paris-Roubaix (Race ID: 30, Year: 2023) Returns a formatted string with: - Race name and year - List of participating teams - Riders for each team with their race numbers
get_race_victory_table
Get the all-time victory table for a cycling race. This tool provides a historical summary of the most successful riders in a specific race, showing the number of victories for each rider throughout the race's history. Note: If you don't know the race's ID, use the search_race tool first to find it by name. Example usage: - Get victory table for Tour de France (ID: 17) - Get victory table for Paris-Roubaix (ID: 30) Returns a formatted string with: - Race name - List of riders with the most victories - Number of victories for each rider - Years of victories where available
get_uci_rankings
Get UCI rankings for riders, teams, or nations. This tool provides access to the UCI ranking data for professional cyclists, teams, or nations. Results can be filtered by ranking type, year, and category. Example usage: - Get World UCI rider rankings for 2023 - Get Europe Tour UCI team rankings for 2022 - Get UCI nation rankings for 2023 in the World category Returns a formatted string with: - Ranking list with positions and points - Filtered by specified categories - Organized in a readable format - Option to filter by country
README
FirstCycling MCP 服务器
这是一个模型上下文协议 (MCP) 服务器,提供来自 FirstCycling 的专业自行车数据。它允许您检索关于专业自行车手、比赛结果、比赛详情和历史自行车数据的全面信息。
功能
此 MCP 服务器提供对专业自行车数据的丰富访问,并提供以下工具:
- 查找关于专业自行车手的信息
- 检索比赛结果和详情
- 探索历史比赛数据
- 分析车手表现和职业发展
- 访问关于自行车队和比赛的信息
实际用例
通过此 MCP 服务器,您可以使用 Claude 来:
车手分析
- 表现追踪:"Tadej Pogačar 多年来在环法自行车赛中的表现如何?"
- 职业发展:"展示 Wout van Aert 的车队历史和职业发展。"
- 专长分析:"Mathieu van der Poel 在 Monument 古典赛中的成绩如何?"
- 胜利分析:"列出 Jonas Vingegaard 的所有 WorldTour 胜利。"
- 历史比较:"比较 Primož Roglič 和 Jonas Vingegaard 的 Grand Tour 成绩。"
比赛研究
- 近期结果:"展示 2023 年巴黎-鲁贝的比赛结果。"
- 历史背景:"谁是环弗兰德斯赛最年轻和最年长的获胜者?"
- 车队分析:"获取 2023 年环法自行车赛的参赛名单,其中包含详细的车队信息。"
- 比赛统计:"展示列日-巴斯托涅-列日的胜利表。谁赢得的次数最多?"
- 赛段信息:"你能展示 2023 年环意大利自行车赛的赛段剖面图吗?"
体育新闻
- "为自行车杂志文章创建一个关于 Remco Evenepoel 的详细简介。"
- "根据 Tadej Pogačar 和 Jonas Vingegaard 等顶级竞争者的近期成绩,撰写即将到来的环法自行车赛的预览。"
- "根据 Tom Pidcock 的比赛结果和车队历史,分析他的职业生涯演变。"
自行车教育
- "使用关于 Monument 古典赛的历史和获胜者的数据,解释是什么让它们如此特别。"
- "创建一个关于 Grand Tours 及其在专业自行车运动中的重要性的教育总结。"
- "使用数据中的示例,描述专业自行车手的典型职业发展。"
要求
- Python 3.10 或更高版本
uv
包管理器(推荐)pyproject.toml
中列出的依赖项,包括:- mcp
- beautifulsoup4
- lxml
- pandas
- slumber
- 以及其他用于网络抓取和数据处理的软件包
设置
- 克隆此存储库
- 创建并激活虚拟环境:
uv venv source .venv/bin/activate # 在 macOS/Linux 上 # 或 .venv\Scripts\activate # 在 Windows 上
- 安装依赖项:
uv pip install -e .
FirstCycling API
此服务器使用 FirstCycling API,该 API 已直接集成到项目中。该 API 提供了通过网络抓取从 FirstCycling 网站获取数据的方法。
MCP 工具
服务器通过模型上下文协议公开以下工具:
车手信息
工具 | 描述 |
---|---|
get_rider_info |
获取关于车手的基本传记信息,包括国籍、出生日期、体重、身高和当前车队 |
get_rider_best_results |
检索车手职业生涯的最佳成绩,按重要性排序 |
get_rider_grand_tour_results |
获取车手在 Grand Tours(环法自行车赛、环意大利自行车赛、环西班牙自行车赛)中的成绩 |
get_rider_monument_results |
检索车手在自行车 Monument 古典赛中的成绩 |
get_rider_team_and_ranking |
获取车手的车队历史和 UCI 排名随时间的变化 |
get_rider_race_history |
检索车手的完整比赛参与历史,可以选择按年份过滤 |
get_rider_one_day_races |
获取车手在单日比赛中的成绩,可以选择按年份过滤 |
get_rider_stage_races |
获取车手在多日赛段比赛中的成绩,可以选择按年份过滤 |
get_rider_teams |
检索车手整个职业生涯的完整车队历史 |
get_rider_victories |
获取车手的职业生涯胜利列表,可以选择 WorldTour 或 UCI 比赛的过滤器 |
比赛信息
工具 | 描述 |
---|---|
get_race_results |
按比赛 ID 和年份检索特定比赛版本的比赛结果 |
get_race_overview |
获取关于比赛的一般信息,包括历史、记录和过去的获胜者 |
get_race_stage_profiles |
检索多日赛段比赛的赛段剖面图和详细信息 |
get_race_startlist |
获取特定比赛版本的参赛名单,其中包含详细或基本的车队信息 |
get_race_victory_table |
检索比赛的历届胜利表,显示获胜次数最多的车手 |
get_race_year_by_year |
获取比赛的逐年结果,可以选择分类过滤器 |
get_race_youngest_oldest_winners |
检索关于比赛最年轻和最年长的获胜者的信息 |
get_race_stage_victories |
获取关于多日赛段比赛中赛段胜利的信息 |
搜索工具
工具 | 描述 |
---|---|
search_rider |
按姓名搜索车手,返回他们的 ID 和基本信息 |
search_race |
按名称搜索比赛,返回他们的 ID 和基本信息 |
用法
开发模式
您可以通过运行以下命令使用 MCP Inspector 测试服务器:
uv run mcp dev firstcycling.py
这将启动服务器并在您的浏览器中打开 MCP Inspector,允许您测试可用的工具。
与 Claude for Desktop 集成
要将此服务器与 Claude for Desktop 集成:
-
编辑 Claude for Desktop 配置文件,位于:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
将服务器添加到您的配置中:
{ "mcpServers": { "firstcycling": { "command": "uv", "args": ["--directory", "/path/to/server/directory", "run", "firstcycling.py"] } } }
-
重新启动 Claude for Desktop
许可证
MIT
推荐服务器

Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。