项目简介

这是 FantasyAI 项目中的一个组件,专门实现 Model Context Protocol (MCP) 服务器功能。它通过 MCP 协议暴露了一系列工具 (Tools),允许 LLM 客户端(如 Claude Desktop)查询和交互 ESPN 梦幻橄榄球联盟的数据,包括联盟信息、队伍花名册、球员统计数据和联盟排名等。

主要功能点

  • ESPN 数据访问: 通过标准化接口获取 ESPN 梦幻橄榄球联盟的各种实时和历史数据。
  • 工具集合: 提供了多个具体功能作为可调用的工具,例如:
    • 认证: 安全地存储 ESPN 账号的认证信息('espn_s2' 和 'swid' cookie),用于访问私人联盟。
    • 获取联盟信息: 查询特定联盟的基本设置、当前周数、队伍列表等。
    • 获取队伍花名册: 查看指定队伍的当前球员列表、位置、真实球队、积分等。
    • 获取队伍详细信息: 获取队伍的战绩、积分、交易、加减员等详细数据。
    • 获取球员统计数据: 查询特定球员在联盟中的统计表现。
    • 获取联盟排名: 查看联盟当前各队伍的排名情况。
    • 获取对阵信息: 查看特定周的联盟对阵情况及比分。
    • 退出/清除认证: 清除当前会话存储的认证信息。
  • MCP 标准实现: 基于 'fastmcp' 库构建,遵循 MCP 标准,可与兼容的 LLM 客户端进行 JSON-RPC 通信。

安装步骤

  1. 克隆仓库: 将整个 FantasyAI 仓库克隆到本地。
    git clone https://github.com/jdguggs10/The-Genius.git
    cd The-Genius
  2. 进入 MCP 服务器目录:
    cd espn-api-util
  3. 安装依赖: 使用 'uv'(或 'pip' 等工具)安装所需的 Python 包,包括 'fastmcp' 和 'espn-api'。建议在虚拟环境中安装。
    # 确保已安装 uv (pip install uv)
    uv pip install -e .
    注意: '.env' 文件或环境变量(如 'OPENAI_API_KEY')与此 MCP 服务器组件无关,仅用于 FantasyAI 的主 FastAPI 后端。但如果您需要访问私人 ESPN 联盟,将需要通过服务器的 'authenticate' 工具提供 'espn_s2' 和 'swid' cookie 值。

服务器配置 (面向 MCP 客户端)

此 MCP 服务器是为 LLM 客户端(如 Claude Desktop)提供服务的。要让客户端使用此服务器,您需要在客户端的 MCP 配置中添加以下信息。这通常是一个 JSON 格式的条目,指定如何启动服务器进程以及其标识信息:

  • 服务器名称 (name): 'espn-fantasy-football' (这是客户端用来识别和引用此服务器的名称)
  • 启动命令 (command): 'uv' (这是用来运行服务器的可执行程序,您需要确保 'uv' 已安装并在系统的 PATH 中,或者提供完整路径)
  • 命令参数 (args): '["run", "espn_fantasy_server.py"]' (这是传递给 'uv' 命令的参数,告诉它运行 'espn_fantasy_server.py' 脚本。请确保您在正确的目录(即克隆仓库后的 'espn-api-util' 目录)下执行客户端或配置客户端在正确的工作目录启动服务器。)
  • 描述 (description): 可选,用于在客户端界面显示,例如 '"Provides access to ESPN Fantasy Football data."'

配置示例(概念,实际配置格式取决于您的 MCP 客户端):

{
  "name": "espn-fantasy-football",
  "command": "uv",
  "args": ["run", "espn_fantasy_server.py"],
  "description": "通过 MCP 访问 ESPN 梦幻橄榄球数据。",
  // 可能需要其他配置,如工作目录等,请查阅您的 MCP 客户端文档。
}

基本使用方法

一旦服务器按照上述配置被您的 MCP 客户端成功启动和连接,您的 LLM 客户端就可以发现并调用此服务器提供的工具。

  1. 认证 (如需): 如果您需要访问私人 ESPN 联盟数据,首先让 LLM 调用 'authenticate' 工具,提供您的 'espn_s2' 和 'swid' cookie 值。您需要自行从 ESPN 网站获取这些 cookie。
    • 给LLM的指令示例: "请使用我的认证信息连接ESPN梦幻橄榄球。我的 espn_s2 是 [您的 espn_s2 值],swid 是 [您的 swid 值]。"
  2. 查询数据: LLM 客户端可以通过调用相应的工具获取数据。
    • 给LLM的指令示例:
      • "请获取联盟ID为 '[您的联盟ID]' 的联盟信息。" (触发 'get_league_info' 工具)
      • "在联盟ID为 '[您的联盟ID]' 中,队伍ID为 '[您的队伍ID]' 的花名册是什么?" (触发 'get_team_roster' 工具)
      • "帕特里克·马霍姆斯在联盟ID为 '[您的联盟ID]' 中的统计数据是什么?" (触发 'get_player_stats' 工具)
  3. LLM 解析结果: 服务器会将工具执行结果(通常是数据的字符串表示)返回给 LLM 客户端。LLM 客户端负责解析这些结果并以用户友好的方式呈现给您。

信息

分类

AI与计算