项目简介

Esports Calendar是一个实用的工具,旨在帮助电竞爱好者将他们关注的电竞赛事自动同步到常用的日历应用(如Google Calendar, Apple Calendar, Outlook等)。它通过抓取Liquipedia等来源的赛事数据,并将其转换为iCS/iCAL格式提供订阅。除了传统的日历同步功能,该项目还实现了一个Model Context Protocol (MCP) 服务器,允许AI聊天机器人等LLM客户端以标准化的方式访问实时电竞赛事信息,实现智能化的赛事查询和交互。

主要功能点

  • 广泛支持的电竞游戏: 支持50多种流行的电竞游戏,包括英雄联盟、CS2、Dota 2、守望先锋等。
  • 通用日历兼容性: 生成的iCS/iCAL订阅链接兼容所有主流日历应用,方便用户管理。
  • 高度定制化的赛事筛选: 用户可以根据比赛名称、战队名称等条件进行高级筛选,支持正则表达式匹配。
  • 实时赛事更新: 日历订阅会自动更新,确保用户总能获取到最新的赛事安排。
  • 预设配置: 提供常用赛事(如RLCS、Worlds、Majors)的预设过滤器,简化订阅流程。
  • AI聊天机器人集成 (MCP): 作为MCP服务器,它为AI聊天机器人提供了一个结构化的接口,允许LLM直接调用工具获取电竞赛事数据,并访问相关资源。
  • 强大的工具调用能力: 提供 'get_esports_events_advanced_request' 工具,LLM客户端可以利用此工具根据游戏ID和详细筛选选项查询赛事。
  • 可访问的资源: 提供 'esports_events_by_game' 资源,允许LLM客户端按游戏ID获取赛事信息。

安装步骤

在开始之前,请确保您的系统已安装Node.js (v18+) 和 pnpm。

  1. 克隆项目仓库: 打开您的终端或命令行工具,运行以下命令克隆项目:

    git clone https://github.com/snwfdhmp/esports-ics.git
  2. 进入项目目录:

    cd esports-ics
  3. 安装项目依赖: 使用pnpm安装所有必要的依赖项:

    pnpm install
  4. 启动MCP服务器: 项目可以通过以下命令启动MCP服务器:

    pnpm run start

    服务器将在默认的MCP端口(通常是7488,或通过'MCP_PORT'环境变量配置)上监听请求。成功启动后,您会在控制台看到类似 "MCP API started on 0.0.0.0:7488" 的输出。

服务器配置

MCP客户端(如AI聊天机器人)需要配置才能连接到此MCP服务器。以下是一个JSON格式的配置示例,包含连接所需的核心信息:

{
  "server_name": "esports-calendar-server",
  "command": "tsx",
  "args": ["src/main.ts"],
  "mcp_url": "https://esports-calendar-mcp.snwfdhmp.com/"
}
  • 'server_name': 服务器的唯一标识符,此处为 "esports-calendar-server"。MCP客户端会用这个名称来识别和交互。
  • 'command': 启动MCP服务器进程时执行的命令。'tsx' 是一个用于直接运行TypeScript文件的工具。
  • 'args': 传递给 'command' 的参数列表。这里指示 'tsx' 运行 'src/main.ts' 文件以启动服务器。
  • 'mcp_url': 服务器的公共MCP端点URL。如果服务器部署在云端,LLM客户端可以直接通过此URL进行远程连接。对于本地运行的实例,客户端可能需要配置为连接到本地地址和端口。

基本使用方法

一旦MCP服务器启动并被MCP客户端配置和连接,LLM就可以开始与其交互:

  • 调用工具查询赛事: LLM可以调用 'get_esports_events_advanced_request' 工具来获取符合特定条件的电竞赛事。例如,查询Rocket League的RLCS Worlds比赛,LLM客户端可以发送类似以下的JSON-RPC请求:

    {
      "jsonrpc": "2.0",
      "method": "tool_code/get_esports_events_advanced_request",
      "params": {
        "games": [
          {
            "id": "rocketleague",
            "opts": {
              "competitionRegex": "RLCS Worlds"
            }
          }
        ]
      },
      "id": 1
    }

    服务器将返回匹配的赛事列表。

  • 访问资源获取信息: LLM也可以通过访问资源URI来获取特定游戏的基础赛事信息,例如访问 'esports_events_by_game://rocketleague' 来获取Rocket League的赛事详情。

信息

分类

生产力应用