项目简介
这是 FantasyAI 项目中的一个组件,专门实现 Model Context Protocol (MCP) 服务器功能。它通过 MCP 协议暴露了一系列工具 (Tools),允许 LLM 客户端(如 Claude Desktop)查询和交互 ESPN 梦幻橄榄球联盟的数据,包括联盟信息、队伍花名册、球员统计数据和联盟排名等。
主要功能点
- ESPN 数据访问: 通过标准化接口获取 ESPN 梦幻橄榄球联盟的各种实时和历史数据。
- 工具集合: 提供了多个具体功能作为可调用的工具,例如:
- 认证: 安全地存储 ESPN 账号的认证信息('espn_s2' 和 'swid' cookie),用于访问私人联盟。
- 获取联盟信息: 查询特定联盟的基本设置、当前周数、队伍列表等。
- 获取队伍花名册: 查看指定队伍的当前球员列表、位置、真实球队、积分等。
- 获取队伍详细信息: 获取队伍的战绩、积分、交易、加减员等详细数据。
- 获取球员统计数据: 查询特定球员在联盟中的统计表现。
- 获取联盟排名: 查看联盟当前各队伍的排名情况。
- 获取对阵信息: 查看特定周的联盟对阵情况及比分。
- 退出/清除认证: 清除当前会话存储的认证信息。
- MCP 标准实现: 基于 'fastmcp' 库构建,遵循 MCP 标准,可与兼容的 LLM 客户端进行 JSON-RPC 通信。
安装步骤
- 克隆仓库: 将整个 FantasyAI 仓库克隆到本地。
git clone https://github.com/jdguggs10/The-Genius.git cd The-Genius - 进入 MCP 服务器目录:
cd espn-api-util - 安装依赖: 使用 'uv'(或 'pip' 等工具)安装所需的 Python 包,包括 'fastmcp' 和 'espn-api'。建议在虚拟环境中安装。
注意: '.env' 文件或环境变量(如 'OPENAI_API_KEY')与此 MCP 服务器组件无关,仅用于 FantasyAI 的主 FastAPI 后端。但如果您需要访问私人 ESPN 联盟,将需要通过服务器的 'authenticate' 工具提供 'espn_s2' 和 'swid' cookie 值。# 确保已安装 uv (pip install uv) uv pip install -e .
服务器配置 (面向 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 客户端就可以发现并调用此服务器提供的工具。
- 认证 (如需): 如果您需要访问私人 ESPN 联盟数据,首先让 LLM 调用 'authenticate' 工具,提供您的 'espn_s2' 和 'swid' cookie 值。您需要自行从 ESPN 网站获取这些 cookie。
- 给LLM的指令示例: "请使用我的认证信息连接ESPN梦幻橄榄球。我的 espn_s2 是 [您的 espn_s2 值],swid 是 [您的 swid 值]。"
- 查询数据: LLM 客户端可以通过调用相应的工具获取数据。
- 给LLM的指令示例:
- "请获取联盟ID为 '[您的联盟ID]' 的联盟信息。" (触发 'get_league_info' 工具)
- "在联盟ID为 '[您的联盟ID]' 中,队伍ID为 '[您的队伍ID]' 的花名册是什么?" (触发 'get_team_roster' 工具)
- "帕特里克·马霍姆斯在联盟ID为 '[您的联盟ID]' 中的统计数据是什么?" (触发 'get_player_stats' 工具)
- 给LLM的指令示例:
- LLM 解析结果: 服务器会将工具执行结果(通常是数据的字符串表示)返回给 LLM 客户端。LLM 客户端负责解析这些结果并以用户友好的方式呈现给您。
信息
分类
AI与计算