f1-latest-cn-mcp
Enables AI assistants to query the latest F1 news from the official F1 website in real-time, with pagination support and automatic Chinese translation.
README
f1-latest-cn-mcp
一个基于 Model Context Protocol (MCP) 的 F1 赛事资讯服务,让 AI 助手(如 Cursor、Claude Desktop)能够实时查询 F1 官网最新新闻。
什么是 MCP?
MCP(Model Context Protocol)是一种开放协议,定义了 AI 模型与外部工具 之间的通信标准。
用户提问 → AI 模型 → 调用 MCP Tool → MCP 服务执行 → 返回结果 → AI 组织回复 → 用户看到答案
通俗地说:MCP 就像是给 AI 装上了"手",让它能够操作外部服务、获取实时数据,而不仅仅依赖训练数据。
核心概念
| 概念 | 说明 |
|---|---|
| MCP Server | 工具服务端,注册并暴露 Tool 给 AI 使用 |
| MCP Client | AI 客户端(如 Cursor),负责发现和调用 Tool |
| Tool | 一个具体的功能单元(如"查询 F1 新闻"),包含名称、描述、参数定义、执行逻辑 |
| Transport | 通信传输层(本项目使用 stdio:stdin 接收请求,stdout 返回响应) |
Tool 注册三要素
server.registerTool(
"tool_name", // 1. 工具名称(AI 通过此名称调用)
{
title: "...", // 2a. 展示名称
description: "...", // 2b. 功能描述(★ AI 据此决定何时调用,写得越清楚越好)
inputSchema: {}, // 2c. 参数定义(Zod schema,AI 据此传参)
},
handler // 3. 执行函数(接收参数,返回结果)
);
功能特性
- F1 新闻查询 — 实时爬取 F1 官网最新文章,支持分页
- 自动注册 Tool — 在
src/tools/下新增文件即可接入,零耦合扩展 - 统一错误处理 — 所有 Tool 自动 try-catch,返回标准错误码
- 统一日志输出 — 时间戳 + 等级 + 元数据,输出到 stderr(不干扰 MCP 协议)
- 预置工具层 — 封装
axios(HTTP)/dayjs(时间)/cheerio(HTML 解析)
快速开始
安装依赖
npm install
启动服务
# 开发模式(文件变更自动重启)
npm run dev
# 生产模式
npm run start
在 Cursor 中配置
在 Cursor Settings → MCP 中添加服务:
{
"mcpServers": {
"f1-latest-cn": {
"command": "node",
"args": ["src/server.js"],
"cwd": "/your/path/to/f1-latest-cn-mcp"
}
}
}
配置后重启 Cursor,即可在对话中使用:
- "查询最新 F1 新闻"
- "查看下一页"
目录结构
src/
├── server.js # 入口:创建 MCP 服务、连接传输层
├── config/
│ ├── constants.js # 全局常量(服务名称、超时、日志级别)
│ └── error-codes.js # 统一错误码定义与映射
├── tools/
│ ├── index.js # Tool 自动注册(扫描目录、动态 import)
│ ├── health.js # health_check —— 健康检查
│ ├── time.js # format_time —— 时间格式化
│ └── f1-latest.js # f1_latest_news —— F1 新闻查询(支持分页)
└── utils/
├── http.js # axios 封装(统一超时配置)
├── logger.js # 日志工具(输出到 stderr)
├── response.js # MCP 标准响应构造器
└── safe-tool.js # Tool 安全执行包装器(统一 try-catch + 日志)
内置 Tool
1. health_check
健康检查,确认 MCP 服务可用。
- 参数:无
- 返回:服务状态 + 时间戳
2. format_time
格式化时间,支持自定义输入和格式。
- 参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
input |
string | 否 | 输入时间,默认当前时间 |
format |
string | 否 | 输出格式,默认 YYYY-MM-DD HH:mm:ss |
- 示例输入:
{ "input": "2026-02-28 10:00:00", "format": "YYYY/MM/DD HH:mm" }
3. f1_latest_news
获取 F1 官网最新新闻列表,支持分页。
- 参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
page |
number | 否 | 页码,默认 1 |
- 返回:Markdown 格式的文章列表(标题、发布时间、链接)
- AI 行为:自动将英文标题翻译为中文;用户说"下一页"时自动递增 page
扩展指南:如何新增一个 Tool
第 1 步:创建文件
在 src/tools/ 下新建文件,如 weather.js。
第 2 步:编写 Tool
import * as z from "zod/v4";
import { createSafeToolHandler } from "../utils/safe-tool.js";
import { createSuccessResult } from "../utils/response.js";
export const registerWeatherTool = (server) => {
server.registerTool(
"get_weather", // 工具名称
{
title: "Get Weather",
description: "查询指定城市的天气", // AI 据此决定何时调用
inputSchema: {
city: z.string().describe("城市名称"), // AI 据此传参
},
},
createSafeToolHandler("get_weather", async ({ city }) => {
// 你的业务逻辑...
const weather = await fetchWeather(city);
return createSuccessResult({ city, weather });
}),
);
};
第 3 步:重启服务
无需修改其他文件,自动注册机制会自动发现并注册新 Tool。
Tool 开发要点
| 要点 | 说明 |
|---|---|
| description 写清楚 | AI 根据 description 决定何时调用你的 Tool,含糊则 AI 不知道什么时候该用 |
| 参数 .describe() 写清楚 | AI 根据参数描述来填充参数值 |
| 用 createSafeToolHandler 包裹 | 自动 try-catch + 日志,无需手动处理异常 |
| 返回用 createSuccessResult | 确保返回值符合 MCP 协议格式 |
| 可在 description 中嵌入 AI 指令 | 如"请翻译为中文"、"用户说 XX 时做 YY",间接控制 AI 行为 |
技术栈
| 依赖 | 用途 |
|---|---|
@modelcontextprotocol/sdk |
MCP 协议 SDK(服务端 + 传输层) |
axios |
HTTP 请求 |
cheerio |
服务端 HTML 解析(类 jQuery API) |
dayjs |
日期时间处理 |
zod |
参数 Schema 定义与校验 |
许可证
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.